Vamos lá!
1 - Instalando o sSMTP:
sudo apt-get install ssmtp
2 - Configurando o STMP do Gmail e suas credenciais:
sudo nano /etc/ssmtp/ssmtp.conf
O arquivo ssmtp.conf ficou assim:
# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. # root=postmaster # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com # mailhub=mail # Where will the mail seem to come from? # rewriteDomain= # The full hostname #hostname= # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address #FromLineOverride=YES hostname=localhost Root=usuario@gmail.com Mailhub=smtp.gmail.com:465 RewriteDomain=gmail.com AuthUser=usuario #(sem o @gmail.com) AuthPass=sua_senha FromLineOverride=Yes UseTLS=Yes
OBS. Não esqueça de colocar os seus dados nos parâmetros "Root", "AuthUser" e "AuthPass". O resto fica como no exemplo.
3 - Instalando o cliente de envio de e-mail para que você possa enviar mensagens pelo PHP, via scripts bash, diretamente no console, etc.
sudo apt-get install heirloom-mailx
4 - Testando o envio! Para isso, execute no console:
echo "Teste de envio de e-mail pelo gmail com sSMTP" | mail -s "Teste de e-mail" destinatario@seudominio.com
OBS. Não esqueça de trocar "destinatario@seudominio.com" pelo seu e-mail.
E se o e-mail de teste não chegar ?
Bom, é aqui que perdi 2 dias da minha vida pra fazer isso funcionar.É problema de REDE ou de CONFIGURAÇÃO ?
Para isso, use o telnet :# telnet smtp.gmail.com 465 Trying 173.194.212.108... Trying 173.194.212.109... Trying 2607:f8b0:400c:c11::6d... telnet: Unable to connect to remote host: Network is unreachable
Se a resposta for parecida com o quadro acima, seu problema é de rede.
- Verifique se o seu provedor tem algum tipo de bloqueio anti spam para envio de e-mails por SMTP (No meu caso utilizo DigitalOcean e eles bloqueiam por padrão, tive que abrir um ticket no suporte para que pudessem habilitar. Perdi horas por conta disso achando que eu tinha configurado algo errado).
- Verifique se existe alguma regra de firewall impedindo que o seu servidor se conecte no SMTP do Gmail na porta configurada (no caso deste post, a porta utilizada foi a 465). Para isso, dê uma olhada nas regras do IPTABLES ou UFW. Se usa provedores que tem uma camada de segurança extra como a Amazon Web Services por exemplo, veja no painel de controle na parte de segurança se tem algo impedindo o acesso.
Resolvidas essas questões, o que se espera do telnet é algo assim:
# telnet smtp.gmail.com 465 Trying 173.194.212.108... Connected to gmail-smtp-msa.l.google.com. Escape character is '^]'.
Agora repita o teste de envio relatado no passo 4 acima. Se ainda assim não receber o e-mail, seu problema é de configuração ou de prevenção de invasão do Google.
Primeira coisa, veja no log do seu servidor os detalhes das tentativas de envio:
# tail -n 100 /var/log/mail.log
Se o resultado for algo como abaixo, seu problema é usuário ou senha errados (confira bem), ou algum dispositivo de prevenção de invasão do Google:
Nov 7 01:33:34 lion sSMTP[28075]: Creating SSL connection to host Nov 7 01:33:35 lion sSMTP[28075]: SSL connection using RSA_ARCFOUR_SHA1 Nov 7 01:33:35 lion sSMTP[28075]: Authorization failed (534 5.7.14 https://support.google.com/mail/answer/78754 y194sm2932906vkd.13 - gsmtp)
Se tem certeza que seu usário e senha estão corretos, verique se o Gmail não te mandou algum e-mail lhe informando uma possível invasão de conta, como o seguinte:
Ainda sobre o Google, mesmo que não receba o e-mail acima, certifique-se de:
- Habilitar o acesso por aplicações "menos seguras" (infelizmente é esse o nome mesmo) - https://www.google.com/settings/security/lesssecureapps
- Conferir o check list do próprio Google para erro de senha - https://support.google.com/accounts/answer/6009563
Para proteger sua conta, o Google pode dificultar o login à sua conta se suspeitar que ele não esteja sendo feito por você. Por exemplo, o Google pode solicitar informações adicionais, além do seu nome de usuário e sua senha, se você estiver viajando ou se tentar fazer login na sua conta em um novo dispositivo.Sendo assim, acesse o link https://g.co/allowaccess e caso esteja bloqueado, libere o acesso a novos dispositivos para sua conta. Esse era o meu problema, e depois de liberado, fiz o teste de envio novamente e veio a mensagem esperada no log:
Nov 7 01:50:30 server sSMTP[28123]: Creating SSL connection to host Nov 7 01:50:30 server sSMTP[28123]: SSL connection using RSA_ARCFOUR_SHA1 Nov 7 01:50:33 server sSMTP[28123]: Sent mail for destinatario@gmail.com (221 2.0.0 closing connection p138sm2945424vkd.25 - gsmtp) uid=0 username=root outbytes=603
E é claro, recebi o e-mail de teste na minha caixa de entrada.
Uma última observação: Nas minhas pesquisas, identifiquei que algumas pessoas tiveram problemas com os certificados para acesso via SSL.
Para isso, algumas propriedades adicionais foram utilizadas no arquivo ssmt.conf, sendo:
UseStarTTLS=Yes TLS_CA_File=/etc/ssl/certs/ca-certificates.crt
Bom, espero ter ajudado. Se tiver algo a acrescenter, comente o post.
Nenhum comentário:
Postar um comentário
Comentários sobre assuntos não relacionados ao objetivo deste blog serão removidos.