Fazendo relay com Postfix em servidores smtp autenticados

Por Luiz Antonio Cassetari Vieira Filho

Uma técnica interessante para acelerar o envio de e-mails em redes de pequeno porte, ou quando se tem algum servidor caseiro que envie mensagens de e-mail esporadicamente, é usar um servidor smtp apenas para o relay das mensagens de saída. Entretanto é muito "estressante" para o servidor local enviar as mensagens diretamente ao destinatário que pode estar a muitos roteadores de distancia, alem de muitos provedores estarem bloqueando ips de adsl e modems para o envio de mensagems, com a intenção de previnir spams. Para isso pode se configurar o postfix para que ele faça relay diretamente no smtp do seu provedor de internet, assim as mensagens irão chegar no postfix, e ele os enviará diretamente para o smtp do seu provedor, que se encarregará da entrega final. No entanto esbarramos em um problema.

Alguns provedores estão usando senhas no smtp, o que inviabiliza a simples configuração de um relay no postfix. Esse artigo tem por intenção, simplificar as configurações necessárias no postfix para implementar essa situação. Usaremos o conectiva linux 9 como distribuição, mas não deve ser muito dificil implementar isso em outra distribuição. O artigo presume que o postfix será utilizado única e exclusivamente para o relay de e-mails, e não terá nenhuma conta valida para o recebimento, mas isso pode ser facilmente adaptado, caso a situação contraria exista. O qmail também pode ser usado com a finalidade de fazer relay em um smtp autenticado. Mas isso já é assunto para um outro artigo ;)

1: Se o postfix ainda não estiver instalado, instale ele com o comando

        # apt-get install postfix

2: Instale a biblioteca sasl2, necessário para o funcionamento da autenticação. Provavelmente já está instalado, mas...

        # apt-get install sasl2

3: Instale o pacote sasl2-plug-plain necessário para autenticação.

        # apt-get install sasl2-plug-plain

4: Crie um arquivo com a senha do servidor smtp, com o formato

        servidor_smtp login:senha
Exemplo:
        # echo "smtp.terra.com.br usuario:senhalegal" > /etc/postfix/sasl_passwd

5: Como esse arquivo mantém a senha em texto puro, é bom deixar ele seguro, mudando suas permissões.

        # chown root.root /etc/postfix/sasl_passwd
        # chmod 600 /etc/postfix/sasl_passwd

6: Crie o banco de dados para o postfix

        # postmap hash:/etc/postfix/sasl_passwd

7: Edite o /etc/postfix/main.cf, alterando/criando/mudando os paremetros para:

        smtp_sasl_auth_enable = yes
        smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
        smtp_sasl_security_options =

8: Adicione o servidor do seu provedor no /etc/postfix/main.cf, com o parametro

        relayhost = servidor_smtp

9: Inicie ou "reloadeie" o servidor postfix

        # service postfix reload

10: Teste o servidor mandando um e-mail, quando o e-mail chegar veja o source dele. Seu servidor deve aparecer nele ;) Dica 1: O tail é seu amigo, use-o.

        # tail -f /var/log/maillog

Dica 2: Se por algum motivo muito estranho, o servidor recusar sua senha, tente usar diretamente o numero ip do servidor smtp. O postfix as vezes se confunde com entradas de dns, e isso economiza muita dor de cabeça.

Links:

http://www.g2ctech.com/artigos/relay-email.html
http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailservers.html

Google