В этой статье добавлю варианты как можно разделить по IP адресам почтовые домены.
Очень мало воды и много конфигов.

Выбор SSL сертификата на основании домена

1
2
tls_certificate = ${if exists{/etc/ssl/${tls_sni}.crt}{/etc/ssl/${tls_sni}.crt}{/etc/ssl/default_domain.crt}}
tls_privatekey = ${if exists{/etc/ssl/${tls_sni}.key}{/etc/ssl/${tls_sni}.key}{/etc/ssl/default_domain.key}}​

где сертификаты должны лежать по пути /etc/ssl/domain.com.crt, а ключи — /etc/ssl/domain.com.key. В случае, если для какого-то домена не будет сертификата, то будет использоваться сертификат по умолчанию — /etc/ssl/default_domain.crt (и соответствующий ключ /etc/ssl/default_domain.key)
Обращаю внимание что этот вариант может корректно не работать со STARTTLS.

Выбор SSL сертификата на основании сравнения IP адреса и домена

1
2
tls_certificate = ${lookup{$received_ip_address}lsearch{/etc/exim/ips_in.conf}{/opt/mail/ssl/$value.pem}{/opt/mail/ssl/domain.com.cer}}
tls_privatekey = ${lookup{$received_ip_address}lsearch{/etc/exim/ips_in.conf}{/opt/mail/ssl/$value.key}{/opt/mail/ssl/domain.com.key}}

Используется файл вида:

1
2
3
# cat /etc/exim/ips_in.conf
8.140.110.229: mail2.domain.com
8.140.110.228: mail2.domain2.com

Что бы сервер представлялся нужным доменом, правим transports remote_smtp (указывем helo_data):

1
2
3
4
5
remote_smtp:
  driver = smtp
...
  helo_data = $sender_address_domain
...

Ещё варианты будут описаны ниже.

Для выбора IP во время отправки почты и для представления сервера можно использовать конфигурацию

1
2
3
4
remote_smtp:
driver = smtp
+ interface = ${if exists {/etc/exim/ips_out.conf}{${lookup{$sender_address_domain}lsearch{/etc/exim/ips_out.conf}{$value}{}}}{}}
+ helo_data = ${lookup dnsdb{ptr=$sending_ip_address}{$value}{$primary_hostname}}

Здесь мы выбираем какой интерфейс использовать при отправке почты на основании данных в файле, который описан ниже. А так же представляемся именем домена из PTR этого IP адреса.

ну и файл

1
2
3
4
# cat /etc/exim/ips_out.conf
domain1.com: 8.140.110.229
domain2.com: 8.140.110.228
*: 8.140.110.227

Вместо статического primary_hostname был добавлен параметр smtp_active_hostname. Возможно кому-то будет ясен смысл.

1
2
primary_hostname = mail.domain.com
+ smtp_active_hostname = ${lookup{$received_ip_address}lsearch{/etc/exim/ips_in.conf}{$value}{$primary_hostname}}

В кратце, клиент приходит на IP a.a.a.a, получает в приветствии aaaa.domain.com, если приходит на IP x.x.x.x, получает в приветствии xxxx.domain.com.
Этот параметр не только в приветствии используется.

И файл

1
2
3
# cat /etc/exim/ips_in.conf
8.140.110.229: mail2.domain.com
8.140.110.228: mail2.domain2.com