begin routers
...
autoreplay:
driver = accept
require_files = /etc/exim/autoreply/$domain/autoreply.${local_part}.msg
condition = ${if exists{/etc/exim/autoreply/$domain/autoreply.${local_part}.msg}{yes}{no}}
retry_use_local_part
transport = userautoreply
unseen

begin transports
...
userautoreply:
driver = autoreply
file = /etc/exim/autoreply/$domain/autoreply.${local_part}.msg
from = "${local_part}@${domain}"
subject = "${if def:h_Subject: {Autoreply: \"${rfc2047:$h_Subject:}\"} {Autoreply Message}}"
headers = Content-Type: text/plain; charset=utf-8;\nContent-Transfer-Encoding: 8bit
to = "${sender_address}"
[mysqld]
skip-external-locking
bind-address = 127.0.0.1
skip-name-resolve = 1
sql_mode                = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
query_cache_size = 0
query_cache_type = 0
Файрволл в cpanel представлен сервисом csf, иногда приходится его останавливать из-за слишком "удачной" настройки клиентами.
После не забыть iptables -F

Если вы столкнулись с ошибкой, подобной той, что написана в заголовке, это может означать, что ваше приложение может не работать при попытке использовать расширение memcache из-за неправильной или отсутствующей сборки расширения.

“php: symbol lookup error: /usr/local/lib/php/extensions/no-debug-non-zts-20131226/memcache.so: undefined symbol: mmc_queue_pop”

Чтобы исправить эту проблему, вам нужно передать опцию «fgnu89-inline» компилятору с переменной среды CFLAGS при установке пакета через pecl. Эта опция указывает компилятору C использовать традиционную семантику GNU для встроенных функций. (Пожалуйста, проверьте раздел «Ссылки», чтобы получить более подробную информацию и другие параметры компилятора.)

В этой заметке вы сможете узнать о том что dovecot поддерживает ip-based, domain-based конфигурации для SSL.


local 10.10.10.11 {
       ssl_cert = </home/domain0/ssl.cert
       ssl_key = </home/domain0/ssl.key
}

local 10.10.10.12 {
       ssl_cert = </home/domain1/ssl.cert
       ssl_key = </home/domain2/ssl.key
}​

При этом необходимо убрать из конфигурации SSL сертификаты, которые вне этих секций.

Так же можно указывать SSL сертификаты для доменов:

local_name mail.domain0.com {
  ssl_cert = </home/domain0/ssl.cert
  ssl_key = </home/domain0/ssl.key
}

local_name mail.domain1.com {
  ssl_cert = </home/domain1/ssl.cert
  ssl_key = </home/domain1/ssl.key
}

Больше можно почитать по ссылке под статьёй.

В этой статье добавлю варианты как можно разделить по IP адресам почтовые домены.
Очень мало воды и много конфигов.
Выбор SSL сертификата на основании домена
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 адреса и домена
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}}

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

# 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):

remote_smtp:
  driver = smtp
...
  helo_data = $sender_address_domain
...

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

Для выбора IP во время отправки почты и для представления сервера можно использовать конфигурацию
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 адреса.

ну и файл

# 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. Возможно кому-то будет ясен смысл.
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.
Этот параметр не только в приветствии используется.

И файл

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

Если вы дочитали, рекомендую обратить внимание на ныне действующий сервис чекающий SSL SMTP. Смотрите на ссылки внизу.