Páginas

terça-feira, 20 de novembro de 2012

[Linux] - SMTP Relay com Postfix para Gmail e Hotmail


Bom pessoal, neste post vou abordar a instalação e configuração de um SMTP Relay no Postfix utilizando como servidores de e-mail, Gmail e o Hotmail. O Postfix é um dos servidores de e-mail mais utilizado no mundo e o seu suporte e utilização são estáveis. Porque estou abordando este assunto? é pelo seguinte cenário. Existem algumas aplicações que não possuem suporte nativo para envio de e-mail com tls e ssl. Nisso utilizar um servidor de SMTP Relay para enviar as mensagens para ele facilita nosso gerenciamento e  com o Postfix isso se torna viável pois ele irá agir simplesmente encaminhando as mensagens que forem enviadas para ele, conforme configurado.Vamos ao hands-on.

1. Instalação do Postfix no Debian 6

# apt-get install postfix libsasl2-2 ca-certificates libsasl2-modules



2. Configurando o Postfix

Inicialmente o postfix vêm com suas configurações zeradas, nisso você terá que criar o arquivo /etc/postfix/main.cf com as configurações do servidor de e-mail que irá utilizar.

Configuração do main.cf para Gmail:

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_use_tls = yes


Configuração do main.cf para Hotmail:

