Я пытаюсь настроить почтовый сервер, чтобы он мог отправлять электронную почту с нескольких IP-адресов, чтобы наша маркетинговая система могла отправлять электронную почту из нескольких доменов, сохраняя при этом согласованность обратного поиска в DNS. IE, domain1.com преобразуется в 10.0.0.1, domain2.com преобразуется в 10.0.0.2 и т. Д.
В идеале почтовый сервер должен проверять from
domain в заголовках, затем выберите правильный IP-адрес из пула, используя его для фактической отправки. Прямо сейчас мы используем Exim, и я подумал, что одним из решений было бы запустить несколько экземпляров Exim на разных интерфейсах, а затем написать прокси SMTP, который будет выполнять проверку заголовка и пересылать электронное письмо на правильный экземпляр Exim, но Я думаю, что может быть более простое решение, чем это.
Чтобы все знали, это не связано со спамом, и мы владеем всеми доменами и IP-адресами, которые мы будем использовать.
Если я вас понимаю, у вас есть почта на сервере, и на этом сервере, скажем, настроено 4 IP-адреса. Вы хотите, чтобы ваш почтовый сервер при отправке в Интернет использовал один из этих четырех IP-адресов в качестве исходящего интерфейса. Если это неверное толкование, дайте мне знать.
SMTP-транспорт Exim может быть настроен для отправки электронной почты через разные интерфейсы. Жестко запрограммированным способом вы могли бы сделать это:
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
Я на 99,99% выше будет работать, хотя это явно некрасиво. Я думаю, все, что вам нужно для динамической обработки, есть ("интерфейс" расширяемый).
Exim может отправлять электронные письма с разных IP-адресов в зависимости от имени домена в заголовке «От:». Нет необходимости жестко кодировать каждый домен отдельно. Интерфейс для remote_smtp
транспорт должен быть установлен следующим образом:
interface = "${lookup{${lc:${domain:${address:$h_from:}}}}lsearch{/etc/exim/domainips}{$value}}"
Список пар домен-IP /etc/exim/domainips
необходимо создать в следующем формате:
domain1.com: 10.0.0.1
domain2.com: 10.0.0.2
Кроме того, если запись PTR для 10.0.0.1 указывает на domain1.com, было бы неплохо установить HELO соответственно:
helo_data = ${lc:${domain:${address:$h_from:}}}
Если электронная почта отправляется PHP / Apache, то фактический отправитель конверта всегда будет одним и тем же независимо от заголовка «От:» (например, apache@primary_hostname.com). Чтобы исправить это, можно установить return_path:
return_path = ${address:$h_from:}
В идеале, remote_smtp
транспорт будет выглядеть так:
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:}
Чтобы поддерживать целостность маршрута, я думаю, вам придется привязать разные экземпляры exim к разным интерфейсам (как вы говорите)
прокси-сервер на самом деле не требуется, вы можете просто использовать маршрутизатор (для каждого домена / из: совпадение) с условием, установленным, чтобы указать, через какой «хост» ретранслировать.
никогда не пробовал. было бы интересно узнать, работает ли это ..