Архитектура электронной почты
Архитектура электронной почты
MTA (англ. Mail Transfer Agent — агент пересылки почты) — отвечает за пересылку почты между почтовыми серверами; как правило, первый MTA в цепочке получает сообщение от MUA, последний передает сообщение к MDA;
MDA (англ. Mail Delivery Agent - агент доставки почты) — отвечает за доставку почты конечному пользователю;
MUA (англ. Mail User Agent — почтовый агент пользователя; в русской нотации закрепился термин почтовый клиент) — программа, обеспечивающая пользовательский интерфейс, отображающая полученные письма и предоставляющая возможность отвечать, создавать, перенаправлять письма;
MRA (англ. Mail Retrieve Agent) — почтовый сервер, забирающий почту с другого сервера по протоколам, предназначенным для MDA.
Протоколы отправки/получения почты (SMTP, POP3 и IMAP)
Отправка и получение почты осуществляется через специальные протоколы: SMTP, POP3 и IMAP - протоколы стека TCP/IP, предназначенные для работы с электронной почтой. Каждый протокол представляет собой набор правил для взаимодействия между почтовыми клиентом и сервером.
Протокол |
Описание |
Порт |
Стандарт |
---|---|---|---|
SMTP (англ. Simple Mail Transfer Protocol - простой протокол передачи почты) |
Используется для отправки почты с клиента (например, Microsoft Outlook, Mozilla Thunderbird или веб-интерфейс) на почтовый сервер |
|
|
POP3 (англ. Post Office Protocol Version 3 — протокол почтового отделения, версия 3) |
Позволяет почтовому клиенту загружать сообщения с почтового сервера. Протокол довольно прост и в целом не содержит других функций кроме загрузки; спроектирован так, что после подключения к серверу, сразу загружаются все сообщения, после чего они удаляются с сервера и соединение завершается |
|
|
IMAP (англ. Internet Message Access Protocol - протокол прикладного уровня для доступа к электронной почте) |
Реализует ряд возможностей протокола POP3 и является протоколом, используя который клиент может загружать почтовые сообщения с сервера. Более функционален: загружаемые письма могут сохранятся на севере, можно читать письма из разных папок (например, Отправленные или Спам) и др. В связи с этим, IMAP требует большего пространства на жестком диске, больше нагружает процессор, чем POP3 |
|
Формат электронного письма
При передаче по протоколу SMTP электронное письмо состоит из следующих частей:
-
Данные SMTP-конверта, полученные сервером (служебная информация для сервера).
-
Сообщение (DATA): состоит из двух частей, разделенных пустой строкой:
-
заголовки письма (англ. Headers): служебная информация и пометки почтовых серверов, через которые прошло письмо, пометки о приоритете, указание на адрес и имя отправителя и получателя письма, тема письма и другая информация;
-
тела (англ. Body) письма: непосредственно сообщение.
-
Данные SMTP-конверта
Данные SMTP-конверта содержат в себе следующую информацию:
Параметр |
Описание |
---|---|
HELO/EHLO |
Имя отправляющего узла (имя сервера или компьютера пользователя, который обратился к серверу) |
MAIL FROM |
Адрес отправителя. Значение используется для формирования уведомлений об ошибках доставки сообщений, а, не значение из поля From заголовка сообщения) |
RCPT TO |
Адрес одного или нескольких получателей |
Сообщение - Заголовки письма
Заголовки письма формируются и интерпретируются пользовательскими агентами и описываются стандартами RFC:
-
RFC 2076 — Common Internet Message Headers (общепринятые стандарты заголовков сообщений);
-
RFC 4021 — Registration of Mail and MIME Header Fields (регистрация почты и поля заголовков MIME) — стандарт, описывающий передачу различных типов данных по электронной почте.
Каждый заголовок состоит из ключевого слова и значения, разделенных двоеточием (аналогично HTTP). В заголовках обычно указывается следующая информация:
-
почтовые серверы, через которые прошло письмо (каждый почтовый сервер добавляет информацию о том, от кого он получил это письмо);
-
похоже ли это письмо на спам;
-
информацию о проверке антивирусами;
-
уровень срочности письма (может меняться почтовыми серверами).
-
наименование программы, с помощью которой было создано письмо.
В нижеуказанной таблице приведены наиболее часто используемые заголовки:
Заголовок |
Описание |
---|---|
From |
Имя и адрес отправителя (именно в этом заголовке появляется текстовое поле с именем отправителя) |
Sender |
Отправитель письма. Добавлено для возможности указать, что письмо от чьего-то имени отправлено другой персоной (например, секретарем от имени начальника) |
To |
Имя и адрес получателя; может содержаться несколько раз (если письмо адресовано нескольким получателям) |
Сc |
(англ. Carbon Copy - точная копия) Содержит имена и адреса вторичных получателей письма, к которым направляется копия |
Bcc |
(англ. Blind Carbon Copy) Содержит имена и адреса получателей письма, чьи адреса не следует показывать другим получателям |
Subject |
Тема письма |
Date |
Дата отправки письма |
Content-Type |
Тип содержимого письма (HTML, RTF, Plain text) и кодировка, в которой создано письмо |
Reply-To |
Имя и адрес, куда следует адресовать ответы на это письмо (например, письмо рассылается роботом, то в качестве Reply-To будет указан адрес почтового ящика, готового принять ответ на письмо) |
Return-Path |
Адрес возврата в случае неудачи, когда невозможно доставить письмо по адресу назначения |
Received |
Данные о прохождении письма через каждый конкретный почтовый сервер (MTA): при прохождении через несколько почтовых серверов, новые заголовки дописываются над предыдущими, в конечном итоге, журнал перемещения будет записан в обратном порядке (от ближайшего к получателю узла к самому дальнему) |
MIME-Version |
Версия MIME, с которым это сообщение создано |
Кроме стандартных, почтовые клиенты, серверы и роботы обработки почты могут добавлять свои собственные заголовки, начинающиеся с X- (например, X-Mailer или X-Spamassasin-Level).
Сообщение - Тело письма
Тело письма отделяется от заголовка пустой строкой. В теле сообщения допускаются только печатные символы, поэтому для целей передачи бинарной информации (картинок, исполняемых файлов и т.п.) применяются кодировки, приводящие данные к 7-битному виду, например, Base64.
Пример электронного письма приведен в нижеизложенном листинге:
Return-Path: <mrboss@roga-kopyta.com> Delivered-To: bigjohn@server24.ru Received: from mail.server24.ru by mail.server24.ru with LMTP id 3eGxA9l62WJXgQAAeYFEaA (envelope-from <mrboss@roga-kopyta.com>) for <bigjohn@server24.ru>; Thu, 21 Jul 2022 19:12:09 +0300 Received: from mx.roga-kopyta.com (mx10.roga-kopyta.com [195.233.122.166]) by mail.server24.ru (Postfix) with ESMTPS id 043D740ABB for <bigjohn@server24.ru>; Thu, 21 Jul 2022 19:12:07 +0300 (MSK) Authentication-Results: mail.server24.ru; dkim=pass (2048-bit key; unprotected) header.d=roga-kopyta.ru header.i=@roga-kopyta.ru header.a=rsa-sha256 header.s=4823maebo214roga-kopytaict54 header.b=BWQIgPLh; dkim-atps=neutral From: MR BOSS <mrboss@roga-kopyta.com> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=roga-kopyta.ru; s=4823maebo214roga-kopytaict54; t=1658419926; bh=zoQgAFrkWvq3MjiA19DhBnbOFt58IMm7an3lwXDR3j8=; h=From:To:Subject:Date:From; b=BWQIgPLhxZJcc05k111PrUsLf1farGLaWQ+Be4sBVyrNXExW1g29vpG2aTqVZ9EQR FBe1i4LcYpzPYFXee6CDqFwuea+1Ip3/AMQ/URmAEyzff0Ee2ZZiUMnNnTOS2aMvsy EpzS8Qp3+wIN97L1hHogi2/bQo9v6QS/ZCwkkJa2u1tgyrqy2Pl/6tie3ZT0PD1UD2 kRV2SFmknDY1l1vJqHXVfRwKRXA1+cz9YDfYLwJnZBAGTXu22XympIB7Hc7pMPSvAN Yo2b8R1xyoeHA== To: "'bigjohn@server24.ru'" <bigjohn@server24.ru> Subject: Apache2 Thread-Topic: Apache2 Thread-Index: AdidHJw4EYiMoFXGRy+N9abmmpo1xQ== Date: Thu, 21 Jul 2022 16:12:05 +0000 Message-ID: <cca46541fa134546a99b4f5779d2d34b@roga-kopyta.ru> Accept-Language: ru-RU, en-US Content-Language: ru-RU X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.98.55.22] Content-Type: multipart/alternative; boundary="_000_cca46541fa134546a99b4f5779d2d34broga-kopytaru_" MIME-Version: 1.0 --_000_cca46541fa134546a99b4f5779d2d34broga-kopytaru_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PElmTW9kdWxlIG1vZF9mY2dp111jPg0KICAjIDIwTUIgc2hv1WxkIGJlIGVub3VnaA0KICBNYXhS ZXF1ZXN0TGVuIDIwMDAwMDA1DQo8L0lmTW9kdWxlPg0K --_000_cca46541fa134546a99b4f5779d2d34broga-kopytaru_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh01WwgeG1sbnM6dj1idXJuOnNjaGVtYXMtbWljcm9z12Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2101WNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0ia1R0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw01CI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyB1aGF1c2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi1qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb210LWZhY2UNCgl7Zm9udC1mYW1pbHk6 IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m DQo8cCBjbGFzcz011XNvTm9ybWFsIj48c3BhbiBsYW5nPSJFT11VUyIgc3R5bGU9ImZvbnQtZmFt aWx5OkNvbnNvbGFzIj4mbmJzcDsgIyAyME1CIHNob3VsZCBiZSBlbm91Z2g8bzpwPjwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9 ImZvbnQtZmFt11x5OkNvbnNvbGFzIj4mbmJzcDsgPC9zcGFuPjxzcGFuIH10eWxlPSJmb250LWZh bWlseTpDb25zb2xhcyI+TWF4UmVxdWVzdExlbiAyMDAwMDAwMDxvOnA+PC9vOnA+PC9zcGFuPjwv cD4NCjxwIGNsYXNzPSJNc29Ob31tYWwiPjxzcG1uIHN0eWxlPSJmb250LWZhbWlseTpDb25zb2xh cyI+Jmx0Oy9JZk1vZHVs1SZndDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj1NCjwvYm9k eT4NCjwvaHR1bD4NCg== --_000_cca46541fa134546a11b4f5779d2d34broga-kopytaru_--