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

62

É possível configurar o correio do sistema em uma caixa linux para ser enviado através de 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" [email protected]

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

Não estou procurando "uma maneira de enviar e-mails do gmail pela linha de comando", mas 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 do endereço).

    
por cwd 20.04.2012 / 23:46

6 respostas

64

Eu achei o sSMTP muito simples de usar.

Em sistemas baseados em 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 o seu Gmail para enviar e-mails:

# root is the person who gets all mail for userids < 1000
[email protected]

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

Observação : verifique se o comando "mail" está presente em seu sistema. O pacote mailutils deve fornecer este nos sistemas baseados em Debian.

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

    
por 22.04.2012 / 16:27
20

Para postfix :

  • Adicione o IP da sua retransmissão de email externa a /etc/hosts e adicione um alias mailrelay a ele.
  • 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
    
  • Edite o /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Converter em formato hash

postmap /etc/postfix/smtp_auth

Não é necessário dizer que apenas o root deve poder ler isto ... chmod u=r,og=-

    
por 21.04.2012 / 22:16
8

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

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v [email protected]

Nada precisa ser instalado, desde que seu servidor smtp permita que você envie e-mails não autenticados.

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

    
por 02.07.2015 / 18:58
6

Meu favorito é o e-mail (). É realmente simples, sem necessidade de configuração complexa, sem necessidade de dependências. E você pode especificar o argumento smtp-server via linha de comando, o que significa que é mais adequado para o script. A única pena é que a maioria das distribuições Linux não contém esta ferramenta, então você precisa compilá-la você mesmo.

Citações de email projet no github

Q: What is 'email' ?

A: 'email' is a program I designed that will send email via the command line to remote smtp servers or use 'sendmail' internally, and fully interact with GNUPG to encrypt and sign your e-mails, so you decide to do so... You can get GNUPG at: http://www.gnupg.org

Agradecemos cygwin por me informar sobre este útil e-mail cliente.

Compile e instale

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

Opções de linha de comando de 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 de amostra

Correio simples com o servidor SMTP especificado

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr [email protected] -smtp-server smtp.domain.com -smtp-port 25 [email protected] [email protected]

correio HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" [email protected]

Anexo (s)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach [email protected]
    
por 21.08.2012 / 09:35
2

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

Para enviar e-mails enviados por um servidor do Gmail, você precisará configurar o TLS suporte para o Exim , que não é trivial. Este Howto dá algumas explicações e aqui , um link com mais explicações específicas para o Gmail. Você deve se permitir várias horas para que isso funcione. Sugiro começar enviando um e-mail da sua caixa para um servidor SMTP habilitado para TLS para o qual você tenha acesso raiz para poder depurar sua configuração do Exim TLS dos dois lados antes de tentar enviar um servidor do Gmail. Como a comunicação é criptografada, você não poderá usar ferramentas como o tcpdump para analisar o protocolo na linha.

    
por 21.04.2012 / 20:19
0

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

A configuração de SMTP nas etapas do Linux pode ser encontrada aqui: link

Exemplos de comandos de email podem ser encontrados aqui: link

    
por 26.12.2016 / 16:45