Назад | Перейти на главную страницу

Почтовый сервер Linux для отправки электронной почты с нескольких IP-адресов

Я пытаюсь настроить почтовый сервер, чтобы он мог отправлять электронную почту с нескольких 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 к разным интерфейсам (как вы говорите)

прокси-сервер на самом деле не требуется, вы можете просто использовать маршрутизатор (для каждого домена / из: совпадение) с условием, установленным, чтобы указать, через какой «хост» ретранслировать.

никогда не пробовал. было бы интересно узнать, работает ли это ..