Postfix: enviando mensagens com IPs de saída aleatórios.

Vamos dizer que você tenha negócios com e-mail marketing, ou mesmo é administrador de um MTA Postfix que envia toneladas de e-mails diariamente, e gostaria de distribuir isso por vários IPs de saída diferentes, mas não quer mapear isso por remetente, porque sua lista de clientes/domínios é muito rotativa, ou simplesmente quer usar um range de IP para entregar essas mensagens, de forma que a saída seja aleatória.

Parece complicado, mas é simples.

O segredo está em dois fatores: a opção smtp_bind_address no main.cf e uma configuração simples no iptables.

Vamos dizer que você tem um range de IP disponível e já alocado em seu servidor, utilizaremos o range de 1.1.1.1 a 1.1.1.10 como exemplo. Em um desses IPs, você irá determinar como IP de entrada, os outros 9 servirão apenas para saída, ou seja, para a entrega dos e-mails.

O primeiro passo, é setar no main.cf para o Postfix aceitar mensagens apenas pelo IP escolhido, no caso, 1.1.1.1.

inet_interfaces = 1.1.1.1

Depois, temos quer fazer um bind, para o Postfix também tentar entregar as mensagens apenas a partir do IP 1.1.1.1, aí está o pulo do gato :-) você entenderá mais pra frente. Adicione no main.cf:

smtp_bind_address = 1.1.1.1

Porque bindar o IP 1.1.1.1 como IP de saída se as mensagens não serão entregues por ele? Calma José, vou explicar. O controle de saída, será feito via iptables, mas pra isso, você precisa de um IP de origem, colocando 1.1.1.1 como IP de saída (além de entrada), fará o iptables entender, que terá de aplicar o filtro sempre quando o IP 1.1.1.1 tentar enviar algo, então, segue a regra:

$ iptables -t nat -A POSTROUTING -s 1.1.1.1 -j SNAT --to-source 1.1.1.2-1.1.1.10


É importante salientar, para essa configuração funcionar, os IPs terão de ser da mesma rede!

O que foi criado aqui, é na verdade um pool de IPs, você pode criar multiplos pools de IPs controlados por um IP de entrada que distribuirá para os de saída. Mas para cada pool, você necessitará de uma instância diferente do Postfix. O Postfix tem uma ferramenta nativa que trata multiplas instâncias sem muita complicação chamada Postmulti, você poderá criar varias instâncias, cada instância com seu pool, legal não?

Depois eu escreverei um artigo sobre o Postmulti, por hoje é só.

3 Response to "Postfix: enviando mensagens com IPs de saída aleatórios."

  1. Olá amigo, muito bom o artigo, efetuei o teste que sua dica fala, mas ele só sai com o último ip da range, tipo 1.1.1.10. Como fica a conf. do master.cf, alguma coisa de especial ou fica padrão mesmo?

    Abraço.

    falwz says:

    eu fiz esta confoguraçao e somente é enviado com o ip de origem mesmo e nao sai por outro ip

    falwz says:

    funcionou
    refiz e funcionou