Проверка DKIM для входящих писем Exim

Продолжаю настройку своего почтового сервера. В этой заметке речь будет о проверке DKIM у входящих сообщений с помощью Exim. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 # Добавляем в список 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

10 серпня 2017 · 2 хвилин · 262 слів · dimetrius

Добавляем DKIM подписи в Exim, параллельно настраиваем SPF, DMARC на примере CentOS

Создаём директорию 1 mkdir /etc/exim/dkim Генерируем ключ 1 openssl genrsa -out /etc/exim/dkim/example.com.key 1024 из него генерируем публичную часть ключа 1 openssl rsa -in /etc/exim/dkim/example.com.key -out /etc/exim/dkim/example.com.key.pub -pubout Прописываем в DNS публичную часть ключа 1 mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..." Проверяем что запись корректно добавилась на DNS dig mail._domainkey.example.com TXT Настраиваем Exim 1 2 3 4 5 6 7 8 9 10 11 12 13 14 begin transports # тут добавляем наш DKIM DKIM_DOMAIN = ${lc:${domain:$h_from:}} DKIM_FILE = /etc/exim/dkim/${lc:${domain:$h_from:}}.key DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}} remote_smtp: driver = smtp dkim_domain = DKIM_DOMAIN dkim_private_key = DKIM_PRIVATE_KEY dkim_selector = mail dkim_canon = relaxed dkim_strict = yes Не забываем перезагрузить Exim (service exim reload) Параллельно обычно приходится настраивать SPF и DMARC. Это не сложно. Добавляем на DNS подобные записи: 1 2 example.com. IN TXT "v=DMARC1\;p=reject" example.com. IN TXT "v=spf1 mx a ip4:222.222.222.222 ~all" 222.222.222.222 это IP для примера, обычно приходится прописывать, когда почта отправляется с интерфейсного IP, который не совпадает с записями A, MX… статья не закончена

13 квітня 2016 · 1 хвилина · 163 слів · dimetrius

Почтовые подписи DKIM в amavisd-new и ISPConfig 3

DKIM является системой для проверки отправителя и целостности сообщений. ISPConfig 3 использует amavisd-new, в качестве фильтра контента для проверки на спам и вирусы, а также amavisd-new может подписывать сообщения с помощью DKIM. Следующие действия объясняют, как настроить amavisd-new для подписи сообщений для домена “example.com” с помощью DKIM. Данные действия должны работать с любой версией amavisd-new, даже если Вы не используете ISPConfig. Создайте ключ домена: 1 2 mkdir /var/db/dkim/ amavisd genrsa /var/db/dkim/example-foo.key.pem Настройте amavisd для использование этого ключа для домена example.com. Отредактируйте файл конфигурации: vim /etc/amavisd/amavisd.conf и добавьте следующие строки: 1 2 3 4 5 6 7 $enable_dkim_verification = 1; $enable_dkim_signing = 1; dkim_key('example.com', 'foo', '/var/db/dkim/example-foo.key.pem'); @dkim_signature_options_bysender_maps = ( { '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } ); @mynetworks = qw(0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16); # list your internal networks Выполните команду amavisd showkeys чтобы получить открытый ключ, который должен быть добавлен как текст на DNS-сервер сервера example.com. Проверьте настройку с помощью команды: amavisd testkeys и если все работает правильно, перезапустите amavisd: /etc/init.d/amavis restart Вот более подробное описание из руководства по amavisd-new о том, как установить DKIM в amavisd-new: http://www.ijs.si/software/amavisd/amavisd-new-docs.html#dkim Оригинал статьи на www.faqforge.com Перевод хостинг КОМТЕТ komtet.ru

13 квітня 2016 · 1 хвилина · 191 слово · dimetrius