uCheckeruChecker

Марк АвриловОпубликовано обновлено 7 мин чтения

Анатомия почтовика:
что внутри корпоративной почты

«Почта не работает», и сисадмин уже знает, что впереди долгий вечер. За каждым письмом стоит цепочка программ, и сломаться может любое звено.

Ниже карта этой цепочки: что крутится на сервере, когда вы жмёте «Отправить», и где искать поломку по симптому.

Что такое почтовый сервер

Почтовый сервер (mail server) это программа или набор программ, которые принимают, хранят, пересылают и отдают электронную почту. Письмо с ivan@firma.ru на olga@partner.com проходит минимум через два таких сервера, один у отправителя и один у получателя.

Монолитом почтовый сервер почти никогда не бывает. Одна программа передаёт письма между серверами, другая раскладывает их по ящикам, третья отдаёт их почтовому клиенту, и у каждой свой протокол. Классическое деление на MTA, MDA и MUA пригодится, когда будете читать логи или разбирать ошибку доставки.

💻

MUA: почтовый клиент

Outlook, Thunderbird, Apple Mail, Gmail в браузере или на телефоне. В MUA вы набираете текст и жмёте «Отправить». Частью сервера клиент формально не считается, хотя люди работают с почтой именно через него.

В организации клиент стоит стандартизировать: поддерживать одно приложение проще, чем зоопарк из пяти. Outlook удобен в экосистеме Microsoft, Thunderbird бесплатный и гибкий.

📤

SMTP · порт 587 или 465

Клиент сдаёт письмо серверу с логином и паролем. На 587 шифрование включается командой STARTTLS, на 465 соединение шифруется сразу.

🚀

MTA: Mail Transfer Agent

Postfix · Exim · Sendmail · Microsoft Exchange

Ядро почтового сервера и его курьер. MTA принимает письмо от клиента или от другого MTA, по MX-записям домена получателя находит, куда его нести, и передаёт дальше. Между собой серверы тоже говорят по SMTP, но на порту 25.

Если доставить письмо сразу не вышло, оно ждёт в очереди MTA, и сервер повторяет попытки. Не справляется MTA с потоком, очередь растёт, и письма приходят с опозданием.

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

🗺️

DNS-записи

  • MX называет сервер, который принимает почту домена. Если MX нет, отправитель по RFC 5321 попробует A-запись самого домена; чтобы отказаться от почты совсем, публикуют null MX.
  • A связывает имя сервера из MX с IP-адресом.
  • PTR работает наоборот, от IP к имени. У отправляющего сервера её требуют Gmail и Yahoo, подробнее в статье об обратном DNS.
  • SPF перечисляет серверы, которым можно слать от имени домена.
  • DKIM публикует ключ для проверки подписи: сервер подписывает письмо, получатель сверяет, что подписанные части не меняли.
  • DMARC говорит, что делать с письмами, которые не прошли SPF и DKIM, и куда слать отчёты о тех, кто пишет от вашего имени.

MX и A отвечают за то, чтобы почта доходила. SPF, DKIM и DMARC защищают домен от подделки.

🔒

TLS-шифрование

Без TLS письмо идёт по сети открытым текстом, как открытка, и прочитать его можно на любом участке между серверами. TLS шифрует каждый такой участок.

Google требует TLS от всех, кто шлёт на Gmail. А получатель в Gmail увидит у незашифрованного письма красный открытый замок.

🛡️

Антиспам-фильтры

SpamAssassin · Rspamd · встроенные фильтры Google/Microsoft

Фильтр взвешивает десятки признаков: репутацию отправителя, результаты SPF, DKIM и DMARC, ссылки, вложения, текст. Хороший ловит и спам, и фишинг, а фишинг для корпоративного ящика опаснее.

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

📬

MDA: Mail Delivery Agent

Dovecot · Cyrus · Procmail

Письмо добралось до сервера получателя, и MTA отдаёт его MDA. Тот кладёт сообщение в конкретный ящик, в формате Maildir, mbox или в базу. По дороге срабатывают правила: раскладка по папкам, пользовательские фильтры на языке Sieve, проверка квоты.

Ящик переполнен, и письмо вернётся отправителю с ошибкой. Следите за квотами, иначе коллеги будут молча терять входящие.

📨

IMAP

Письма живут на сервере, клиенты синхронизируются. Ноутбук, телефон, планшет видят одни и те же «Входящие».Стандарт для бизнеса.

📥

POP3

Скачивает письма на устройство и обычно удаляет их с сервера. Олдскул, но живёт там, где устройство одно, а места на сервере мало.

🌐

Webmail

