Снижение нагрузки на почтовый сервер через DKIM

15 Nov 2012 | Автор: anchous |

Столкнулся тут с интересной технологией DKIM (DomainKeys Identified Mail), служащей для верификации почтовых отправлений между почтовыми серверами на уровне доменных ключей. То есть фактически аналог SPF, который в свое время достаточно агрессивно навязывали мелкомягкие, да так, что не имея его, невозможно было отослать письмо на Hotmail.

Собственно технология состоит в том, что для каждого домена генерируется свой уникальный ключ, который и передается в заголовке письма, и получая который, система-получателя распознает принадлежность письма к домену, что позволяет избежать подмены почтового адреса ака email-spoofing, используемого при рассылке спама и фишинга.

Но побочный эффект этой технологии, в данный момент я говорю о DKIM, заключается в том, что данная система поддерживается большинством публичных почтовых серверов, таких как Yahoo, Gmail, Yandex, Mail и других, так что письма от них, при подключении технологии, будут приходить именно в ключом DKIM. Что позволит, в свою очередь, снизить нагрузку на спам фильтр и как следствие вычислительные мощности почтового сервера, так как письмо, при наличии подписи, проходит по зеленому коридору, минуя проверки спам фильтра, по крайней мере dspam и spamassassin. То есть весьма полезная альтернатива тем же RBL, значительно облегчающая жизнь почтаря и ускоряющая доставку писем.

На почтовом сервере возможно придется настроить механизм DKIM и DomainKeys, с помощью которых генерируется ключ домена, который прописывается txt записью в зоне домена, аналогично подключению SPF. Но у exim все работает гораздо проще, так как в версии > 4.7 уже вшит механизм проверки, и всего лишь придется добавить несколько acl записей и механизм для подписывания исходящих писем.

Входящая почта:
В раздел Main озвучиваем лист:
acl_smtp_dkim = acl_check_dkim
После в листе проверок, идущем от begin acl, описываем проверку пропускающую по дефолту все домены:
acl_check_dkim:
accept

Теоретически мы можем наструячить проверки для всех доменов, но потом заколебемся вносить домены в белые списки, так что проще чекать определенные крупные домены, для чего меняем запись наиболее популярных:
acl_check_dkim:
deny     message     =It’s not true! Asta la vista, baby.
sender_domains  = gmail.com:yahoo.com:yandex.ru:mail.ru
dkim_signers       = gmail.com:yahoo.com:yandex.ru:mail.ru
dkim_status     = none:invalid:fail
accept

Исходящая почта:
генерим ключик DKIM с помощью уже установленного в системе openssl:
# openssl genrsa -out dkim.private.key 1024
# openssl rsa -in dkim.private.key -out dkim.public.key -pubout -outform PEM

после чего прописываем в раздел транспортов новый транспорт для подписывания исходящих писем:
remote_smtp:
driver = smtp
dkim_domain = ourdomain.ru
dkim_selector = dkim
dkim_private_key = /path-to/dkim.private.key
dkim_canon = relaxed

где dkim_canon алгоритм подписывания хедера, различающийся как simple или relaxed.

Наконец сгенерированный выше ключик прописываем в DNS зону нашего домена в виде
dkim._domainkey   TXT  “k=rsa; p=<public key>”
где dkim – прописан в dkim_selector, а ключик – содержимое генеренного ключа

После чего перегружаем зону и смотрим результат:
# host -t txt dkim._domainkey.ourdomain.ru

Теперь если просматривать заголовки входящих писем, то в них будут примерно такие диалоги:
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ourdomain.ru; s=dkim; h=Content-Type:MIME-Version:Message-ID:Date:Subject:In-Reply-To:References:To:From:Reply-To; bh=0KhX82chyRtuSVsgWvU+Cslr4eft8MJHj4jFQ=; b=AOE5+3NAxZ0LniEIpRK3y9DGc8yWm7=;

На этой торжественной ноте можно было бы закончить, если не одно но, заключающееся в том, что буквально пару недель назад в версиях 4.7 и 4.8 почтового сервера Exim была найдена уязвимость использования механизма подписи DKIM, приводящая к переполнению буфера атакауемой машины. Так что только в последней версии 4.80.1 эта уявимость была устранена. Поэтому при включении поддержки использования DKIM следует использовать эту и более позднюю версию. На данный момент ожидается выход 4.81

VN:F [1.9.21_1169]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.21_1169]
Rating: +1 (from 1 vote)
Снижение нагрузки на почтовый сервер через DKIM , 10.0 out of 10 based on 1 rating

Теги: , , , , ,

Ваш отзыв