Servidor de e-mail Linux para enviar e-mail de vários endereços IP

6

Estou tentando configurar um servidor de e-mail para que ele tenha a capacidade de enviar e-mails de vários endereços IP, para que nosso sistema de marketing possa enviar e-mails de vários domínios, mantendo as pesquisas de DNS reversas consistentes. IE, domain1.com resolve para 10.0.0.1, domain2.com resolve para 10.0.0.2, etc.

Idealmente, o servidor de e-mail verificaria o domínio from nos cabeçalhos e escolheria o endereço IP correto de um pool, usando-o para o envio real. No momento, estamos usando o Exim, e eu estava pensando que uma solução seria executar várias instâncias do Exim em diferentes interfaces, depois escrever um proxy SMTP que faria a verificação do cabeçalho e encaminhar o email para a instância correta do Exim, mas Eu estou pensando que pode haver uma solução mais simples do que isso.

Apenas para que todos saibam, isso não envolve spam, e nós possuímos todos os domínios e endereços IP que estaríamos usando.

    
por Alex Fort 05.05.2009 / 15:28

3 respostas

8

Se eu entendi, você tem o e-mail em um servidor e esse servidor tem, digamos, 4 endereços IP configurados nele. Você gostaria que seu servidor de e-mail, ao enviar para a Internet, usasse um desses quatro IPs como a interface de saída. Se esta é a interpretação errada, por favor me avise.

O transporte Exim SMTP pode ser configurado para enviar e-mail por meio de diferentes interfaces. De uma forma codificada, você poderia fazer isso:

routers:

send_domaina_com:
  driver = dnslookup
  domains = domaina.com
  transport = domaina_com_smtp

send_domainb_com:
  driver = dnslookup
  domains = domainb.com
  transport = domainb_com_smtp

send_domainc_com:
  driver = dnslookup
  domains = domainc.com
  transport = domainc_com_smtp

send_domaind_com:
  driver = dnslookup
  domains = domaind.com
  transport = domaind_com_smtp

TRANSPORTS:

domaina_com_smtp:
  driver = smtp
  interface = 10.0.0.1

domainb_com_smtp:
  driver = smtp
  interface = 10.0.0.2

domainc_com_smtp:
  driver = smtp
  interface = 10.0.0.3

domaind_com_smtp:
  driver = smtp
  interface = 10.0.0.4

Eu sou 99,99% acima, mas é obviamente feio. Eu acho que tudo que você precisa para ser tratado dinamicamente está lá ("interface" é expansível).

    
por 05.05.2009 / 16:13
0

Para manter a integridade da rota, estou pensando que você teria que ligar diferentes instâncias do exim a diferentes interfaces (como você diz)

o proxy não é realmente necessário, você pode simplesmente usar um roteador (por domínio / de: match) com uma condição definida para ditar qual 'host' será retransmitido.

nunca tentou isso. estaria interessado em saber se funciona ..

    
por 05.05.2009 / 15:47
0

O Exim pode enviar e-mails de diferentes endereços IP com base no nome de domínio no cabeçalho "De:". Não há necessidade de codificar cada domínio individualmente. Uma interface para remote_smtp transport deve ser definida da seguinte forma:

interface = "${lookup{${lc:${domain:${address:$h_from:}}}}lsearch{/etc/exim/domainips}{$value}}"

Uma lista de pares de IP de domínio /etc/exim/domainips precisa ser criada no seguinte formato:

domain1.com: 10.0.0.1
domain2.com: 10.0.0.2

Além disso, se o registro PTR para 10.0.0.1 estiver apontando para domain1.com, seria bom definir HELO de acordo:

helo_data = ${lc:${domain:${address:$h_from:}}}

Se os e-mails forem enviados pelo PHP / Apache, o remetente do envelope será sempre o mesmo, independentemente do cabeçalho "De:" (por exemplo, apache@primary_hostname.com). Para corrigir isso, return_path pode ser definido:

return_path = ${address:$h_from:}

Idealmente, remote_smtp transport será assim:

remote_smtp:
driver = smtp
interface = "${lookup{${lc:${domain:${address:$h_from:}}}}lsearch{/etc/exim/domainips}{$value}}"
helo_data = ${lc:${domain:${address:$h_from:}}}
return_path = ${address:$h_from:}
    
por 22.07.2015 / 05:58