ХабрПостыНовостиМегапосты?

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

Исходим из того, что все умные, но многие не знают, как ходит почта и вопросы эти на 99% исходят из базы.

База:

Разберёмся по порядку, что должно быть настроено, чтобы работала почта.

Определяемся со схемами функционирования почтовой системы

Базовая схема предполагает, что почта проходит через фаервол/роутер, на нём соответственно входящий 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 записи

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

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

@Mnemonic0
15.05.2025 19:04 UTC
Первоисточник

Комментарии

@pae174
15.05.2025 14:38 UTC
+11

База по электронной почте без единого упоминания аббревиатур MUA, MTA, SMTP, POP и IMAP, но зато сразу с упоминанием DKIM - это сильно. Курсы и нейросети, которые мы заслужили.

15.05.2025 15:36 UTC
-5

Всё банально и просто. В статье написана база. Ни один протокол не описывался. Если вам нужен протокол и его описание - в гугл или иишку. Причем изначально рассматривался только транспорт между серверами, до пользователей как до Шанхая с их POP, IMAP, MAPI и ActiveSync.

15.05.2025 15:51 UTC
+3

Ну раз в гугл то все написанное тоже можно было бы загуглить💁 Не?🤔

15.05.2025 15:56 UTC
-5

Судя по количеству приходящих писем с банальными блокировками по SPF - не.

15.05.2025 15:58 UTC
+3

Посетители Хабра и так всё это прекрасно знают, а те, от кого вам приходят письма, эту недостатью всё равно не увидят

16.05.2025 11:23 UTC
+1

Хорошая статья, как раз что надо. Пиши еще.

15.05.2025 16:31 UTC
+4

В статье написана база.

Нет у вас тут никакой базы. Если проводить параллели - вы попытались рассказать про устройство автомобиля, забыли рассказать про двигатель и колеса, но при этом рассказали про GPS навигатор и автопилот.

@TechnoMag82
15.05.2025 16:05 UTC
+6

Если уровень сложности статьи простой, ожидается, что будут разъяснения по поводу сокращений и аббривеатур, что они значат и как работают. Я завис уже на MX-записях. Где они находятся и как образуются? Разумеется, это можно нагуглить, но стиль изложения такой, будто объясняется человеку уже с хорошим пониманием материала.

15.05.2025 17:14 UTC
-8

Возможно я недостаточно определил уровень аудитории хабра. Вот комментарием выше подавай описание протоколов, а здесь - где задают мх записи... Пупупу.

15.05.2025 19:13 UTC
+2

Которая аудитория знает про MX записи, той аудитории ваша статья уже низачем не нужна.

16.05.2025 20:46 UTC
0

А вот вам реально полезная тема. Как подключить DKIM к MS Exchange 2003 ?

17.05.2025 14:06 UTC
0

Не знаю, кто в текущее время пользуется 2003 Exchange, но для целей настройки DKIM в Exchange есть такой проект: https://github.com/Pro/dkim-exchange/wiki

17.05.2025 14:43 UTC
0

Купленными вещами пользуются те, кто заплатил за них свои деньги.

А вы платите за ненужное, да?

@CmpeJ1ok
16.05.2025 04:03 UTC
+1

Впринципе, если учесть, что автор все же попытался после нейронки поправить текст самостоятельно - какое то зерно в статье есть, но проблема в том, что действительно непонятно на кого статья рассчитана: те кто знают про MX - вы не раскрыли базу… а те кто про это не знают - пользователи, им это и не нужно! База - она более обширна, чем SPF или А запись и посему раскрывать серверно-клиентскую часть НЕОБХОДИМО, чтобы понять, что такое БАЗА, собственно для этого и создаются почтовики, для этого и нужна электронка, а не чтобы девопс поигрался создавая видимость работы! Так что дорабатывайте, дополняйте и вот тогда будет - база, а так по горам по долам нынче здесь завтра там. Не в обиду, но и тут и в гугле найдется более полная база по настройке и форточного почтовика и коровы и для гугла и для яндекса и что нужно сделать с летучей мышью, чтобы там было шифрование и как свой сертификат прикрутить к веб-морде, вот это база в 2025 году, а пока - вода.

@randomsimplenumber
16.05.2025 06:17 UTC
+1

В данном реализации почта будет приходить по нескольким провайдерам одновременно и в случае сбоя у одного, переключаться на второго.

Каждое письмо где-то там волшебным образом задублируется штоле? Что на картинке символизируют синие кружочки? а серые прямоугольники?

Вот что мне нравится в нейросетевом творчестве - картинка вроде как осмысленная, но вместе с тем смысла 0. Это как художнику показали схему телевизора, и он нарисовал по ее мотивам декор

Да, статья шлак.

16.05.2025 09:19 UTC
0

Каждое письмо где-то там волшебным образом задублируется штоле?

Если на принимающей стороне к серверу подведено два разных провайдера, сервер имеет да IP адреса и у домена стоят две MX записи на эти два разных IP с разными приоритетами, тогда:

Сервер отправителя сначала пытается отправить письмо, используя тот IP получателя, у которого приоритет MX записи больше.

Если не получилось, тогда берется MX запись с меньшим приоритетом, из нее получается второй IP получателя и предпринимается попытка отправить письмо на него.

То есть физически письмо не дублируется, но перебираются последовательно указанные в DNS доступные каналы доставки.

Если с первого раза не получилось отправить письмо ни через один из указанных IP, тогда письмо ставится в очередь у отправителя и через некоторое время попытка повторяется. Если не получилось после нескольких попыток, тогда исходное письмо грохается на стороне отправителя а самому отправителю посылается уведомление об ошибке доставки.

База по MX записям на самом деле

16.05.2025 09:54 UTC
0

Если на принимающей стороне к серверу подведено два разных провайдера, сервер имеет да IP адреса и у домена стоят две MX записи на эти два разных IP с разными приоритетами, тогда:

Картинка не о том - это раз.

Разные приоритеты - не обязательно, это два

И раз уж статья про базу - это уместно было бы в статье.

16.05.2025 10:06 UTC
0

Именно так, но значение веса в MX записи я не писал. Тут бы поняли, для чего оно вообще надо. Если описывать всё, то будет скушный ман на 100500 страниц, который никто никогда не прочитает. Хотелось объяснить, что минимальное, что нужно: mx, spf, dkim, dmarc - тогда хоть как-то будет работать.

17.05.2025 13:43 UTC
0

И поэтому ни словом не сказано, как настроить DKIM, верно?

16.05.2025 10:02 UTC
0

Нет, это классическая active-active схема. Если вы увидите - выше две стрелочки, кластер фаерволов, на них нат на 2 шлюза. Для простоты - для каждого провайдера свой шлюз.

@BjLomax
17.05.2025 06:27 UTC
+1

В будущем для примеров с IP адресами старайтесь использовать диапазоны из RFC5737: 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24

Не забывайте, что на основе Ваших текстов ИИ потом будет раздавать рекомендации по настройке.

А 9.9.9.9 принадлежит сервису Quad9 DNS