Posso configurar o correio do sistema para usar um servidor SMTP externo?


72

É possível configurar o correio do sistema em uma caixa Linux para ser enviado por um servidor smtp diferente - talvez até com autenticação? Se sim, como faço isso?

Se isso não estiver claro, vamos dar um exemplo. Se eu estiver na linha de comando e digite:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

é possível enviar isso através de um servidor SMTP externo, como o G-mail?

Não estou procurando "uma maneira de enviar email do gmail a partir da linha de comando", mas sim uma opção para configurar todo o sistema para usar um servidor SMTP específico, ou possivelmente uma conta em um servidor SMTP (talvez substituindo o endereço de origem) .


É a maneira como a maioria das máquinas costumava ser configurada. Você tem algum MTA em mente? Caso contrário (isso inclui "o que é um MTA?"), Que distribuição você está executando?
Gilles 'SO- stop be evil'

Estou no Ubuntu 10.04, encontrei este artigo sobre a configuração do ssmtp, parece que pode funcionar. você pode elaborar mais sobre como a maioria das máquinas é configurada?
Cwd

Respostas:


71

Achei o sSMTP muito simples de usar.

Em sistemas baseados no Debian:

apt-get install ssmtp

Em seguida, edite o arquivo de configuração em /etc/ssmtp/ssmtp.conf

Uma configuração de exemplo para usar seu gmail para enviar e-mails:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Nota : Verifique se o comando "mail" está presente no seu sistema. O pacote mailutils deve fornecer este em sistemas baseados no Debian.

Atualização : Existem pessoas (e relatórios de erros para diferentes distribuições Linux) relatando que o sSMTP não aceitará senhas com um caractere 'espaço' ou '#'. Se o sSMTP não estiver funcionando para você, este pode ser o caso.


2
como uma observação para outras pessoas, talvez seja necessário instalar o ssmtp e depois o mailutils. eu acho que mailutils configura o comando mail e links simbólicos para ssmtp assim você pode usar regular mailsintaxe :)
cwd

11
@cwd Acabei de testar no Ubuntu 13.04. Não precisei instalar o mailutilspacote (e ele não é instalado automaticamente). ssmtptrabalhado fora da caixa.
Pijusn

Eu apenas usei isso com sucesso no Debian em um BeagleBone Black e tive que instalar o mailutils primeiro.
Dave Nelson

No Kubuntu 14.04, foi necessário instalar o mailutils após o ssmtp. No entanto, funcionou na primeira tentativa.
MariusMatutiae

6
O ssmtp NÃO verifica o certificado SSL / TLS do servidor remoto nas versões atuais do debian, ubuntu e redhat e também NÃO verifica o nome do host do certificado. Esse é um problema importante, pois efetivamente torna a criptografia inútil e sua senha está sendo transmitida como texto sem formatação e qualquer pessoa pode detectá-la. O ssmtp não teve desenvolvimento ativo desde 2009. Portanto, se você se preocupa com a segurança da conta de email usada para os emails de saída de seus servidores, NÃO use ssmtp, mas use o postfix (ou qualquer outra coisa): unix.stackexchange.com/ a / 118101/72087
Zulakis

23

Para postfix :

  • Adicione o IP para sua retransmissão de email externa /etc/hostse adicione um alias mailrelay a ela.
  • Modifique a configuração do postfix:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • Editar /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Converter em formato hash

postmap /etc/postfix/smtp_auth

Não é preciso dizer que apenas o root deve poder ler isso ... chmod u=r,og=-


10

O mailx suporta a configuração do servidor smtp na CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

Nada precisa ser instalado, desde que o servidor smtp permita o envio de correio não autenticado.

Não existe uma resposta que defina o servidor smtp para todos os bits de software que você possa ter na sua caixa Linux. Cada cliente de email pode configurar um servidor SMTP.


Certifique-se de colocar -S var=val diante do destinatário.
Benoit Duffez

O que fazer se o correio não autenticado não for permitido? Eu obtive o cliente não foi autenticado para enviar e-mail anônimo durante MAIL,
Mian Asbat Ahmad


7

O meu favorito é o cliente de email ( github ). É realmente simples, sem configuração complexa necessária, sem dependências necessárias. E você pode especificar o argumento smtp-server via linha de comando, o que significa que é mais adequado para scripts. A única pena é que a maioria das distribuições Linux não contém essa ferramenta, então você precisa compilá-la.

Citações de email projet no github

P: O que é 'email'?

R: 'email' é um programa que eu projetei que enviará email via linha de comando para servidores smtp remotos ou usará 'sendmail' internamente, além de interagir totalmente com o GNUPG para criptografar e assinar seus emails, então você decide fazê-lo. .. Você pode obter o GNUPG em: http://www.gnupg.org

Agradeço à cygwin por me informar sobre este útil cliente de email .

Compilar e instalar

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

Opções de linha de comando do email

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Uso da amostra

Correio simples com o servidor SMTP especificado

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

Correio HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

Anexo (s)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

Configure um servidor SMTP local do exim seguindo as instruções nesta página, mas escolha a opção "email enviado por smarthost; no local mail" na primeira tela da configuração do Exim. Isso configurará um servidor SMTP na sua caixa que poderá receber emails dos comandos "mail" ou "mailx" e encaminhará todas as mensagens para o smarthost (um servidor do Gmail no seu caso) para entrega.

Para enviar email de saída por meio de um servidor do Gmail, você precisará configurar o suporte TLS para o Exim , o que não é trivial. Este tutorial fornece algumas explicações e aqui está um link com mais explicações específicas para o Gmail. Você deve permitir várias horas para que isso funcione. Sugiro começar enviando email da sua caixa para um servidor SMTP habilitado para TLS ao qual você tenha acesso root, para que você possa depurar sua configuração do Exim TLS de ambos os lados antes de tentar enviar por um servidor do Gmail. Como a comunicação é criptografada, você não poderá usar ferramentas como o tcpdump para analisar o protocolo na linha.


1

Se você tiver conectividade externa do servidor smtp com o host, poderá configurar o smtp no host e enviar e-mails.

A configuração do smtp nas etapas do linux pode ser encontrada aqui: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Exemplos de comandos de email podem ser encontrados aqui: http://kerneltalks.com/commands/examples-send-email-through-terminal/


As respostas devem incluir detalhes suficientes para serem independentes. Tendo links com informações mais completas é bom, mas pelo menos uma parte do material ligado devem ser citados na resposta para que ele possa ser útil após conjuntos de ligação podridão em.
user4556274
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.