Все мы ежедневно отправляем десятки писем и даже не задумываемся, а как они доставляются адресату. Нажимаем кнопку «Отправить» и ожидаем, что через секунду получатель увидит ваше сообщение. Но электронное письмо — это не всегда так просто и быстро. Иногда оно может и не дойти до адресата.
Давайте разберемся, как работает доставка писем на email адреса, и почему иногда не приходят письма на почту.
Принципы доставки электронного письма на почту
Отправляя бумажное письмо, мы прекрасно понимаем, что сначала оно доставляется в нужный город самолетом или поездом, далее машиной до отделения, а там уже почтальон доставит его до почтового ящика, все очевидно. А знаете ли вы, как работает доставка электронных писем? Если нет, то сейчас мы вам расскажем. При отправке письма на почту в процессе доставки принимает участие 2 сервера, один ответственен за отправку email-а, второй принимает его и пытается доставить до адресата. Процесс взаимодействия двух серверов достаточно интересен, он похож на общение 2 знакомых, которые встретились в городе. Сначала они “пожимают руки”, а потом “здороваются друг с другом”. Как и обычное письмо, электронное состоит из 2 частей – конверт (заголовок) и сообщение (текст). Заголовки отправляемых сообщений состоят из нескольких частей:- адрес отправителя;
- адрес получателя;
- тема сообщения;
- кодировка письма и прочее.
- Существует ли домен получателя?
- Если да, то кто ответственен за почту домена – MX запись в DNS (MX-записи для домена указывают серверы, на которые нужно отправлять email)?
- Если нет, сообщение возвращается с ошибкой – домен адресата не существует.
- Проверяется, разрешено ли серверу доставлять email к адресату, не попадает ли он под действие спам фильтров, которые могут заблокировать доставку письма.
От чего зависит доставка письма?
Возвращаясь к вопросам взаимодействия серверов на примере 2 знакомых, главное отличие между человеческим общением и разговором машин в том, что компьютеры общаются языком кодов, которые делятся на 3 типа:- 2хх – принято
- 4хх – временная ошибка
- 5хх – постоянная ошибка
Подробнее о кодах, которые позволяют проверить доставку письма
Они являются способом синхронизации серверов. Сервер отправителя передает сообщение и получает ответ в виде кода. Первая цифра показывает, была ли команда принята и обработана. Есть пять различных значений:- Почтовый сервер принял команду, но еще не предпринимает никакого действия. Требуется подтверждающее сообщение.
- Почтовый сервер завершил задачу успешно без ошибок.
- Почтовый сервер понял запрос, но требует, чтобы дальнейшая информация завершила процесс.
- Почтовый сервер столкнулся с временным отказом.
- Почтовый сервер столкнулся с неустранимой ошибкой. Ваш запрос не может быть обработан. Это тоже один из вариантов, почему не приходит письмо на почту.
- Синтаксическую ошибку.
- Информационный ответ.
- Состояние подключения.
- Состояние почтового сервера.
- 421 — Обслуживание не доступно, закрыт канал передачи (Это может быть ответом на любую команду, если обслуживание{служба} знает, что это должно закрыть).
- 450 — Требуемые почтовые действия, не предприняты: почтовый ящик недоступен.
- 451 — Требуемое действие прерывалось: ошибка в обработке.
- 452 — Требуемые действия, не предприняты: недостаточно системных ресурсов.
- 500 — Синтаксическая ошибка, неправильная команда.
- 501 — Синтаксическая ошибка в параметрах или переменных.
- 502 — Несуществующая команда.
- 503 — Неправильная последовательность команд.
- 504 — Параметр Command, не осуществлен.
- 550 — Требуемые действия, не предприняты: почтовый ящик недоступен (например, адрес не найден, нет доступа).
- 551 — Нелокальный пользователь или неверный адрес электронной почты.
- 552 — Требуемые почтовые действия прервались: превышено распределение памяти.
- 553 — Требуемые действия, не предприняты: имя почтового ящика недопустимо (например, синтаксис неправильный).
- 554 — Передача данных не удалась.
- 211 — Статус системы.
- 214 — Сообщение Справки (Информация относительно того, как использовать получатель или значение специфической ненормативной команды; этот ответ полезен только человеческому пользователю).
- 220 — Готов к обслуживанию.
- 221 — Обслуживается заключительный канал передачи.
- 250 — Требуемые почтовые действия завершены.
- 251 — Нелокальный пользователь.
- 354 — Начните ввод сообщения. Завершите ввод сообщения.
Проверка доставки email: ждем ответ от сервера
Соответственно, сервер отправителя, передав сообщения и получив ответ в виде кода понимает, было ли доставлено письмо получателю или нет. В дальнейшем, исходя из ответа, он совершает одно из этих действий:- сообщает, что письмо было отправлено;
- возвращает email с ошибкой (таким образом, отправитель понимает, что доставка письма не удалась);
- пытается доставить email еще раз, если ошибка была временная.