Exim: не принимать почту без DKIM подписи
Если сервер обслуживает персональный домен, то вполне допустимо применение фашисткой политики «принимать только подписанные письма». По RFC, если отправляющий домен не подписывает письма, то их надо пропускать. Но бывают случаи, когда нужно их «рубить» на корню.
Простое написание в acl_smtp_dkim:
acl_check_dkim: deny message = DKIM verification failed dkim_status = none:invalid:fail accept
не приведёт к нужному результату, т.к. этот ACL вызывается единожды для каждой синтаксически корректной подписи во входящем сообщении. На практике это означает, что если в сообщении нет DKIM подписи, то ACL вызываться не будет.
Обойти это можно используя переменную в ACL списках. В acl_smtp_rcpt устанавливаем переменную acl_c_spamscore в 0, в acl_smtp_dkim устанавливаем её в 10, если сообщение прошло проверку DKIM подписи, в acl_smtp_data проверяем значение переменной. Если она меньше 5 — письма отвергаем, в противном случае — принимаем.
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_dkim = acl_check_dkim
acl_smtp_data = acl_check_data
acl_check_dkim:
accept hosts = +relay_from_hosts
accept authenticated = *
# Message with sign, good signature
accept dkim_status = pass
set acl_c_spamscore = 10
add_header = :at_start:Authentication-Results: dkim=$dkim_verify_status
accept
acl_check_rcpt:
#Добавляем в этот ACL
warn set acl_c_spamscore = 0
#warn set acl_c_local_address = $local_part@$domain
acl_check_data:
accept authenticated = *
deny message = "DKIM verification failed"
#condition = ${if eq{$acl_c_local_address}{mymail@mydomain.com}{yes}{no}}
condition = ${if <{$acl_c_spamscore}{5}{yes}{no}}
accept
Если требуется, чтобы такая политика срабатывала только на конкретный ящик, уберите комментарий «#» в секции acl_check_rcpt в строке
#warn set acl_c_local_address = $local_part@$domain
и в acl_check_data:
#condition = ${if eq{$acl_c_local_address}{mymail@mydomain.com}{yes}{no}}где mymail@mydomain.com — ваш почтовый ящик.
В log-файле exim-reject.log будет появляться соответствующая запись, плюс заголовки отвергнутых писем.

