Содержание статьи
Немного теории о том, что мы будем настраивать
Итак, прежде чем мы приступим непосредственно к изменению настроек безопасности нашего почтового сервера, нужно разобраться с тем, что именно мы собираемся настраивать. Если тебя не пугают страшные на вид аббревиатуры, состоящие из трех и более заглавных букв латинского алфавита, ты можешь пропустить этот раздел. Остальных приглашаю освежить свои знания, ибо повторение, как гласит народная мудрость, мать учения.
![](/wp-content/themes/engine/img/warning-icon.jpg)
WARNING
Важно помнить, что, к сожалению, настройка DKIM-, SPF- и DMARC-записей не панацея от всех бед. Если почтовый сервер был взломан, эти функции безопасности не смогут защитить от нелегитимного трафика. Поэтому важно заранее продумать эшелонированную защиту системы, включая антиспам-фильтры, антивирусное детектирование и прочее.
Что такое DKIM?
DKIM (Domain Keys Identified Mail) — это, условно говоря, цифровая подпись, которая подтверждает подлинность отправителя и гарантирует целостность доставленного письма. Подпись добавляется в служебные заголовки сообщения и остается незаметной для самого пользователя. Поскольку в DKIM используется асимметричная система шифрования, репозиторий сервера всегда хранит два ключа шифрования — открытый (сертификат) и закрытый. С помощью закрытого ключа формируются заголовки для всей исходящей почты, а открытый ключ как раз добавляется в DNS-записи в виде TXT-файла.
Статус DKIM проверяется автоматически на стороне получателя при сохранении письма в контейнер (именной почтовый ящик). И если домен в письме не авторизован для отправки сообщений, то письмо может быть помечено подозрительным или же сразу помещено в папку «Спам», в зависимости от настроенной политики безопасности. Кстати, это одна из ключевых причин, почему письма определенных отправителей постоянно попадают в спам, даже несмотря на валидность домена отправителя.
Для работы с DKIM требуется выполнение следующих условий:
- поддержка DKIM почтовым сервером (а она есть у всех современных почтовиков);
- создание приватного и публичного ключа шифрования (это нужно сделать ручками);
- занесение в DNS домена записей, связанных с DKIM (и это тоже ручками).
![Принцип работы DKIM](https://xakep.ru/wp-content/uploads/2019/06/226331/1.jpg)
![](/wp-content/themes/engine/img/info-icon.jpg)
INFO
Для интересующихся этой темой в нашем журнале публиковался краткий гайд «Как настроить почтовый сервер для обхода спам-фильтров: руководство по DNS, SPF, DKIM», который поможет тебе взглянуть на проблему рассылки спама, вредоносного ПО и фишинга глазами владельца почтового ботнета. 🙂
Что такое SPF?
SPF (Sender Policy Framework) — это еще одна специальная подпись, содержащая информацию о серверах, которые могут отправлять почту с твоего домена. То есть SPF позволяет владельцу домена указать в TXT-записи для DNS-домена специальным образом сформированную строку, содержащую весь список серверов, которые имеют право отправлять email-сообщения с обратными адресами в этом домене. А если сказать то же самое понятными словами, то в этой записи мы сообщаем, с каких почтовых серверов можно посылать письма от имени сотрудников нашей компании. Воу! Вот так просто! В общем, наличие SPF снижает вероятность, что твое письмо попадет в спам.
Важно помнить, что SPF-запись должна быть только одна для одного домена, хотя уже в рамках одной SPF может содержаться несколько записей. И надо сказать, что для поддоменов будут нужны свои записи. И никак иначе! Безопасность требует времени и усердия. 🙂
![Принцип работы SPF](https://xakep.ru/wp-content/uploads/2019/06/226331/2.jpg)
Что такое DMARC?
DMARC (Domain-based Message Authentication, Reporting and Conformance) — это еще одна подпись, которая позволяет серверу получателя принять решение, что делать с пришедшим письмом. Важно заметить, что DMARC — это скорее дополнительная фича к уже используемым DKIM и SPF. Например, если отправленное сообщение не прошло проверку DKIM и SPF, то оно не пройдет и DMARC. Все логично. А вот если письмо успешно прошло хотя бы одну проверку (DKIM или SPF), то и проверку DMARC оно тоже преодолеет. Также при помощи DMARC можно получать репорты от почтовых систем с информацией, сколько через них пыталось пройти или прошло поддельных сообщений на ваш домен. Из сказанного становится понятно, что DMARC добавляется только после того, как уже настроены записи SPF и DKIM.
![Принцип работы DMARC](https://xakep.ru/wp-content/uploads/2019/06/226331/3.jpg)
От чего нельзя защититься с помощью DKIM, SPF и DMARC
С использованием DKIM, SPF и DMARC можно противостоять email-спуфингу и распространению малвари. Однако важно понимать, что это не гарантирует безопасности в случае взлома сервера, например путем компрометации админки или применения эксплоита, а также если письма форвардятся через иные почтовые сервисы с сомнительной репутацией или с полностью отсутствующими записями DKIM, SPF и DMARC.
Некоторые полезные ссылки для проверки корректности настройки DKIM- и SPF-записей, а также репутации домена:
-
SPF Policy Tester — онлайн-сервис проверки корректности SPF-записи. Для проведения теста на сайте указываешь почтовый адрес, с которого хочешь отправлять письма, и IP-адрес почтового сервера. Если все хорошо, то после нескольких секунд ожидания внизу страницы должна появиться зеленая надпись
PASS
. -
Dkimvalidator.com — разработчики этого сервиса дают тебе адрес почты, на который нужно выслать письмо. После этого можно просмотреть отчет о валидности DKIM. Все просто!
-
Mail-tester.com — еще один вариант аналогичного сервиса, где тебе предоставляется адрес почты для отправки тестового сообщения, а после этого можно посмотреть отчет о доставке. Если возникли проблемы, из представленного репорта можно понять, в чем именно заключаются косяки.
Также не стоит забывать о регистрации своего сервера в службах постмастера для публичных почтовых серверов (если ты, конечно, администрируешь такой сервер). Это позволит тебе не только получать статистику по рассылкам, но и заработать чуть больше доверия от этого почтового сервиса. Вот самые известные и часто используемые постмастеры: Mail.RU, Yandex и Gmail.
Практика и еще раз практика
В практической части мы рассмотрим конфигурирование описанных выше настроек безопасности на примере двух наиболее популярных почтовых серверов — опенсорсного Postfix на Debian (ну, или Ubuntu Server) и проприетарного Microsoft Exchange Server 2013+. Предполагается, что почтовые серверы у тебя уже установлены и настроены под твой домен, поэтому рассматривать будем только само конфигурирование фич на обезличенных данных.
Настраиваем SPF, DKIM и DMARC на Postfix (Debian)
Общий принцип работы нашего почтового сервера будет таков:
- Принимающий сервер получает письмо с адреса info@example.com, отправленное с сервера mx.example.com.
- Сервер получателя делает запрос к DNS для домена example.com и ищет записи SPF и DKIM.
- В случае если записей нет, письму проставляется статус neutral (конкретно по этим проверкам) и письмо проверяется дополнительными фильтрами.
- В случае если записи обнаружены, проверяется, разрешено ли серверу mx.example.com отправлять почту домена example.com.
- Если домен mx.example.com не найден в списке разрешенных, то или письмо отбрасывается, или ему устанавливается статус neutral.
- Если домен mx.example.com таки найден в списке разрешенных, письму устанавливается статус Pass и повышается его рейтинг при прохождении других фильтров.
Ну что, погнали!
![](/wp-content/themes/engine/img/warning-icon.jpg)
WARNING
Перед любыми операциями по конфигурированию системы не забывай сделать бэкап! Даже одна неправильно включенная опция может отрезать всех пользователей от получения и отправки почтовой корреспонденции. И обязательно тестируй все изменения перед переносом в их продакшен!
Настройка SPF-записи
Если ты отправляешь все сообщения только с одного сервера (почтовые клиенты не считаются), то в SPF-записи будет достаточно указать IP-адрес этого сервера:
example.com. IN TXT "v=spf1 +a +mx ip4:31.34.56.78 -all"
Описание опций:
v=spf1
— используемая версия SPF;+
— принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. То есть, если никаких параметров не установлено, это автоматическиPass
;-
— отклонить (Fail);~
—мягкое
отклонение (SoftFail). Письмо будет принято, но будет помечено как спам;?
— нейтральное отношение, то есть никаких действий не предпринимать;mx
— включает в себя все адреса серверов, указанные в MX-записях домена;ip4
— опция позволяет указать конкретный IP-адрес или подсеть IP-адресов;a
— указываем поведение в случае получения письма от конкретного домена;include
— включает в себя хосты, разрешенные SPF-записью указанного домена;all
— все остальные серверы, не перечисленные в SPF-записи.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»