domingo, 5 de fevereiro de 2012

GMail como Smarthost do postfix

Usar uma conta de GMail para enviar e-mail a partir de uma máquina com o postfix

Muitas aplicações web dependem do serviço de e-mail para comunicar com os utilizadores (e administrador). Tipicamente um servidor web contém as aplicações necessárias para que acumule a funcionalidade de servidor de e-mail, mas a proliferação de SPAM fez com que se criassem listas de servidores de mail confiáveis e os principais servidores de e-mail (GMail, HotMail, Sapo, etc) não aceitam mensagens de qualquer servidor.
Para ultrapassar esta limitação podemos tentar que o nosso servidor de e-mail seja aceita na restrita lista de servidores confiáveis, mas há alternativas mais simples.
As próprias aplicações (como por exemplo o Moodle ou o Joomla) possuem configurações internas próprias que lhes permitem usar um servidor de e-mail externo, deixando de depender do servidor interno da máquina onde estão alojados.
Mas podemos também configurar a nossa máquina webserver para funcionar como um 'satélite' de um servidor de e-mail externo.

Vamos então configurar o postfix para funcionar como sistema satélite do GMail, usando uma conta de GMail para enviar todo o e-mail do sistema.
Convém utilizar uma conta de GMail apenas para este fim. É necessário frisar que as contas de GMail gratuitas têm um limite de 500 mensagens por dia. As contas pagas ou associadas ao serviço Google Apps for Education não têm esta limitação.

Se o postfix não estiver instalado fazer (em Debian, como root):

apt-get install postfix

Se o postfix já estiver instalado, fazer a reconfiguração com:

dpkg-reconfigure postfix

O postfix faz uma série de questões:
  1. Type of mail configuration: satellite system
  2. System mail name: Nome do domínio
  3. SMTP relay host: smtp.gmail.com
  4. Root and postmaster mail recipient: deixar em branco
  5. Other destinations: deixar em branco
  6. Synchronous updates: é indiferente, não influencia a entrega
  7. Local networks: deixar o pré-definido
  8. Mailbox size: é indiferente, não influencia a entrega
  9. Local address extension: + (é o valor pré-definido)
  10. IP to listen: normalmente basta IPv4
De seguida precisamos editar o ficheiro de configuração do postfix:

sudo nano /etc/postfix/main.cf

E acrescentar as seguintes linhas:

mydomain = exemplo.org
myhostname = server1.exemplo.org
myorigin = $myhostname
# inserir aqui os domínios para os quais vai ser
# esta máquina a gerir o mail

mydestination = localhost, nome_de_dominio

relayhost=smtp.gmail.com:587
smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_auth_enable = yes

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

Agora é preciso criar o ficheiro que vai conter os dados de acesso à conta do GMail:

sudo nano /etc/postfix/sasl_passwd

E acrescentamos apenas uma linha:

smtp.gmail.com:587 USERNAME@gmail.com:PASSWORD

É claro que USERNAME e PASSWORD devem ser substituídos pelos valores reais do username e password da conta de GMail.

Este comando compila o ficheiro de texto com a password numa base de dados mais eficiente:

postmap /etc/postfix/sasl_passwd

Para assegurar que apenas o utilizador postfix tem acesso ao ficheiro com a password fazemos:

chmod 600 /etc/postfix/sasl_passwd*
chown postfix.postfix /etc/postfix/sasl_passwd*

E reiniciamos o daemon:

/etc/init.d/postfix restart

A maneira mais fácil de testar a configuração é enviar um e-mail de teste com o sendmail:

sendmail teste@exemplo.org
Mensagem de teste
.

Se tudo correr bem o e-mail é enviado imediatamente.
Se não for enviado o e-mail a análise dos ficheiros /var/log/mail.* pode dar algumas informações importantes

Os aliases definem-se em /etc/aliases
Não esquecer de correr newalias depois de mudar o ficheiro.

Referências
http://braiden.org/?p=15
https://www.zulius.com/how-to/set-up-postfix-with-a-remote-smtp-relay-host/
http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/test.html

1 comentário:

  1. O servidor dá um erro relacionado com o certificado do GMail, mas aparentemente consegue enviar os mails na mesma...

    ResponderEliminar