Продолжаю настройку своего почтового сервера.
В этой заметке речь будет о проверке DKIM у входящих сообщений Exim.

# Добавляем в список ACL для обработки:
acl_smtp_dkim = acl_check_dkim

# ...

# Можно разместить в начале, где задаются переменные для DKIM-отправки
# Это значит, чьи подписи мы будем точно проверять
DKIM_KNOWN_SIGNERS = paypal.com : gmail.com
dkim_verify_signers = $dkim_signers : KNOWN_DKIM_SIGNERS

# ...

# Создаем сам ACL в секции "begin acl"

# ...

# DKIM check
acl_check_dkim:

        accept  hosts           = +relay_from_hosts
        accept  authenticated   = *

        # Message without sign
        accept  dkim_status     = none
                condition       = ${if eq {$acl_c_dkim_hdr}{1} {no}{yes}}
        set     acl_c_dkim_hdr  = 1
                add_header      = :at_start:X-DKIM: Exim 4.71 on $primary_hostname (no dkim signature)

        # Message with sign, begin
        warn    condition       = ${if eq {$acl_c_dkim_hdr}{1} {no}{yes}}
        set     acl_c_dkim_hdr  = 1
                add_header      = :at_start:X-DKIM: Exim 4.71 on $primary_hostname

        # Message with sign, bad signature
        deny    dkim_status     = fail
                message         = Rejected: $dkim_verify_reason
                logwrite        = X-Auth: DKIM test failed: (address=$sender_address domain=$dkim_cur_signer), signature is bad.

        # Message with sign, invalid signature
        accept  dkim_status     = invalid
                add_header      = :at_start:Authentication-Results: $primary_hostname $dkim_cur_signer ($dkim_verify_status); $dkim_verify_reason
                logwrite        = X-Auth: DKIM test passed (address=$sender_address domain=$dkim_cur_signer), but signature is invalid.

        # Message with sign, good signature
        accept  dkim_status     = pass
                add_header      = :at_start:Authentication-Results: $primary_hostname; dkim=$dkim_verify_status header.i=@$dkim_cur_signer
                logwrite        = X-Auth: DKIM test passed (address=$sender_address domain=$dkim_cur_signer), good signature.

        accept
​

Я в процессе настройки своего почтового сервера.
Эта заметка касается авторизации, которая допускает не шифрованный пароль и шифрованный.

Используется Exim4 + Dovecot2 + PostfixAdmin

1. Файл /etc/exim4/exim4.conf - ставишь такую секцию которую я привел:

begin authenticators

auth_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

auth_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth2

auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth3
Настраиваю сейчас EXIM+много чего ещё, в том числе CLAMAV на Ubuntu 16.04 LTS.

Добавил пользователя clamav в группу Debian-exim,
usermod -G Debian-exim clamav​

но в логе всё равно упорно получаю 
1dfRUU-0001m6-V5 malware acl condition: clamd: ClamAV returned: /var/spool/exim4/scan/1dfRUU-0001m6-V5/1dfRUU-0001m6-V5.eml: lstat() failed: Permission denied. ERROR​

Решение было найдено не быстро, только на второй день.

Постоянно при работе с exim приходится искать на других сайтах информацию по работе с очередью и остальным командам MTA Exim. Сайты меняются, уходят, приходят и надеяться можно только на себя. Решил у себя сделать заметку по наиболее часто используемым мною командам.

Такая себе мини заметка, оказывается в exim уже интегрирован механизм смены email адреса отправителя. В debian пакетах так точно.

Достаточно в файл /etc/email-addresses добавить то, что нам нужно.

Стандартное содержимое файла
# cat /etc/email-addresses

Заметил в отлупах от почтовых серверов что моя почта не принимается серверами hotmail.com, live.com, msn.com, outlook.com.
Ошибка выглядит примерно следующим образом:

SMTP error from remote mail server after MAIL FROM:<forum@domain.com> SIZE=3316:
 host mx4.hotmail.com [65.54.188.94]: 550 SC-001 (BAY004-MC2F18) Unfortunately, messages from 78.xxx.117.xxx weren't sent. Please contact your Internet service provider since part of their network is on our block list. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.


Для домена всё давно настроено, SPF, DKIM, DMARC.

На одном из серверов крутятся несколько сайтов, но почта с этих сайтов должна рассылаться с другого сервера.
Пришлось искать решение вопроса.
И оно нашлось...

По сути работает условие, если домен отправителя равен указанному нами домену, то почта отправляется на smarthost, который в свою очередь принимает почту от первого сервера без авторизации.

Настраивалось это на Ubuntu, Debian с этим чудным конфигом... На CentOS, RedHat будет немного проще.

Открываем на редактирование файл /etc/exim4/exim4.conf.template

Создаём директорию 
mkdir /etc/exim/dkim

Генерируем ключ
openssl genrsa -out /etc/exim/dkim/example.com.key 1024

из него генерируем публичную часть ключа
openssl rsa -in /etc/exim/dkim/example.com.key -out /etc/exim/dkim/example.com.key.pub -pubout

DKIM является системой для проверки отправителя и целостности сообщений. ISPConfig 3 использует amavisd-new, в качестве фильтра контента для проверки на спам и вирусы, а также amavisd-new может подписывать сообщения с помощью DKIM. Следующие действия объясняют, как настроить amavisd-new для подписи сообщений для домена “example.com” с помощью DKIM. Данные действия должны работать с любой версией amavisd-new, даже если Вы не используете ISPConfig.