Roundcube, SOGo или веб-версии Gmail и Outlook. Открыл браузер и работаешь. Хорош как запасной вход.

Путь письма от отправителя до получателя

Иван из firma.ru пишет Ольге из partner.com. По шагам это выглядит так.

  1. Thunderbird Ивана подключается к smtp.firma.ru по порту 587, проходит авторизацию и сдаёт письмо.
  2. MTA firma.ru спрашивает у DNS MX-запись partner.com и получает mx.partner.com.
  3. MTA firma.ru открывает SMTP-соединение с mx.partner.com на порту 25 и передаёт письмо.
  4. MTA partner.com проверяет SPF, DKIM и DMARC, прогоняет письмо через антиспам и отдаёт его MDA.
  5. MDA кладёт письмо в ящик Ольги.
  6. Outlook Ольги забирает его с сервера по IMAP.

Проверить, что первые шаги на вашей стороне в порядке, можно проверкой MX-записей и проверкой SMTP-сервера.

Типы почтовых серверов

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

  • Входящий сервер принимает почту домена, на него указывает MX. Он проверяет аутентификацию, фильтрует спам и доставляет письма в ящики.
  • Исходящий сервер отправляет почту наружу. Это может быть свой Postfix на VPS или облачный сервис вроде Amazon SES и SendGrid.
  • Relay стоит посередине: принимает письмо от одного MTA и передаёт другому. В корпоративных сетях через него часто пропускают всю исходящую почту, чтобы фильтровать её в одном месте.
  • Почтовый шлюз (email gateway) ставят перед основным сервером ради безопасности: антиспам, антивирус, защита от утечек (DLP).

Где чаще всего рвётся цепочка

Схема полезна тем, что по симптому сразу видно звено. «Письма не уходят» и «письма уходят, но не доходят» это разные поломки в разных местах, и чинят их по-разному.

Если ваш клиент вообще не смог отправить письмо, проблема на участке клиент → MTA. Закрыт порт 587 или 465, неверный пароль, клиент не умеет STARTTLS, которого требует сервер. Всё это видно в логе вашего почтового сервера, и получатель о такой поломке даже не узнает.

Письмо ушло, а получатель его не видит? Тогда участок другой, DNS и антиспам. Здесь работают SPF, DKIM и DMARC, здесь же принимается решение, «Входящие» или «Спам». Смотрят это не в логах, а в заголовке Authentication-Results самого письма и в агрегированных отчётах DMARC. Сюда же относятся чёрные списки: если с IP сервера шёл спам, адрес попадает в DNSBL, и письма с него отклоняются или уходят в спам. Адрес можно проверить по чёрным спискам.

Третий случай, когда сервер получателя письмо принял, а в ящик оно не попало. Значит, сработал MDA или правило фильтрации, настроенное на стороне получателя. Отправитель тут бессилен: в его логах доставка выглядит успешной, потому что формально она такой и была.

Почему собственный сервер обходится дороже, чем кажется

Поднять Postfix можно за вечер. Дальше начинается то, что в смету обычно не закладывают: прогрев IP-адреса, регистрация в постмастер-кабинетах, обратная DNS-запись, слежение за чёрными списками, обработка отказов, ротация ключей DKIM. По отдельности каждый пункт несложен, вместе они складываются в постоянную работу.

Поэтому часто делают так: транзакционные и маркетинговые письма отдают сервису рассылок с прогретой инфраструктурой, а собственный сервер оставляют для внутренней переписки, где объёмы малы.

Почтовый сервер и проверка адресов

Проверяя адрес, валидатор говорит напрямую с MTA получателя. Он подключается по SMTP и спрашивает, примет ли сервер письмо для user@domain.com, а код ответа (250, 550, 450 и другие) говорит, есть ли такой ящик.

Честно отвечают не все. Сервер catch-all принимает любой адрес домена, и согласие ничего не доказывает, поэтому uChecker ставит таким адресам статус unknown. Переполненный ящик письмо отклонит, и адрес получает статус bad. Сервер с грейлистингом сначала отвечает временным отказом, и проверка повторяется позже, а если отказ направлен на IP проверяющего, а не на адрес, пробуют с другого IP. Получается не один SMTP-запрос, а разговор, в котором приходится учитывать повадки конкретного сервера.

✅

Валидация адресов: деталь, о которой забывают

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

uChecker проверяет адрес до отправки: синтаксис, MX домена и ответ почтового сервера получателя. Каждый адрес получает статус good, bad или unknown. Через API проверку можно встроить в форму или запускать перед рассылкой.

Проверить базу →

Марк Аврилов · Автор материала

Опубликовано Обновлено