Версия для печати
Вторник, 16 октября 2018 15:39

Пробиваем SPAM фильтры - DKIM, SPF и DMARC в Zimbra Collaboration Suite

Автор
Оцените материал
(11 голосов)

Антиспам фильтры на почтовых серверах продвинулись далеко вперед. Теперь зачастую недостаточно просто поставить почтовый сервер и настроить MX запись в соответствующей зоне DNS. Если при попытке отправить сообщение на почтовые сервера Gmail вы вдруг получили ошибку типа «Our system has detected that this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked.», то это почти всегда значит, что на вашем почтовом сервере не настроены DKIM, SFP и DMARC. Крупные почтовые серверы (Gmail, mail.ru, Яндекс и т.д.) требуют наличие данных записей. В этой статье будет показано, как правильно настроить функционал почтового сервера Zimbra Collaboration Suite для корректного прохождения почтовых сообщений через современныые спам-фильтры.

Настройка DKIM.

Настройка SPF.

Настройка DMARC.

 

Настройка DKIM.

DKIM (DomainKeys Identified Mail) — это метод e-mail аутентификации, основанный на проверке подлинности цифровой подписи. DKIM необходим для того, чтобы почтовые сервисы проверяли отправителя и защищали получателя письма от мошеннических рассылок, которые производятся с подменой адреса отправителя.

Метод предусматривает шифрование заголовков исходящих сообщений с помощью закрытого ключа домена, и добавление открытой версии ключа в записи DNS домена, доступного всем. MTA сервера-получателя запрашивает для расшифровки заголовков входящих сообщений открытый ключ у DNS-сервера отправителя, а затем проверяет, действительно ли сообщение отправлено от заявленного источника.

Принцип работы технологии DKIM

Встроенные в 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

С помощью 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.

Начало

Настройка DMARC.

Domain-based Message Authentication, Reporting and Conformance (идентификация сообщений, создание отчётов и определение соответствия по доменному имени) или DMARC — это техническая спецификация, созданная группой организаций для борьбы со спамерами, подделывающими адреса отправителей. Она основана на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя.

Таким образом почтовый сервер сам решает, хорошее сообщение или плохое и действует согласно 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, после того как все изменения зон распространены, можно пройти простенькую проверку почтового сервера на сайте тестировыания.

Начало

Дополнительная информация

Прочитано 13188 раз Последнее изменение Пятница, 19 октября 2018 10:25
Андрей Иванов

Последнее от Андрей Иванов

Авторизуйтесь, чтобы получить возможность оставлять комментарии