image image lang
Блог ePochta
img name

Как работает доставка писем?

Все мы ежедневно отправляем десятки писем и даже не задумываемся, а как же эти письма доставляются адресату. Нажимаем кнопку «Отправить» и ожидаем, что уже через секунду письмо окажется в папке у адресата.

Отправляя письмо через почтовое отделение, мы прекрасно понимаем, что сначала письмо доставляется в нужный город самолетом или поездом, далее машиной до почтового отделения, а там уже почтальон доставит его до почтового ящика, все очевидно. А знаете ли вы как работает доставка электронных писем? Если нет, то эта статья будет вам интересна.

При отправке писем в процессе доставки принимает участие 2 сервера, один ответственен за отправку письма, второй принимает это письмо и пытается доставить его непосредственно до адресата. Процесс взаимодействия двух серверов достаточно интересен, он похож на общение 2 знакомых, которые встретились где-то в городе. Для начала, по сути, они пожимают друг другу руки, первый говорит «привет», второй ему в ответ отвечает тоже «привет». Обычно это вежливая и дружественная беседа, но бывает напряженная и настороженная.

Как и обычное письмо, электронное состоит из 2 частей – конверт (заголовок письма) и сообщение (текст письма).

Заголовки отправляемых писем состоят из нескольких частей: адрес отправителя, адрес получателя, тема сообщения, кодировка письма и прочее. Основываясь на стандартах и принципах форматирования, почтовый клиент знает как распарсить (распознать) данные заголовки и отделить их от текста письма. Заголовок письма используются для определения адреса сервера получателя. Можно сделать сопоставление.

Физический адрес:
Ольга Макарова
пр. Победы 10
Санкт-Петербург, 195001

Email адрес:
o.ivanova@epochta.ru

Сопоставим:
.ru = 195001 (индекс)
epochta  = Санкт-Петербург (город)
o.ivanova  = Ольга Макарова, пр. Победы 10 (имя и адрес)

Как видно сервер, отправляющий письмо, определяет адрес сервера получателя, разбивая email адрес на составные части. С использованием DNS (Domain Name System — система доменных имён, распределённая система для получения информации о доменах, чаще всего используется для получения IP-адреса по имени хоста) сервер определяет:

  • Существует ли домен получателя?
  • Если да, то кто ответственен за почту домена – MX запись в DNS (MX-записи для домена указывают серверы, на которые нужно отправлять электронную почту)?
  • Если нет, письмо возвращается с ошибкой – домен адресата не существует.
  • Проверяется разрешено ли серверу доставлять письма к адресату, не попадает ли он под действие спам фильтров, которые могут заблокировать доставку письма.

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

  • 2хх – принято
  • 4хх – временная ошибка
  • 5хх – постоянная ошибка

Эти коды являются способом синхронизации серверов. Сервер отправителя передает сообщение и в ответ получает ответ в виде кода.

Первая цифра показывает Вам, если ваша команда была принята и обработана. Есть пять различных значений:

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

Если при отправке сообщения сервер получает в ответ код, начинающийся с 4 и 5, это означает, что ваше сообщение не будет доставлено, пока вы не устраните неисправность.

Вторая цифра означает:

  • Синтаксическая ошибка
  • Информационный ответ
  • Эта цифра относится к состоянию подключения
  • Эта цифра относится к состоянию почтового сервера

Последняя цифра кода показывает подробности состояния передачи.

Вот — список самых важных кодов ошибки SMTP (эта информация может быть интересна преимущественно специалистам):
421 Обслуживание не доступно, закрыт канал передачи (Это может быть ответом на любую команду, если обслуживание{служба} знает, что это должно закрыть)
450 Требуемые почтовые действия, не предприняты: почтовый ящик недоступен (например, почтовый ящик занят)
451 Требуемое действие прерывалось: ошибка в обработке
452 Требуемые действия, не предприняты: недостаточно системных ресурсов
500 Синтаксическая ошибка, неправильная команда
501 Синтаксическая ошибка в параметрах или переменных
502 Несуществующая команда
503 Неправильная последовательность команд
504 Параметр Command, не осуществлен
550 Требуемые действия, не предприняты: почтовый ящик недоступен (например, почтовый ящик, не найден, нет доступа)
551 Пользователь не местный; попробуйте еще раз
552 Требуемые почтовые действия прервались: превышено распределение памяти
553 Требуемые действия, не предприняты: имя почтового ящика, недопустимо (например, синтаксис почтового ящика неправильный)
554 Передача данных неудалась

Другие коды, обеспечивающие вас полезной информацией о том, что происходит с вашими сообщениями:
211 Статус системы
214 Сообщение Справки (Информация относительно того, как использовать получатель или значение специфической ненормативной команды; этот ответ полезен только человеческому пользователю)
220 Готов к обслуживанию
221 Обслуживается заключительный канал передачи
250 Требуемые почтовые действия завершены
251 Пользователь не местный; сообщение переправлено
354 Начните ввод сообщения. Завершите ввод сообщения.

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

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

 

Оцените статью
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: -0,33 из 5)
Поделиться
Комментарии
Хочешь получать актуальные статьи?
Подпишись и стань гуру в email маркетинге!