Настройка DKIM и SPF + Sendmail

DKIM — это цифровая подпись писем, отправляемых с вашего сервера. Она гарантирует, что письмо отправлено именно с него, и не было изменено.

Наличие DKIM на отправляемой корреспонденции крайне положительно сказывается на прохождении antispam тестов, поэтому лучше бы её настроить.

Краткий принцип работы заключается в том, что на сервере лежит закрытый ключ, которым подписываются исходящие письма. Удалённый почтовый сервер (Яндекс или Google) при получении письма видит в заголовках эту подпись и проверяет ее путем запроса открытого ключа из DNS домена.

Пример заголовка с DKIM:

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=modx-test.com; s=mail;
	t=1378025116; bh=E27pqP5aWa/XXOeVzzjMW+iw0W7wbbCe2B4toIRxP9M=;
	h=To:Subject:Date:From:Reply-To:From;
	b=GqprdvEYgq/Ff95fCDNzV4k1JLaMA9Pz5p5PUyv2bI0UVZ/S1xl6IyAZK4j3FwMCW
	5cLe4IGcmnd+dNzNhe2bSj/kCIJg7ZyLM3mXAzEirGXdiqCc/LAZQOGR7udbMmm5YP
	42pkMa2lI9FqKxAKq5BrtXbrWE+n+Mxc5dpQcGMw=

Если подпись, сгенерированая сервисом, используя содержимое письма и открытой подписи совпадает с той, что указана в заголовке, значит — письмо настоящее и его не модифицировали после отправки с родного сервера.

Если нет — это подделка и, скорее всего, спам.

Под катом пошаговое how-to с картинками, для серверов, настроенных по этой инструкции, как научить Sendmail работать с DKIM.

Настройка

Обновляем индекс пакетов и устанавливаем opendkim:

sudo yum install opendkim

Приводим /etc/opendkim.conf к следующему виду:

AutoRestart             Yes
AutoRestartRate         10/1h
PidFile /var/run/opendkim/opendkim.pid
Mode    sv
Syslog  yes
SyslogSuccess   yes
LogWhy  yes                   002
Domain                  имявашегодомена.ru
UserID  opendkim:opendkim
Socket  inet:8891@localhost
Umask   022
Canonicalization    relaxed/relaxed
Selector    default
MinimumKeyBits 1024
KeyFile /etc/opendkim/keys/default.private
KeyTable    /etc/opendkim/KeyTable
SigningTable    refile:/etc/opendkim/SigningTable
ExternalIgnoreList  refile:/etc/opendkim/TrustedHosts
InternalHosts   refile:/etc/opendkim/TrustedHosts

В параметре Domain можно указать несколько доменов, через пробел. Вся почта от них, и их поддоменов будет подписана DKIM.

Domain      bezumkin.ru modx-test.com

подпишет все письма от modx23.modx-test.com, от bezumkin.ru, от tefile.modx-test.com и т.д.

Теперь нам нужно сформировать ключи (закрытый и открытый)

opendkim-genkey -D /etc/opendkim/keys/ -d hostname.ru -s mail

Сгенерируются закрытый (mail.private) и открытый (mail.txt) ключи.

Если все эти варианты вызывают ошибки в CentOS, то используйте эту команду

openssl genrsa -out mail.private 1024 && openssl rsa -in mail.private -pubout > mail.txt

В результате получаем 2 ключа

Первый ключ, закрытый, нужно сохранить в /etc/mail/dkim.key. Обязательно задаём права для чтения только владельцем (root), иначе opendkim не запустится:

chmod 0600 /etc/mail/dkim.key

Этот закрытый ключ будет подписывать всю исходящую почту от указанных доменов в конфиге. Чтобы удалённый почтовый сервис мог проверить эту подпись, мы должны указать открытый ключ в DNS.

Для этого создаём новый домен mail._domainkey и добавляем в него только одну TXT запись:

v=DKIM1;k=rsa;t=s;p=здесь открытый ключ

Например

_domainkey.hostname.ru. TXT "t=s; o=~;"
mail._domainkey.hostname.ru. TXT "k=rsa\; t=s\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQmO9AuWRbWPgl/jzDPQodrLfFLFqYYi6bCBnsTOCOJQrFbGgiR1C01j4zLw8XgG3rQ0WAaeg6Z/y39Ah7IONfs5gQuK6eGZMmYwIsZyz2dQoUDmDLCb1WygpkrqsCbyPw3SWGihM4iChOwo7Ovo2mTOWOf5ejeZcP2qqNb9nRMQIDAQAB"

Такие поддомены нужно создать для всех указанных доменов. Правильность указания можно проверять в консоли вот так:

dig mail._domainkey.modx-test.com TXT

Вот мой открытый ключ. Имейте в виду, что записи в DNS обновляются далеко не сразу.

Теперь осталось только заставить sendmail отдавать исходящие письма на подпись. Для этого добавляем в конец файла /etc/mail/sendmail.mc, строку:

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl

Конвертируем этот файл в конфиг

m4 sendmail.mc > sendmail.cf

И перезапускаем сервисы

service opendkim restart
service sendmail restart

Консольная команда netstat -nlp должна показывать, что sendmail и opendkim слушают свои порты, то есть — работают.

Проверяем подпись

Для проверки работы DKIM, нужно отправить письмо на сервис, который его проверяет (а это почти все публичные почтовики), например — на Яндекс.

Это можно сделать из консоли:

echo -e "To: вашемаил@yandex.ru\From: noreply@вашдомен.ru\Subject: Test\Test\" | sendmail -bm -t -v

Настройка SPF

Есть еще одна технология, попроще — это SPF.

Она позволяет указать в DNS, какие серверы могут отправлять посту от имени вашего домена. Делается это так же записью TXT, но уже не поддомену, а самому основному домену, или записи @ (если есть):

v=spf1 ip4:111.111.111.111 ~all

где 111.111.111.111 , это айпи Вашего сервера

Micro
Author: Micro

///

Поделиться в социальных сетях
0 0 голоса
Рейтинг статьи
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии