Настройка DKIM.
DKIM (DomainKeys Identified Mail) — это метод e-mail аутентификации, основанный на проверке подлинности цифровой подписи. DKIM необходим для того, чтобы почтовые сервисы проверяли отправителя и защищали получателя письма от мошеннических рассылок, которые производятся с подменой адреса отправителя.
Метод предусматривает шифрование заголовков исходящих сообщений с помощью закрытого ключа домена, и добавление открытой версии ключа в записи DNS домена, доступного всем. MTA сервера-получателя запрашивает для расшифровки заголовков входящих сообщений открытый ключ у DNS-сервера отправителя, а затем проверяет, действительно ли сообщение отправлено от заявленного источника.
Встроенные в Zimbra возможности DKIM стали доступны начиная с версии 8.0. Настройка состоит из двух этапов.
Генерация ключей и селектора.
Добавляем данные DKIM к домену, у которого еще нет существующей конфигурации DKIM. Если реализована многосерверная схема развертования Zimbra, то данные действия проводим на сервере, где установлена роль OpenDKIM (как правило это сервер с ролью MTA)
# su zimbra $ /opt/zimbra/libexec/zmdkimkeyutil -a -d example.com
На выходе получаем что-то типа этого:
DKIM Data added to LDAP for domain example.com with selector ECAC22D2-DCA2-11E6-BA30-B554729FE32A Public signature to enter into DNS: ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5OCY0sX04ziF+sOHt/1kq3A7iAzAjBjb4JteaoFzu1q2uBOiQS0uyaFeY6CgSgRRbvPnq8cWLG/XMU0tM9gSGtgtWDmHOs6/+QgKp6zRmetfsyABA2Y2U+XJlVURUE5ai3KIA/njt7IGZ5yeFsdZIKmhOCAOPGCovq10xkZXHdjRwiqxbCYGXv2m3o74BcWtOLPfEvexD5PYx" "aTWFbelJpGlDN7WdBCE+ObpLGkJ9co/1sVOcd3c9SHfPq3jcBAFm7oPX2ak7Fb7cslVK77lA2hBgMYqI2Sh+T64o6R33dU++Ej7CuImmv7PAqVUn5MjYr05t3LK9dwWM8Cm6aJ/QIDAQAA" ) ; ----- DKIM key ECAC22D2-DCA2-11E6-BA30-B554729FE32A for example.com
Запоминаем (коипруем в блокнот) строки после фразы "Public signature to enter into DNS:" Данную запись в дальнейшем нам нужно будет вставить в DNS зону соответствующего домена.
Также можно обновить DKIM данные для домена:
$ /opt/zimbra/libexec/zmdkimkeyutil -u -d example.com s
Удалить DKIM данных для домена:
$ /opt/zimbra/libexec/zmdkimkeyutil -r -d example.com
Извлечь сохраненные данных DKIM для домена:
$ /opt/zimbra/libexec/zmdkimkeyutil -q -d example.com
Внесение записей в зону DNS.
На предыдущем шаге мы запомнили строку, выданную при генерации ключей. Теперь эту строку необходимо внести в соответствующую зону DNS. Выгдядеть это будет примерно следующим образом:
$ORIGIN example.com. ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5OCY0sX04ziF+sOHt/1kq3A7iAzAjBjb4JteaoFzu1q2uBOiQS0uyaFeY6CgSgRRbvPnq8cWLG/XMU0tM9gSGtgtWDmHOs6/+QgKp6zRmetfsyABA2Y2U+XJlVURUE5ai3KIA/njt7IGZ5yeFsdZIKmhOCAOPGCovq10xkZXHdjRwiqxbCYGXv2m3o74BcWtOLPfEvexD5PYx" "aTWFbelJpGlDN7WdBCE+ObpLGkJ9co/1sVOcd3c9SHfPq3jcBAFm7oPX2ak7Fb7cslVK77lA2hBgMYqI2Sh+T64o6R33dU++Ej7CuImmv7PAqVUn5MjYr05t3LK9dwWM8Cm6aJ/QIDAQAA" ) ; ----- DKIM key ECAC22D2-DCA2-11E6-BA30-B554729FE32A for example.com
После внесения записи, перечитываем файл зоны и проверяем результат выполнения команды:
# host -t txt SELECTOR._domainkey.DOMAIN
где SELECTOR
- набор символов, предшествующий ._domainkey
в записи TXT. Например:
# host -t txt ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey.example.com ns1.example.com
Если ключ извлекается используйте /opt/zimbra/common/sbin/opendkim-testkey
, чтобы убедиться, что открытый ключ соответствует закрытому.
$ opendkim-testkey -d example.com -s ECAC22D2-DCA2-11E6-BA30-B554729FE32B -x /opt/zimbra/conf/opendkim.conf
Если при выполнении данной команды получили ошибку:
opendkim-testkey: /opt/zimbra/conf/opendkim.conf: configuration error at line 0
то это означает, что файл /opt/zimbra/conf/opendkim.conf отсутствует и его необходимо создать командой:
$ zmprov ms `zmhostname` +zimbraServiceEnabled opendkim ./libexec/configrewrite opendkim
Если возникнет необходимость отозвать ключ подписи DKIM, установите пустой параметр «р=» тег в записи TXT.
По умолчанию создается 1024-битный ключ (зависит от версии ZCS), изменить размер можно параметром -b.
Sender Policy Framework (SPF)
SPF (Sender Policy Framework) — расширение для протокола отправки электронной почты через SMTP. SPF определен в RFC 7208. SPF-запись защищает от подделки вашего домена и позволяет предотвратить попадание в спам писем, отправленных с ваших адресов. SPF настраивается для адреса, используемого в envelope-from (SMTP конверте).
С помощью spf-записи владелец домена может указать список серверов, имеющих право отправлять email-сообщения для домена. В общем случае порядок следующий:
[версия] [механизмы] [-all | ~all | redirect]
Версия всегда spf1, модификаторы сообщают, кто может посылать почту:
- a, mx — сервера из DNS записей A или MX соответственно,
- ip4, ip6 — адрес сервера (можно указывать подсети, например: ip4:1.2.3.4/24),
- include — взять данные с другого адреса
Параметры:
- -all означает не принимать почту, если проверка механизма не прошла,
- ~all если проверка не прошла, то действовать на усмотрение сервера получателя.
- redirect означает забрать правила с другого сервера.
Рассмотрим примеры добавления TXT записей в соответствующую зону DNS.
Пример 1.
example.com. IN TXT «v=spf1 ip4:62.220.58.72 a mx -all»
Для домена example.com принимать письма, отправленные с ip-адреса 62.220.58.72, так же принимать с серверов указанных в A и MX записях, сообщения с других серверов должны быть отклонены.
Пример 2.
example.com. IN TXT «v=spf1 redirect:example.org»
Получить правила с домена example.com.
Пример 3.
example.com. IN TXT «v=spf1 include:_spf.google.com -all»
Получать письма только с smtp-серверов компании Google.
Domain-based Message Authentication, Reporting and Conformance (идентификация сообщений, создание отчётов и определение соответствия по доменному имени) или DMARC — это техническая спецификация, созданная группой организаций для борьбы со спамерами, подделывающими адреса отправителей. Она основана на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя.
Таким образом почтовый сервер сам решает, хорошее сообщение или плохое и действует согласно DMARC записи. Благодаря настройке DMARC владельцы доменов могут создавать правила обработки писем, которые поступили с доменов, не прошедших авторизацию.
После создания записей SPF и DKIM необходимо настроить проверку DMARC, добавив в DNS запись типа TXT (аналогично SPF). Параметры могут быть следующими:
Тег | Обязательно | Назначение | Пример |
v | Да | Версия протокола | v=DMARC1 |
p | Да | Правило для домена | p=quarantine |
pct | Нет | Какой процент сообщений фильтровать | pct=20 |
rua | Нет | Куда присылать отчеты | rua=mailto:Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. |
sp | Нет | Правила для субдоменов | sp=reject |
aspf | Нет | Режим проверки соответствия для записей SPF | aspf=r |
Более подробно можно узнать в реестре тегов DMARC.
Пример готовой DNS зоны TXT записями для DKIM, SPF и DMARC:
$ORIGIN .
$TTL 3600
example.com IN SOA example.com. hostmaster.example.com. (
2017011011 ; serial
3600 ; refresh [1h]
600; retry [10m]
1209600 ; expire [14d]
3600 ; min TTL [1h]
)
NS ns1.example.com.
MX 10 ns1.example.com.
A 62.220.58.71
IN TXT "v=spf1 a mx ip4:62.220.58.71 ~all"
$ORIGIN example.com.
ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5OCY0sX04ziF+sOHt/1kq3A7iAzAjBjb4JteaoFzu1q2uBOiQS0uyaFeY6CgSgRRbvPnq8cWLG/XMU0tM9gSGtgtWDmHOs6/+QgKp6zRmetfsyABA2Y2U+XJlVURUE5ai3KIA/njt7IGZ5yeFsdZIKmhOCAOPGCovq10xkZXHdjRwiqxbCYGXv2m3o74BcWtOLPfEvexD5PYx"
"aTWFbelJpGlDN7WdBCE+ObpLGkJ9co/1sVOcd3c9SHfPq3jcBAFm7oPX2ak7Fb7cslVK77lA2hBgMYqI2Sh+T64o6R33dU++Ej7CuImmv7PAqVUn5MjYr05t3LK9dwWM8Cm6aJ/QIDAQAB" ) ; ----- DKIM key ECAC22D2-DCA2-11E6-BA30-B554729FE32B for example.com
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript."
ns1 IN A 62.220.58.71
www 86400 IN CNAME example.com.
После того, как внесены все изменения на почтовом сервере и в зонах DNS, после того как все изменения зон распространены, можно пройти простенькую проверку почтового сервера на сайте тестировыания.