Исходим из того, что все умные, но многие не знают, как ходит почта и вопросы эти на 99% исходят из базы.
База:
-
Для работы почты почтовый сервер должен быть доступен из Internet
-
Почта приходит, потому что указаны MX-записи
-
Почта уходит, потому что настроена в соответствии с безопасностью SPF, DKIM, DMARC
Разберёмся по порядку, что должно быть настроено, чтобы работала почта.
Определяемся со схемами функционирования почтовой системы
Базовая схема предполагает, что почта проходит через фаервол/роутер, на нём соответственно входящий NAT на TCP 25й порт почтового сервера и разрешающие правила

В случае, если интернета нет, почтовый сервер недоступен.
Более продвинутый вариант предполагает использование нескольких ISP провайдеров, промежуточные Email Security Gateway и набор почтовых серверов за ними

В данном реализации почта будет приходить по нескольким провайдерам одновременно и в случае сбоя у одного, переключаться на второго.
Ну и современная база: почтовый сервис где-то в облаке и «Я всё делаю, как рекомендует Яндекс, Гугл, Мру!» Сюда же можно добавить Email Security GW, как сервис.
Схемы просты и понятны, но сами по себе схемы не объясняют, почему приходит почта.
Настройка DNS
Переходим к следующему шагу: DNS записи
Для того чтобы письмо пришло требуется каким-то образом сообщить, что ваш домен обслуживает данный конкретный сервер. Для этого нужен DNS, а именно: MX записи. Только MX записи отвечают за указание адреса почтового сервера.
example.com. IN MX 10 mail.example.com. mail.example.com. IN A 9.9.9.9
Указанная выше MX запись по факту сообщает, что для домена example.com почтовым сервером является сервер mail.example.com, а живёт он на IP адресе 9.9.9.9 (об этом нам говорит уже A-запись). Таким образом вся входящая почта для домена example.com будет отправляться на tcp://9.9.9.9:25
Самая объёмная часть. Исходящая почта.
Для того чтобы ваше письмо дошло необходимо пройти довольно большое количество проверок, в базе: PTR, SPF, DKIM, DMARC
По порядку: PTR запись — имя, которое возвращает IP адрес. Сейчас используется всё реже, но в РФ идут своим путём и зачастую требуется.
Проверяем так: nslookup -type=PTR 9.9.9.9 8.8.8.8, соответственно должно быть mail.example.com. Задаётся у вашего провайдера, у облачников часто нет самостоятельной возможности указать PTR, пишем в саппорт.
Следующая по порядку, но одна из основных по значимости: SPF запись. По факту это текстовая запись в DNS зоне вашего домена, которая сообщает о том, кому можно слать почту от имени вашего домена. И вот здесь случается миллион ошибок.
Вероятно от незнания, но база:
-
В рамках одного домена SPF запись может быть только одна. Если их две, то все проверки SPF пойдут на мороз.
-
SPF запись не должна быть слишком большой (не более 10 серверов)
-
Можно всех обмануть и разрешить отправлять со всех MX и A записей в вашем домене
Часто встречаются такие вот ошибки:
Первое — записи две, второе — они себе противоречат. Вероятнее всего, компания купила домен на timeweb.ru, где в дефолте уже указаны SPF самого timeweb, а затем администратор (вероятно от непонимания) добавил вторую запись с редиректом на mail.ru.
Нет смысла выяснять, что и где работает, но правильная запись, вероятно, должна выглядеть так: v=spf1 include:_spf.timeweb.ru include:_spf.mail.ru ~all
Давайте по-простому опишем, что и как должно выглядеть в SPF записи: v=spf1 a mx include:_spf.mail.ru ip4:9.9.9.9 ~all
-
a — все А-записи в вашем домене
-
mx — все MX-записи в вашем домене
-
include:_spf.mail.ru — все SPF записи mail.ru
-
ip4:9.9.9.9 — непосредственно IP адрес
-
~all — не парьтесь, поскольку у вас есть сторонние сервисы, хватит и ~
Одной из самых верных проверок, является проверка DKIM. По своей сути, это подписание писем электронной подписью на уровне сервера. Открытый ключ указываем в своём DNS — по нему проходит проверка, закрытый — на почтовом сервере, им подписываются письма.
Данный механизм прост до безобразия, но нужно помнить, что длина ключа должна быть 2048 бит, а закрытый ключ хранить как зеницу ока.
Есть как онлайн генераторы (не доверяем), встроенные в почтовый сервис, а можно сделать и ручками.
Ну и напоследок: DMARC — политика, определяющая, что делать с письмами от вашего домена в случае, если они не прошли проверки. Такая же текстовая запись в DNS зоне вашего домена. По факты мы сообщаем почтовому серверу получателя.
Вот пример: v=DMARC1; p=none; rua=mailto:reports@example.com; ruf=mailto:forensic@example.com; fo=1
p=none (может быть reject, quarantine) — ничего не делать с письмами, но администратор будет получать отчёты. Рекомендуется использовать только при тестировании/настройке
rua — адрес для агрегированных отчётов
ruf — для детальных
fo=1 (отчёт создаётся если не пройдет проверка или DKIM или SPF). 0 — обе проверки, s — не пройдена проверка SPF, d — DKIM
С базой закончили. В дальнейшем планирую рассказать, как работают всякие вкусные: Dynamic Reputation Lists, Sandbox, White/Black/Gray Lists, Email throttling, URL Defense и т.д. А если меня хватит, то рассмотрим настройку различных почтовых шлюзов/серверов.
ссылка на оригинал статьи https://habr.com/ru/articles/909760/
Добавить комментарий