Site menu Fazendo relay com Postfix em servidores SMTP autenticados
Site menu

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 spam.

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 contrária 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:senha" > /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 parâmetros 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 número IP do servidor SMTP. O Postfix às vezes se confunde com entradas de DNS, e isso economiza muita dor de cabeça.