Выбором исходящих IP адресов в Exim для доменов
По умолчанию EXIM отправляет всю почту через ip и домен на которые установлен сервер (MTA)
В заголовках мы видим ip и домен на который был установлен сервер, при этом отправка была с добавленного домена и ip.
Received-SPF: pass (mx306.i.mail.ru: domain of domainSENDER.ru designates 00.000.00.001 as permitted sender) client-ip=00.000.00.001; envelope-from=domainSENDER.ru; helo=domainMTA.ru; Received: from domainMTA.ru ([00.000.00.001]:60808)
Задача: указать EXIM с какого домена и ip требуется отсылать почту.
Список доступных IP-адресов для отправки исходящей почты определяется параметром interface в секции конфигурационного файла TRANSPORTS CONFIGURATION
remote_smtp: driver = smtp interface = .......ЗНАЧЕНИЕ.......
По умолчанию он отсутствует.
Вариант 1 — ротация ip адресов
Например, у нас имеется подсеть IPv4 1.2.3.240/28, что даёт нам 14 свободных IP-адресов c 1.2.3.241 по 1.2.3.254 для использования.
Для случайной ротации этого набора можно использовать следующее выражение в параметре interface транспорта smtp.
... remote_smtp: driver = smtp interface = 1.2.3.${eval:${randint:14}+241} ...
Ротация адреса по времени. К примеру, последовательно один раз в секунду.
... remote_smtp: driver = smtp interface = 1.2.3.${eval:$tod_epoch%14+241} ...
В случае, если имеется набор адресов из разных подсетей, можно воспользоваться следующим выражением для их случайной ротации. Например, для набора из 4 адресов это будет выглядеть так.
... remote_smtp: driver = smtp interface = <;${extract{${eval:${randint:4}+1}}{;}{1.2.3.4;5.6.7.8;9.0.1.2;3.4.5.6}} ...
Вариант 2 — каждому домену — свой ip адрес
Можно также задать свой набор IP-адресов для каждого из доменов-отправителей, перечислив их соответствие в списке в отдельном файле.
файл ifaces nano /etc/exim/ifaces
"domainMTA.ru" 00.000.00.001 "domainSENDER.ru" 00.000.00.002
добавляем в конфигурацию /etc/exim значение interface
... begin transports ... remote_smtp: driver = smtp interface = <;${lookup{$sender_address_domain}lsearch{/etc/exim/ifaces}{$value}{1.2.3.4;5.6.7.8;2000:1:2:3::4;2000:5:6:7::8}} ...
В этом примере в файле ifaces производится поиск соответствующего домену-отправителю списка IP-адресов, а в случае их отсутствия используется общий их список.
В итоге видим следующее:
Received-SPF: pass (mx177.mail.ru: domain of domainSENDER.ru designates 00.000.00.002 as permitted sender) client-ip=00.000.00.002; envelope-from=buonce@domainSENDER.ru; helo=domainMTA.ru; Received: domainSENDER.ru ([00.000.00.002]:35304 helo=domainMTA.ru)
Изменить Helo отправителя
Как мы видим из примера выше, нам удалось указать ip домена отправителя, при этом helo остался прежним (домена установленного MTA)
Добавляем дополнительное значение в конфигурацию /etc/exim
... begin transports ... remote_smtp: driver = smtp interface = <;${lookup{$sender_address_domain}lsearch{/etc/exim/ifaces}{$value}{1.2.3.4;5.6.7.8;2000:1:2:3::4;2000:5:6:7::8}} helo_data = ${lookup dnsdb{ptr=$sending_ip_address}{$value}{$primary_hostname}} ...
получаем следующий вывод в заголовках:
Received-SPF: pass (mx177.mail.ru: domain of domainSENDER.ru designates 00.000.00.002 as permitted sender) client-ip=00.000.00.002; envelope-from=domainSENDER.ru; helo=domainSENDER.ru; Received: from domainSENDER.ru ([00.000.00.002]:35304)
Received: from ***************** ([************]) by domainMTA.ru with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92)