Улучшение безопасности электронной почты: настройка SPF, DKIM, DMARC и почтовых протоколов POP3 и IMAP4
Хотите обеспечить безопасность вашей электронной почты? В этой статье мы расскажем вам, как настроить DNS записи SPF, DKIM, DMARC и почтовые протоколы POP3 и IMAP4, а также что нужно делать чтобы ваши письма дошли до адресата и не попали в спам. Следуя нашему подробному руководству, вы сможете улучшить защиту вашей почты и защитить себя от спама и фишинга.
![Улучшение безопасности электронной почты: настройка SPF, DKIM, DMARC и почтовых протоколов POP3 и IMAP4 Улучшение безопасности электронной почты: настройка SPF, DKIM, DMARC и почтовых протоколов POP3 и IMAP4](/ru/pic/blog/a662/how-to-add-spf-dkim-dmarc-dns-records-and-configure-pop3-and-imap4-mail-protocols.jpg)
- Как создать SPF запись
- Как создать DKIM запись
- Как добавить DMARC запись
- Как настроить почтовые службы IMAP и POP3 в Exchange Server
- Проверка служб POP3 и IMAP
- Ошибки
- Заключение
- Вопросы и ответы
- Комментарии
Для того чтобы ваши письма на пути к получателю, прошли проверку и не попали в спам, нужно добавить записи SPF, DKIM и DMARC в ваш DNS-хостинг.
SPF, DKIM и DMARC — это базовые настройки, которые обязательно нужно сделать перед запуском почтового сервера. Данные записи не дают мошенникам рассылать вредоносные письма от вашего имени, и при их отсутствии, сообщение может вовсе не дойти к адресату.
![Как добавить SPF, DKIM, DMARC и настроить POP3 и IMAP4 на Exchange Server 2019](/pic/youtube/youtube-1280.jpg)
Как добавить SPF, DKIM, DMARC и настроить POP3 и IMAP4 на Exchange Server 2019
Как создать SPF запись
Запись SPF (Sender Policy Framework) – обеспечивает взаимопонимание между почтовыми серверами отправителя и получателя. Она содержит информацию о том, каким почтовым серверам разрешено отправлять почту от вашего имени.
![Запись SPF - Sender Policy Framework Запись SPF - Sender Policy Framework](/ru/pic/blog/a662/ru-01-spf.jpg)
Без наличия SPF-записи многие почтовые сервисы могут отправлять всю почту, отправленную с почтовых ящиков домена, в спам, вне зависимости от её содержимого. SPF-запись публикуется на DNS-серверах, обслуживающих домен.
Перейдите в панель управления вашего DNS-хостинга. И создайте txt запись, заполнив все эти поля. Запись содержит такие ключи: версию spf, IP-адрес домена, v=spf1 — версия SPF.
![Создаем SPF запись Создаем SPF запись](/ru/pic/blog/a662/ru-02-spf.jpg)
Ключ – a — задает правила к конкретному домену, производя сравнение IP-адреса отправителя с IP-адресом, указанным в А-записях домена.
mx — включает в себя все адреса серверов, указанные в MX-записях домена.
Значок тильды ~ — это отклонение. Письмо будет принято, но будет помечено как спам.
all — все адреса, не указанные в записи.
Дополнительные теги можно будет установить позже, а сейчас жмем – Сохранить.
Параметры, определяющие поведение для указанных ключей:
- + — параметр, указывающий на приём писем (Pass). Устанавливается по умолчанию, если нет других.
- – — отклонить (Fail). Письмо не будет принято.
- ~ — «мягкое» отклонение (SoftFail). Письмо будет принято, но будет помечено как спам.
- ? — нейтральное восприятие отправителя.
Ключи для определения узлов:
- mx — включает в себя все адреса серверов, указанные в MX-записях домена.
- ip4 — указание конкретных IP.
- ptr — проверка PTR-записи на наличие указанного домена.
- exists — проверка работоспособности домена. Важно учитывать, что эта проверка также будет давать положительный ответ, если используются адреса вида 127.0.0.1 и т. д., из-за чего её использование довольно сомнительно.
- a — применение правил к конкретному домену, производя сравнение IP-адреса отправителя с IP-адресом, указанным в А-записях домена.
- include — использование разрешённых узлов, указанных в SPF-записях другого домена.
- redirect — правило указывает на то, что SPF-политика, используемая для этого домена, указана в другом домене. В некоторой степени аналог include с игнорированием записей текущего домена.
- all — все адреса, не указанные в записи.
Как создать DKIM запись
Вторая ступень защиты при передаче между почтовыми серверами это – DKIM (DomainKeys Identified Mail). С его помощью к исходным сообщениям электронной почты добавляется цифровая подпись. Получатель использует эту подпись для проверки подлинности писем.
![DKIM - DomainKeys Identified Mail DKIM - DomainKeys Identified Mail](/ru/pic/blog/a662/ru-03-dkim.jpg)
Сервер получателя отправляет 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/
![Скачать Exchange DKIM Signer Скачать Exchange DKIM Signer](/ru/pic/blog/a662/ru-04-dkim.jpg)
После установки нужно его настроить. Запустите приложение, в открывшемся окне нажмите – Configure, здесь убедитесь, что агент – Exchange DKIM Signer имеет самый низший приоритет (стоит самым последним в списке). Это нужно для того, чтобы письма подписывались на самом последнем этапе, после всех возможных модификаций, которые сделают остальные агенты транспорта.
![Запуск Exchange DKIM Signer Запуск Exchange DKIM Signer](/ru/pic/blog/a662/ru-05-dkim.jpg)
На закладке «DKIM Settings» указывается, какие поля будут подписаны. По умолчанию это: From, Subject, To, Date, Message-ID.
![Вкладка DKIM Settings Вкладка DKIM Settings](/ru/pic/blog/a662/ru-06-dkim.jpg)
Настройка параметров домена выполняется вкладке – Domain Settings. Жмем Add, указываем имя домена, селектор (имя DNS записи). Здесь можно либо сгенерировать ключ, либо указать его расположение. Для создания публичного ключа нажмите – Generate new key, после чего он появится в этом окне.
![Настройки DKIM Domain Settings Настройки DKIM Domain Settings](/ru/pic/blog/a662/ru-07-dkim.jpg)
Затем перейдите в панель управления хостингом домена, и создайте txt запись, задайте ему имя mail._domainkey, и в поле – Значение, вставьте ваш публичный ключ. После внесенных настроек, в программе нажимаем кнопку «Save domain». Настройки применяются автоматически.
![Создаем новую DNS запись с ключом DKIM Создаем новую DNS запись с ключом DKIM](/ru/pic/blog/a662/ru-08-dkim.jpg)
Как добавить DMARC запись
Ну и наконец разберем что такое DMARC (Domain-based Message Authentication, Reportingand Conformance). Это следующий этап защиты после SPF и DKIM. Эта запись определяет, что делать с сообщениями, если они не прошли аутентификацию с помощью SPF и DKIM. Это правило, которое устанавливается для писем, отправленных от вашего имени.
![DMARC - Domain-based Message Authentication, Reportingand Conformance DMARC - Domain-based Message Authentication, Reportingand Conformance](/ru/pic/blog/a662/ru-09-dmarc.jpg)
Перед установкой DMARC важно убедиться, что SPF и DKIM прописаны корректно, иначе это может привести к фильтрации писем от вас. Для настройки DMARC, в панели управления вашего DNS-хостинга, создайте txt запись _dmarc.
![Создание DNS записи DMARC Создание DNS записи DMARC](/ru/pic/blog/a662/ru-10-dmarc.jpg)
Где нужно указать как минимум версию механизма и политику. При первой настройке в качестве политики рекомендуется указать – none (не делать ничего, кроме отправки отчётов).
В дальнейшем можно будет изменить запись ужесточив ее дописав нужные теги.
- v — версия DMARC.
-
p — правило для домена. Может принимать одно из значений:
- none — не делать ничего, кроме отправки отчётов.
- quarantine — добавлять письма в спам.
- reject — отклонять письма.
- sp — правило для субдоменов. Может принимать такие же значения, как и p.
- aspf и adkim — позволяют проверять соответствие записям SPF и DKIM. Могут принимать значения:
- r (relaxed) — мягкая проверка.
- s (strict) — строгое соответствие.
- pct — количество писем, подлежащих фильтрации, в процентах.
- pct — количество писем, подлежащих фильтрации, в процентах.
- ruf — определяет почту, на которую нужно отправлять отчёты о письмах, не прошедших проверку DMARC.
- fo — определяет условия генерации отчётов. Может принимать значения:
- 0 — присылать отчет, если не пройдена аутентификация ни SPF, ни DKIM. Значение по умолчанию.
- 1 — присылать отчет, если не пройдена одна из аутентификаций — SPF или DKIM.
- d — присылать отчет, если не пройдена аутентификация DKIM.
- s — присылать отчет, если не пройдена аутентификация SPF.
На этом настройка электронной почты завершена, теперь для проверки отправьте тестовое письмо со своего электронного ящика.
Как настроить почтовые службы IMAP и POP3 в Exchange Server
Теперь переходим к настройке почтовых служб POP3 и IMAP4. По умолчанию в Exchange службы POP3 и IMAP4 отключены. Для настройки подключения клиентов по IMAP и POP3 нужно их запустить и настроить автоматический запуск.
Откройте – Services, найдите службу – Microsoft Exchange IMAP4, установите тип запуска – Автоматически и запустите службу, а затем Apply и Ok.
![Запуск службы Microsoft Exchange IMAP4 Запуск службы Microsoft Exchange IMAP4](/ru/pic/blog/a662/ru-12-services.jpg)
Далее те же манипуляции проводим со службой – Microsoft Exchange IMAP4 Backend, Microsoft Exchange POP3 и Microsoft Exchange POP3 Backend. После запуска служб нужно настроить сертификат. Откройте панель управления Exchange, перейдите в раздел – Servers – Certificates.
![Панель управления Exchange – Servers – Certificates Панель управления Exchange – Servers – Certificates](/ru/pic/blog/a662/ru-13-exchange.jpg)
Откройте SSL сертификат, кликнув по нему два раза левой кнопкой мыши, перейдите во вкладку – Services и установите отметки напротив – IMAP и POP, а затем Save.
![Настройки SSL сертификата Настройки SSL сертификата](/ru/pic/blog/a662/ru-14-ssl.jpg)
Далее нужно связать домен со службами 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 Связываем домен со службой POP3](/ru/pic/blog/a662/ru-15-pop3.jpg)
После выполнения команды нужно перезапустить службу POP3, в окне служб, кликните по службе правой кнопкой мыши – Restart. И вторую службу POP3 backend.
![Выполните команду чтобы связать службу – IMAP Выполните команду чтобы связать службу – IMAP](/ru/pic/blog/a662/ru-17-imap.jpg)
Далее выполните команду чтобы связать службу – 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 сервера.
![Открываем порты для служб Открываем порты для служб](/ru/pic/blog/a662/ru-18-tp-link.jpg)
Следующее что нужно сделать – изменить параметры коннектора приема. В панели управления перейдите в раздел - Mail flow – receive connectors – Client Frontend exchange.
![Mail flow – receive connectors – Client Frontend exchange Mail flow – receive connectors – Client Frontend exchange](/ru/pic/blog/a662/ru-19-client-frontend-exchange.jpg)
Откройте вкладку – scoping, FQDN – измените домен с внутреннего на внешний – mail.hetmansoftware.com. и нажмите Save.
![FQDN – измените домен с внутреннего на внешний FQDN – измените домен с внутреннего на внешний](/ru/pic/blog/a662/ru-20-fqdn.jpg)
Далее нужно указать сертификат, который будет использоваться для шифрования подключений SMTP. Для начала нужно узнать ID сертификата, который хотим связать со службами.
Откройте Exchange Shell и выполните такую команду:
Get-exchangecertificate
Скопируйте значение сертификата – Thumbprint.
![Get-exchangecertificate Get-exchangecertificate](/ru/pic/blog/a662/ru-20-get-exchangecertificate.jpg)
Затем укажите сертификат, используемый для шифрования аутентифицированных клиентских подключений SMTP. Для этого нужно выполнить три команды.
![Указание правильного сертификата Указание правильного сертификата](/ru/pic/blog/a662/ru-21-get-exchangecertificate.jpg)
Выполните первую команду:
$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
![Проверка правильности присвоенного сертификата Проверка правильности присвоенного сертификата](/ru/pic/blog/a662/ru-22-get-exchangecertificate.jpg)
В результате вы получите имя сертификата, здесь должно быть имя сертификата, который вы указали. На следующем шаге нужно проверить включены ли данные протоколы на уровне почтовых ящиков, если они отключены в почтовых ящиках, пользователи не смогут настраивать свои профили в outlook, для использования POP3 и IMAP4. По умолчанию они должны быть включены.
Для проверки откройте панель управления Exchange, перейдите в раздел – recepients – mailboxes, откройте нужную учетную запись (почтовый ящик) – и перейдите в раздел – mailbox features, здесь проверьте установлено ли значение – Enable, для данных служб.
![Проверяем включены ли протоколы на уровне почтовых ящиков Проверяем включены ли протоколы на уровне почтовых ящиков](/ru/pic/blog/a662/ru-23-exchange.jpg)
А чтобы проверить работу служб выполните команду:
-Test
![Проверка работы служб POP3 и IMAP4 Проверка работы служб POP3 и IMAP4](/ru/pic/blog/a662/ru-24-test.jpg)
Test-PopConnectivity -ClientAccessServer expc -Lightmode -MailboxCredential (Get-Credential)
Вводим пароль. И вот успешный результат
Далее выполните такую же команду для IMAP
Test-ImapConnectivity -ClientAccessServer expc -Lightmode -MailboxCredential (Get-Credential)
Пароль от учетной записи. Данная конфигурация тоже работает.
Проверка служб POP3 и IMAP
Чтобы убедиться, что вы включили и настроили IMAP4 на сервере Exchange, выполните следующие процедуры:
На сайте Microsoft вы можете воспользоваться специальным сервисом, который проверит протоколы POP3 и IMAP. https://testconnectivity.microsoft.com/tests/Imap/input
![Проверка работы IMAP на сайте Microsoft Проверка работы IMAP на сайте Microsoft](/ru/pic/blog/a662/ru-25-imap-microsoft.jpg)
Заполняем все обязательные поля и жмем – Выполнить проверку. Проверка прошла успешно, но с предупреждением. Дело в том, что Microsoft не может проверить цепочку сертификата. Возможно, на сервере отключена или неправильно настроена данная функция.
Что касается SSL сертификата то я в нем уверен на 100 процентов, поэтому можно не обращать внимание на данное предупреждение. Служба работает нормально.
Далее проверим POP3 протокол. https://testconnectivity.microsoft.com/tests/pop/input
![Проверка работы POP3 на сайте Microsoft Проверка работы POP3 на сайте Microsoft](/ru/pic/blog/a662/ru-26-pop3-microsoft.jpg)
Все делаем по тому же принципу, заполняем поля и жмем – Выполнить проверку. Проверка прошла успешно.
Теперь проверим как ходит почта. В outlook настроим соединение через IMAP или POP3 протокол. И отправим тестовое письмо.
![Проверка работы почты через Outlook Проверка работы почты через Outlook](/ru/pic/blog/a662/ru-27-outlook.jpg)
Теперь почта не попадает в спам и дошла прямо до адресата без каких-либо ошибок.
Ошибки
А сейчас давайте разберем несколько ошибок которые могут возникать при неправильной настройке или отсутствии DNS-записей.
![Ошибки в работе DKIM-, SPF- и DMARC Ошибки в работе DKIM-, SPF- и DMARC](/ru/pic/blog/a662/ru-28-dkim.jpg)
Ошибка 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 Ошибка записи DMARC](/ru/pic/blog/a662/ru-29-dmarc.jpg)
При проверке записи DMARC может наблюдаться следующая ошибка:
Message Failed DMARC Compliance
Message Failed Verification Tests & is not DMARC Compliant
Эта ошибка означает, что сообщение не прошло проверку подлинности и не соответствует требованиям DMARC. Ошибка соответствия DMARC означает, что проверочные тесты SPF и DKIM не пройдены. Эти сбои могут негативно повлиять на доставку электронной почты, поскольку почтовые ящики не могут проверить подлинность вашей электронной почты.
![Ошибка записи DKIM Ошибка записи DKIM](/ru/pic/blog/a662/ru-30-dmarc.jpg)
Так выглядит ошибка связанная с DKIM записью:
"DKIM-Result: fail (bad signature)"
Обычно эта ошибка появляется во время начальной настройки DKIM, после обновления приложения или после миграции сервера.
Зачастую проблема вызвана ошибками в написании тегов или при настройке открытого ключа. При отсутствии записи DKIM или неправильной ее настройке, в полученном письме вы увидите предупреждение, это же касается и записи DMARC. Если письмо выглядит следующим образом измените настройки соответствующей записи.
Заключение
Итак, мы рассмотрели доступный каждому администратору простой и не требующий заморочек набор штатных средств, помогающих усилить безопасность почтовых серверов Microsoft. Правильно настроенные записи DKIM-, SPF- и DMARC позволят по максимуму снизить поток спама, рассылок, и различных вредоносных писем. Я показал только базовую настройку и принцип работы, для полноценной защиты нужны более точные настройки.
SPF может принимать следующие значения:
1. + (положительное): указывает, что почтовый сервер, который указан в заголовке SPF-записи, разрешен для отправки сообщений от домена.
2. - (отрицательное): указывает, что почтовый сервер, который указан в заголовке SPF-записи, не разрешен для отправки сообщений от домена.
3. ~ (неуверенность): указывает, что почтовый сервер, который указан в заголовке SPF-записи, может или не может быть использован для отправки сообщений от домена.
4. ? (вопрос): указывает, что SPF-запись недоступна.
5. * (звездочка): указывает, что SPF-запись не ограничивает связь с доменом.