relayhost = [smtp.live.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_use_tls = yes


O próximo passo é definirmos a configuração de usuário e senha no Gmail ou Hotmail. Primeiramente teremos que criar o arquivo /etc/postfix/sasl_passwd e depois configurar de acordo com o servidor de e-mail.

# touch /etc/postfix/sasl_passwd


Editando o arquivo /etc/postfix/sasl_passwd , vamos configurar o mesmo para utilizar o Gmail ou Hotmail :

Gmail:
[smtp.gmail.com]:587 user.name@gmail.com:password

Hotmail:
[smtp.live.com]:587 user.name@hotmail.com:password

Este arquivo /etc/postfix/sasl_passwd deve ter acesso restrito no Linux então precisamos alterar suas permissões e depois gerar um arquivo .db que o Postfix irá ler.

# chmod 400 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd


Pronto agora que seu Postfix está configurado, vamos fazer o Postfix reler as configurações para utilizamos ele como SMTP Relay.

# /etc/init.d/postfix reload


Agora é só testarmos e verificar se está tudo funcionando. Para debugar e verificar o funcionamento do Postfix verique o arquivo de log /var/log/mail.log , segue abaixo um método para debugar este arquivo:

# tail -f /var/log/mail.log


Bom pessoal, para facilitar a configuração vou disponibilizar as configurações do Gmail e Hotmail para download, segue abaixo:

Gmail:

Hotmail:

Também estarei disponibilizando um Cliente de E-mail simplificado para windows para efetuar os testes, segue abaixo:

SMTP Tester:


Bom pessoal, espero que o post possa ter ajudado quem esteja procurando uma solução de SMTP Relay para Plataforma Linux de forma fácil e prática. Qualquer dúvida sobre o post, favor comentar para que possa ajudar. Que a Graça e Paz estejam com todos.

17 comentários:

  1. Emerson,

    Fiz o PostFix com conta da msn.com e gmail.com funcionaram perfeitamente, porém utilizando um ferramenta comum como GLPI com email´s do Live Edu da Microsoft no caso o dominio utilizado é fsl.edu.br, não consigo enviar email´s, faço teste com aquele testador funciona bacana, já com email live edu não no GLPI ou qualquer outra ferramenta PHP Mailer acredito, testei no moodle também não vai, alguma dica ?

    ResponderExcluir
  2. Bruno,

    Você tem uma conta de testes do Live Edu para que possa estar te ajudando na configuração do Postfix? Estou te sugerindo isso para poder debuggar o que está acontecendo e pode identificar aonde está o problema. Encaminhe os dados no meu e-mail emerson.fender@gmail.com , agradeço a compreensão.

    ResponderExcluir
  3. muito bom o post, facilimo de mais parabens

    ResponderExcluir
  4. Meu amigo, estou com problemas. Fiz Passo a Passo da forma que foi mostrada, porem nao esta enviando.

    Utilizo o Sistema GLPI para HelpDesk aqui da empresa, quando faço o teste no mesmo, ele diz que foi enviado o email para o administrador, so que na verdade nenhum email é enviado.

    ResponderExcluir
  5. Olá, tudo funcionou certinho!
    Existe a possibilidade de "mascarar" o remetente pra ficar diferente do usuário que se autentica no Gmail?
    Ou seja, não quero que os destinatários recebam os e-mails que tem como remetente o usuario que está no arquivo /etc/postfix/sasl_passwd.

    Att,

    ResponderExcluir
  6. Nota mil... Parabéns!!!

    Sucesso Gaudencio...

    ResponderExcluir
  7. Belo Post!
    Estava a Procura disto a um tempo, muito bom se encaixa perfeitamente as minha necessidades.
    Parabéns Amigo.

    ResponderExcluir
    Respostas
    1. Edvaldo,
      Obrigado por visitar o Blog, que bom ajudou.
      Grande Abraço.

      Excluir
  8. Boa Tarde, estou tendo o problema de ter que enviar email de minha aplicação para os usuários, só que são + ou - 1000 emails por dia, utilizo o gmail para serviço de email e ele limita há 250 por dia, como configuro um servidor postfix só para minha aplicação autenticar e enviar os emails por ele ?

    ResponderExcluir
    Respostas
    1. Boa tarde Pedro,
      Neste post, está explicando como faz para implementar a instalação e configuração do postfix para autenticar com gmail e outlook, nisso peço que seja um pouco mais específico naquilo que precisa, para que possa te ajudar. Outra pergunta é qual a linguagem que sua aplicação foi desenvolvida? para que possa te ajudar em fonte para utilizar como exemplo.

      Att,
      Emerson

      Excluir
  9. Boa tarde Emerson! Por favor, pode me ajudar com minha instalação? Está dando erro e não consegui fazer funcionar

    ResponderExcluir
    Respostas
    1. Boa Tarde William,
      Em qual etapa está dando problema? Instalação, Configuração ? Pode especificar para que possa te ajudar melhor. Se tem algum log de erro, Pode informar o log aqui nos comentários para auxilia-lo na resolução do problema.

      Att,
      Emerson

      Excluir
    2. Erro Mensagem: Falha ao enviar email. || Erro Stack Trace: em System.Net.Mail.SmtpClient.Send(MailMessage message)
      em TestaSmtp.Form1.btnTestar_Click(Object sender, EventArgs e)

      Excluir
    3. segue como está meu main.cf:

      # See /usr/share/postfix/main.cf.dist for a commented, more complete version


      # Debian specific: Specifying a file name will cause the first
      # line of that file to be used as the name. The Debian default
      # is /etc/mailname.
      #myorigin = /etc/mailname

      smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
      biff = no

      # appending .domain is the MUA's job.
      append_dot_mydomain = no

      # Uncomment the next line to generate "delayed mail" warnings
      #delay_warning_time = 4h

      readme_directory = no

      # TLS parameters
      smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
      smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
      smtpd_use_tls=yes
      smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
      smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

      # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
      # information on enabling SSL in the smtp client.

      smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
      myhostname = JKSMTPRELAY01.grupoest____al.com.br
      mydomain = grupo____ural.com.br
      alias_maps = hash:/etc/aliases
      alias_database = hash:/etc/aliases
      myorigin = /etc/mailname
      mydestination = grupo____l.com.br, JKSMTPRELAY01, localhost.localdomain, localhost
      relayhost = [pod51028.outlook.com]:587
      mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.1.0.0/24
      mailbox_command = procmail -a "$EXTENSION"
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = loopback-only
      inet_protocols = all

      smtpd_sasl_local_domain =
      smtpd_sasl_auth_enable = yes
      smtpd_sasl_security_options = noanonymous
      broken_sasl_auth_clients = yes
      smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
      smtpd_tls_auth_only = no


      smtp_use_tls = yes
      smtp_tls_note_starttls_offer = yes
      smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
      smtpd_tls_loglevel = 1
      smtpd_tls_received_header = yes
      smtpd_tls_session_cache_timeout = 3600s
      #smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
      #smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
      #smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
      #smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
      tls_random_source = dev:/dev/urandom

      OBS: COLOQUEI ALGUNS '_' PRA CORTAR PARTE DO TEXTO OK....

      Excluir
  10. Boa noite,
    Gostaria muito de ter uma ajuda vossa, não tem muito haver com o que foi feito em cima.
    Acontece que eu não consigo instalar o postfix no debian, o mesmo da a seguinte mensagem:
    -----------------------------------------------------------------------------------------
    O apcote postfix não está disponivl , mas é refenciado por outro pacote.
    Isto pode significar que o pacote está falatando, ficou obsolento ou está disponível somente a partir de outra fonte

    E: 0 pacote 'postfix' não tem candidato para instalação

    --------------------------------------------------------------------------------------

    Agradeço desde já a vossa ajuda.

    ResponderExcluir