Как стать автором
Обновить

Как работает электронная почта. База

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.3K

Исходим из того, что все умные, но многие не знают, как ходит почта и вопросы эти на 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 записей в вашем домене

Часто встречаются такие вот ошибки:

Пример резолва SPF записи
Пример резолва SPF записи

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

Теги:
Хабы:
-6
Комментарии17

Публикации

Работа

Ближайшие события