Como configurar o exim4 para enviar email por meio de um servidor de email ssl smtp protegido por senha?

19

Gostaria que meus cronjobs pudessem enviar e-mails do meu computador doméstico. Meus servidores configuram o exim4 assim:

dc_eximconfig_configtype='internet'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'

No entanto, em casa, meu provedor de serviços de Internet bloqueia o correio enviado diretamente por um firewall. Eu tenho um servidor SSL SMTP protegido por senha, no qual eu poderia encaminhar o correio, mas não consegui descobrir como configurar o exim4 para fazer isso funcionar. Espero que alguém possa me dar um exemplo de configuração em que eu possa conectar o nome do host, o nome do usuário, a senha e "usar ssl" para que ele envie emails por meio de um único servidor smtp.

Stephen Ostermiller
fonte

Respostas:

25

Finalmente encontrei um conjunto detalhado de instruções de Tony Scelfo que realmente funcionam . Parece que você precisa usar o TLS (Transport Layer Security) na porta 587. Não recebi o SSL SMTP para funcionar.

Primeiro, execute sudo dpkg-reconfigure exim4-confige use estas opções de configuração:

  • Tipo geral de configuração de email: email enviado por smarthost; recebido via SMTP ou fetchmail
  • Nome do correio do sistema: <seu hostname>
  • Endereço IP para escutar as conexões SMTP recebidas: 127.0.0.1
  • Outros destinos para os quais o email é aceito: <seu hostname>
  • Máquinas para retransmitir correio para: <deixe em branco>
  • Endereço IP ou nome do host do smarthost de saída: mail.example.com::587
  • Ocultar o nome do correio local no correio de saída?
    • Sim - parece que todos os e-mails enviados são provenientes da sua conta do Gmail
    • Não - o email enviado com um cabeçalho de nome de remetente válido manterá o nome do remetente
  • Manter o número mínimo de consultas DNS (discagem por demanda)? Não
  • Método de entrega para correio local: <escolha o que você preferir>
  • Dividir arquivo de configuração em arquivos pequenos? Sim (você precisa editar um dos arquivos a seguir)

Em seguida, execute sudo vi /etc/exim4/passwd.cliente adicione as seguintes linhas ao seu host de e-mail e todos os aliases que ele possui (encontrados nslookup). Substitua <endereço de email> e <senha> pela conta pela qual você deseja encaminhar o email):

mail.example.com:<email address>:<password>
mail.yourhosting.provider:<email address>:<password>

Depois de editar o passwd.clientarquivo, execute o sudo update-exim4.confque integrará suas alterações na configuração do Exim4.

Execute sudo /etc/init.d/exim4 restarte verifique se o serviço para e inicia corretamente. Se o serviço não puder reiniciar, provavelmente ocorreu algo errado quando você editou o passwd.clientarquivo.

Se o Exim4 for reiniciado, vá em frente e corra sudo tail -f /var/log/exim4/mainlogpara observar os logs de correio. Em uma janela diferente, envie um email do seu sistema e verifique se há um registro R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com ... X=TLS-1.0:RSA_ARCFOUR_MD5:16nele. Os X=TLSmeios que o email está sendo enviado com segurança da camada de transporte, que é o que você quer.

Stephen Ostermiller
fonte
1
Não há necessidade de "dividir o arquivo de configuração em arquivos pequenos", pois /etc/exim4/passwd.clienté um arquivo separado de qualquer maneira.
Executar CMD
Observe que especificar a porta SMTP pode não funcionar com todos os servidores de email. Mas exim4usará o TLS de qualquer maneira com a porta SMTP padrão se o servidor de correio oferecer. Ele pode ser verificado olhando as X=informações em/var/log/exim4/mainlog
Execute o CMD
Por favor, aponte-me para a direção correta. Não quero duplicar uma pergunta. E se eu quiser que todos os usuários definam suas próprias senhas stmp nos diretórios HOME? O exim4 procurará vários passwd.client? Tx
Dr Beco
Isso soa como uma questão nova para mim
Stephen Ostermiller
@DrBeco Se você tem uma pergunta específica que não é específica para esta pergunta ou resposta, faça -a como uma pergunta .
Thomas Ward
5

Se o seu ISP exigir autenticação, defina dc_smarthost como o nome do host do servidor de email e a combinação de portas que seu ISP usa e dc_eximconfig_configtype como "smarthost" da seguinte maneira:

dc_eximconfig_configtype='smarthost'
dc_smarthost='mail.example.com::587'

Em seguida, você pode adicionar suas credenciais da seguinte /etc/exim4/passwd.clientmaneira:

mail.example.com:username:password

Então, qualquer email enviado através do servidor exim4 será roteado através deste host de email.

dobey
fonte
10
No update-exim4.conf, coloquei dois pontos para a linha smarthost, como em dc_smarthost='mail.example.com::587'e fez toda a diferença! Finalmente começou a enviar e-mails.
Marcos
+1 Este é um erro muito comum que já vi em muitos tutoriais.
TwystO
4

Isso funciona muito bem para mim. Meu ISP usa a porta 25 e dc_smarthost='myisp.mail.server:25' depois de alterar esses arquivos e emitir comandos:

  1. update-exim4.conf
  2. /etc/init.d/exim4 restart

Depois que eu fiz um teste para enviar um email através do exim4 classic sample como:

echo "content of mail body with pt-br chars ação avião língua é essa em 1609." | mail -s "Confirmar 16DOM" my-user-in-isp@my-domain-url

E estes ok fluxo de caixa de entrada my-userno my-domain-url.

gsavix
fonte