Настройка DKIM, SPF и DMARC в Zimbra Collaboration Suite

    Если при попытке отправить сообщение на почтовые сервера 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.

    image



    Настройка DKIM в Zimbra


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

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

    image

    DKIM стал доступен с версии Zimbra 8.0. Настройка подписи состоит из двух этапов:

    Первый этап: генерация ключей и селектора


    Добавляем данные DKIM к домену, у которого еще нет существующей конфигурации DKIM:

    # 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


    Также можно обновить DKIM данные для домена:

    $ /opt/zimbra/libexec/zmdkimkeyutil -u -d example.com

    Удалить DKIM данных для домена:

    $ /opt/zimbra/libexec/zmdkimkeyutil -r -d example.com

    Извлечь сохраненные данных DKIM для домена:

    $ /opt/zimbra/libexec/zmdkimkeyutil -q -d example.com

    Второй этап: обновление DNS-записей


    Публичный ключ нужно добавить как TXT-запись в домен:

    $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


    Обновите DNS, и проверьте результат выполнения команды:

    # host -t txt SELECTOR._domainkey.DOMAIN

    Например:

    # 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 означает забрать правила с другого сервера.

    Рассмотрим примеры:

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



    После создания записей SPF и DKIM необходимо настроить проверку DMARC, добавив в DNS запись типа TXT (аналогично SPF). Параметры могут быть следующими:



    Более подробно можно узнать в реестре тегов DMARC.

    Правило для домена (что делать серверу-получателю, если проверка на spf и dkim не прошла) может быть одним из трех:

    • none — просто регистрировать сообщения для отчета, с самими сообщения ничего не делать;
    • quarantine – помечать такие сообщения как спам;
    • reject – отклонить получение сообщения на уровне SMTP.

    Если вы хотите получать отчеты не забудьте указать адрес электронной почты в теге rua:

    _dmarc.example.com IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@example.com"

    Результат добавления DNS-записей


    Ниже показан пример dns записий, для зоны example.com:

    $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:postmaster@example.com"
    ns1 IN A 62.220.58.71
    www 86400 IN CNAME example.com.


    По всем вопросам, связанными c Zextras Suite вы можете обратиться к Представителю компании «Zextras» Катерине Триандафилиди по электронной почте katerina@zextras.com
    Zextras
    Цифровое рабочее место Zextras на базе Zimbra OSE

    Комментарии 5

      0
      > MTA сервера-получателя запрашивает для расшифровки заголовков

      Насколько понимаю, не для расшифровки, а для проверки цифровой подписи (которая и передаётся в DKIM-заголовке).
        0
        Туда же:

        > SPF-запись защищает от подделки вашего домена и позволяет предотвратить попадание в спам писем, отправленных с ваших адресов.

        SPF содержит указание, с каких IP адресов / DNS-записей письмо для конкретного домена может приходить легитимно (упрощая). В общем случае не защищает от подделки домена (я так понимаю, имеется в виду адрес отправителя).

        Формулировки бы отполировать…
          0
          Спасибо, поправим.
        0
        А сам ZCS поддерживает DMARC? Будут ли отброшены письма если у чужого домена указано «reject», рассылаются ли отчеты?
          0
          Еще бы кто расказал как нормально настроить SNI на Zimbra для smtps. imaps и pop3s добился более менее нормального функционирования, а вот для smtps пока не нашел простого решения.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое