Улучшение безопасности электронной почты: настройка SPF, DKIM, DMARC и почтовых протоколов POP3 и IMAP4
Хотите обеспечить безопасность вашей электронной почты? В этой статье мы расскажем вам, как настроить DNS записи SPF, DKIM, DMARC и почтовые протоколы POP3 и IMAP4, а также что нужно делать чтобы ваши письма дошли до адресата и не попали в спам. Следуя нашему подробному руководству, вы сможете улучшить защиту вашей почты и защитить себя от спама и фишинга.

- Шаг 1. Как создать SPF запись
- Шаг 2. Как создать DKIM запись
- Шаг 3. Как добавить DMARC запись
- Шаг 4. Как настроить почтовые службы IMAP и POP3 в Exchange Server
- Шаг 5. Проверка служб POP3 и IMAP
- Ошибки
- Заключение
- Вопросы и ответы
- Комментарии
Для того чтобы ваши письма на пути к получателю, прошли проверку и не попали в спам, нужно добавить записи SPF, DKIM и DMARC в ваш DNS-хостинг.
SPF, DKIM и DMARC — это базовые настройки, которые обязательно нужно сделать перед запуском почтового сервера. Данные записи не дают мошенникам рассылать вредоносные письма от вашего имени, и при их отсутствии, сообщение может вовсе не дойти к адресату.

Как добавить SPF, DKIM, DMARC и настроить POP3 и IMAP4 на Exchange Server 2019
Шаг 1. Как создать SPF запись
Запись SPF (Sender Policy Framework) – обеспечивает взаимопонимание между почтовыми серверами отправителя и получателя. Она содержит информацию о том, каким почтовым серверам разрешено отправлять почту от вашего имени.

Без наличия SPF-записи многие почтовые сервисы могут отправлять всю почту, отправленную с почтовых ящиков домена, в спам, вне зависимости от её содержимого. SPF-запись публикуется на DNS-серверах, обслуживающих домен.
Перейдите в панель управления вашего DNS-хостинга. И создайте txt запись, заполнив все эти поля. Запись содержит такие ключи: версию spf, IP-адрес домена, v=spf1 — версия SPF.

- Ключ – a — задает правила к конкретному домену, производя сравнение IP-адреса отправителя с IP-адресом, указанным в А-записях домена.
- mx — включает в себя все адреса серверов, указанные в MX-записях домена.
- Значок тильды ~ — это отклонение. Письмо будет принято, но будет помечено как спам.
- all — все адреса, не указанные в записи.
Дополнительные теги можно будет установить позже, а сейчас жмем – Сохранить.
Параметры, определяющие поведение для указанных ключей:
Параметр | Описание |
---|---|
+ | Параметр, который указывает на прием писем (Pass). Устанавливается по умолчанию, если нет других. |
– | Отклонить (Fail). Письмо не будет принято. |
~ | «Мягкое» отклонение (SoftFail). Письмо будет принято, но будет помечено как спам. |
? | Нейтральное восприятие отправителя. |
Ключи для определения узлов:
Правило | Описание |
---|---|
mx | Включает в себя все адреса серверов, указанные в MX-записях домена. |
ip4 | Указание конкретных IP-адресов. |
ptr | Проверка PTR-записи на наличие указанного домена. |
exists | Проверка работоспособности домена. Эта проверка может дать положительный ответ, если используются адреса вида 127.0.0.1, что делает её использование сомнительным. |
a | Применение правил к конкретному домену путём сравнения IP-адреса отправителя с IP-адресом, указанным в A-записях домена. |
include | Использование разрешённых узлов, указанных в SPF-записях другого домена. |
redirect | Правило указывает, что SPF-политика этого домена используется с другого домена. Аналог include, но с игнорированием записей текущего домена. |
all | Все адреса, не указанные в записи. |
Шаг 2. Как создать DKIM запись
Вторая ступень защиты при передаче между почтовыми серверами это – DKIM (DomainKeys Identified Mail). С его помощью к исходным сообщениям электронной почты добавляется цифровая подпись. Получатель использует эту подпись для проверки подлинности писем.

Сервер получателя отправляет DNS-запрос и получает публичный ключ, который размещается в DNS-записи. Этот ключ он использует для проверки письма. Если ключи совпадают письмо доходит до адресата, иначе попадает в Спам.
По умолчанию MS Exchange Server не поддерживает DKIM. Для его настройки на Exchange нужно установить сторонний агент транспорта – Exchange DKIM Signer.
https://github.com/Pro/dkim-exchange/releases/tag/v3.4.0
https://www.collaborationpro.com/exchange-2016-2019-implementing-dkim/

После установки нужно его настроить. Запустите приложение, в открывшемся окне нажмите – Configure, здесь убедитесь, что агент – Exchange DKIM Signer имеет самый низший приоритет (стоит самым последним в списке). Это нужно для того, чтобы письма подписывались на самом последнем этапе, после всех возможных модификаций, которые сделают остальные агенты транспорта.

На закладке «DKIM Settings» указывается, какие поля будут подписаны. По умолчанию это: From, Subject, To, Date, Message-ID.

Настройка параметров домена выполняется вкладке – Domain Settings. Жмем Add, указываем имя домена, селектор (имя DNS записи). Здесь можно либо сгенерировать ключ, либо указать его расположение. Для создания публичного ключа нажмите – Generate new key, после чего он появится в этом окне.

Затем перейдите в панель управления хостингом домена, и создайте txt запись, задайте ему имя mail._domainkey, и в поле – Значение, вставьте ваш публичный ключ. После внесенных настроек, в программе нажимаем кнопку «Save domain». Настройки применяются автоматически.

Шаг 3. Как добавить DMARC запись
Ну и наконец разберем что такое DMARC (Domain-based Message Authentication, Reportingand Conformance). Это следующий этап защиты после SPF и DKIM. Эта запись определяет, что делать с сообщениями, если они не прошли аутентификацию с помощью SPF и DKIM. Это правило, которое устанавливается для писем, отправленных от вашего имени.

Перед установкой DMARC важно убедиться, что SPF и DKIM прописаны корректно, иначе это может привести к фильтрации писем от вас. Для настройки DMARC, в панели управления вашего DNS-хостинга, создайте txt запись _dmarc.

Где нужно указать как минимум версию механизма и политику. При первой настройке в качестве политики рекомендуется указать – none (не делать ничего, кроме отправки отчётов).
В дальнейшем можно будет изменить запись ужесточив ее дописав нужные теги.
Tag | Описание |
---|---|
v | Версия DMARC. |
p |
Правило для домена. Может принимать одно из значений:
|
sp | Правило для субдоменов. Может принимать такие же значения, как и p. |
aspf и adkim |
Позволяют проверять соответствие записям SPF и DKIM. Могут принимать значения:
|
pct | Количество писем, подлежащих фильтрации, в процентах. |
ruf | Определяет почту, на которую нужно отправлять отчёты о письмах, не прошедших проверку DMARC. |
fo |
Определяет условия генерации отчётов. Может принимать значения:
|
На этом настройка электронной почты завершена, теперь для проверки отправьте тестовое письмо со своего электронного ящика.
Шаг 4. Как настроить почтовые службы IMAP и POP3 в Exchange Server
Теперь переходим к настройке почтовых служб POP3 и IMAP4. По умолчанию в Exchange службы POP3 и IMAP4 отключены. Для настройки подключения клиентов по IMAP и POP3 нужно их запустить и настроить автоматический запуск.
Откройте – Services, найдите службу – Microsoft Exchange IMAP4, установите тип запуска – Автоматически и запустите службу, а затем Apply и Ok.

Далее те же манипуляции проводим со службой – Microsoft Exchange IMAP4 Backend, Microsoft Exchange POP3 и Microsoft Exchange POP3 Backend. После запуска служб нужно настроить сертификат. Откройте панель управления Exchange, перейдите в раздел – Servers – Certificates.

Откройте SSL сертификат, кликнув по нему два раза левой кнопкой мыши, перейдите во вкладку – Services и установите отметки напротив – IMAP и POP, а затем Save.

Далее нужно связать домен со службами pop3 и imap. Откройте – Пуск, Microsoft Exchange Server – Exchange Management Shell и выполните команду:
Вводим первую команду для службы POP3, здесь нужно указать внешний домен:порт 995 и SSL, затем еще раз домен с 110 портом, и в конце указываем имя сертификата. Открываем сертификат в панели управления и копируем имя.
Set-PopSettings -ExternalConnectionSettings “mail.hetmansoftware.com:995:SSL”,“mail.hetmansoftware.com:110:TLS” -x509CertificateName hetmansoftware.com

После выполнения команды нужно перезапустить службу POP3, в окне служб, кликните по службе правой кнопкой мыши – Restart. И вторую службу POP3 backend.

Далее выполните команду чтобы связать службу – IMAP.
Set-ImapSettings -ExternalConnectionSettings “mail.hetmansoftware.com:993:SSL”,“mail.hetmansoftware.com:143:TLS” -x509CertificateName hetmansoftware.com
После перезапустите службу. IMAP и IMAP backend.
На следующем шаге нужно проверить и если нужно открыть в вашей сети порты для данных служб: 995, 993, 110 и 143. Откройте настройки сети и откройте порты для Exchange сервера.

Следующее что нужно сделать – изменить параметры коннектора приема. В панели управления перейдите в раздел - Mail flow – receive connectors – Client Frontend exchange.

Откройте вкладку – scoping, FQDN – измените домен с внутреннего на внешний – mail.hetmansoftware.com. и нажмите Save.

Далее нужно указать сертификат, который будет использоваться для шифрования подключений SMTP. Для начала нужно узнать ID сертификата, который хотим связать со службами.
Откройте Exchange Shell и выполните такую команду:
Get-exchangecertificate
Скопируйте значение сертификата – Thumbprint.

Затем укажите сертификат, используемый для шифрования аутентифицированных клиентских подключений SMTP. Для этого нужно выполнить три команды.

Выполните первую команду:
$TLSCert = Get-ExchangeCertificate -Thumbprint <ThumbprintValue>
, в конце добавьте это значение сертификата.
После вторую команду:
$TLSCertName = "<I>$($TLSCert.Issuer)<S>$($TLSCert.Subject)"
И затем третью команду:
Get-ReceiveConnector -Identity "Client Frontend*" | Set-ReceiveConnector -TlsCertificateName $TLSCertName
Чтобы убедиться, что вы указали сертификат, который используется для шифрования аутентифицированных клиентских подключений SMTP, выполните такую команду:
Get-ReceiveConnector -Identity "Client Frontend*" | Format-List Name,Fqdn,TlsCertificateName

В результате вы получите имя сертификата, здесь должно быть имя сертификата, который вы указали. На следующем шаге нужно проверить включены ли данные протоколы на уровне почтовых ящиков, если они отключены в почтовых ящиках, пользователи не смогут настраивать свои профили в outlook, для использования POP3 и IMAP4. По умолчанию они должны быть включены.
Для проверки откройте панель управления Exchange, перейдите в раздел – recepients – mailboxes, откройте нужную учетную запись (почтовый ящик) – и перейдите в раздел – mailbox features, здесь проверьте установлено ли значение – Enable, для данных служб.

А чтобы проверить работу служб выполните команду:
-Test

Test-PopConnectivity -ClientAccessServer expc -Lightmode -MailboxCredential (Get-Credential)
Вводим пароль. И вот успешный результат
Далее выполните такую же команду для IMAP
Test-ImapConnectivity -ClientAccessServer expc -Lightmode -MailboxCredential (Get-Credential)
Пароль от учетной записи. Данная конфигурация тоже работает.
Шаг 5. Проверка служб POP3 и IMAP
Чтобы убедиться, что вы включили и настроили IMAP4 на сервере Exchange, выполните следующие процедуры:
На сайте Microsoft вы можете воспользоваться специальным сервисом, который проверит протоколы POP3 и IMAP. https://testconnectivity.microsoft.com/tests/Imap/input

Заполняем все обязательные поля и жмем – Выполнить проверку. Проверка прошла успешно, но с предупреждением. Дело в том, что Microsoft не может проверить цепочку сертификата. Возможно, на сервере отключена или неправильно настроена данная функция.
Что касается SSL сертификата то я в нем уверен на 100 процентов, поэтому можно не обращать внимание на данное предупреждение. Служба работает нормально.
Далее проверим POP3 протокол. https://testconnectivity.microsoft.com/tests/pop/input

Все делаем по тому же принципу, заполняем поля и жмем – Выполнить проверку. Проверка прошла успешно.
Теперь проверим как ходит почта. В outlook настроим соединение через IMAP или POP3 протокол. И отправим тестовое письмо.

Теперь почта не попадает в спам и дошла прямо до адресата без каких-либо ошибок.
Ошибки
А сейчас давайте разберем несколько ошибок которые могут возникать при неправильной настройке или отсутствии DNS-записей.
Ошибка | Описание |
---|---|
550 5.7.1 | Сообщение отклонено, так как проверка SPF не пройдена. Это может указывать на то, что IP-адрес отправителя не включен в запись SPF для домена отправителя. |
Message Failed DMARC Compliance | Сообщение не прошло проверку DMARC. Это может быть вызвано неудачной проверкой SPF и/или DKIM, либо несоответствием политики DMARC, установленной для домена. |
DKIM-Result: fail (bad signature) | Проверка DKIM не удалась из-за плохой подписи. Это может указывать на то, что DKIM-подпись в сообщении некорректна или была изменена во время передачи. |

Ошибка 550 SPF Check Failed. Или если на сервере Microsoft Exchange установлено приложение от спама ошибка может иметь такой вид:
SMTP; 550 5.7.1 550 Message rejected because SPF check failed.
Данная ошибка означает, что домен отправителя имеет неправильную запись SPF или что отправитель использует поддельный почтовый адрес.
В том случае если DNS-запись - SPF отсутствует, неправильно настроена или отключена при отправке письма, на внешний почтовый адрес, вы можете получить сообщение с такой ошибкой: mx.google.com отклонил ваши сообщения на следующие адреса электронной почты.
Для ее устранения добавите SPF запись в вашем DNS-хостинге.

При проверке записи DMARC может наблюдаться следующая ошибка:
Message Failed DMARC Compliance
Message Failed Verification Tests & is not DMARC Compliant
Эта ошибка означает, что сообщение не прошло проверку подлинности и не соответствует требованиям DMARC. Ошибка соответствия DMARC означает, что проверочные тесты SPF и DKIM не пройдены. Эти сбои могут негативно повлиять на доставку электронной почты, поскольку почтовые ящики не могут проверить подлинность вашей электронной почты.

Так выглядит ошибка связанная с DKIM записью:
"DKIM-Result: fail (bad signature)"
Обычно эта ошибка появляется во время начальной настройки DKIM, после обновления приложения или после миграции сервера.
Зачастую проблема вызвана ошибками в написании тегов или при настройке открытого ключа. При отсутствии записи DKIM или неправильной ее настройке, в полученном письме вы увидите предупреждение, это же касается и записи DMARC. Если письмо выглядит следующим образом измените настройки соответствующей записи.
Заключение
Итак, мы рассмотрели доступный каждому администратору простой и не требующий заморочек набор штатных средств, помогающих усилить безопасность почтовых серверов Microsoft. Правильно настроенные записи DKIM-, SPF- и DMARC позволят по максимуму снизить поток спама, рассылок, и различных вредоносных писем. Я показал только базовую настройку и принцип работы, для полноценной защиты нужны более точные настройки.
SPF может принимать следующие значения:
1. + (положительное): указывает, что почтовый сервер, который указан в заголовке SPF-записи, разрешен для отправки сообщений от домена.
2. - (отрицательное): указывает, что почтовый сервер, который указан в заголовке SPF-записи, не разрешен для отправки сообщений от домена.
3. ~ (неуверенность): указывает, что почтовый сервер, который указан в заголовке SPF-записи, может или не может быть использован для отправки сообщений от домена.
4. ? (вопрос): указывает, что SPF-запись недоступна.
5. * (звездочка): указывает, что SPF-запись не ограничивает связь с доменом.