Определение и структура электронного почтового ящика
Электронный почтовый ящик (англ. mailbox, email account) — это именованная область памяти на почтовом сервере, предназначенная для хранения электронных писем, адресованных конкретному пользователю. Каждый почтовый ящик имеет уникальный адрес, по которому его можно идентифицировать в глобальной сети.
Для обычного пользователя, открывающего почту в браузере или в приложении, почтовый ящик предстаёт в виде набора папок, в которые автоматически или вручную распределяются письма. Стандартный набор папок: Входящие (главная папка, куда попадают все письма, адресованные пользователю), отправленные (папка, в которой сохраняются копии всех писем, отправленных пользователем), черновики (папка для незавершённых неотправленных писем), удалённые (папка для писем, удалённых пользователем), спам (папка, в которую автоматически попадают подозрительные письма).
С точки зрения почтового сервера, почтовый ящик — это структура данных, хранящаяся на жёстком диске. Описывая упрощённо, для каждого пользователя на сервере выделяется директория с именем, соответствующим адресу или внутреннему идентификатору пользователя. Внутри этой директории находятся файлы, соответствующие отдельным письмам. В этот файл записаны:
● Технические заголовки: отправитель, получатель, дата и время прохождения через каждый сервер, уникальный идентификатор письма;
● Тело письма, то есть текст сообщения;
● Вложения (если есть), закодированные специальным образом.
● Метаданные письма — служебная информация, не видимая пользователю, но используемая сервером и клиентом. Это может быть флаг о прочитанном сообщении, метка «отвечено» или «переслано», категории письма и прочее;
Поскольку письма занимают место на диске сервера, каждый почтовый ящик имеет ограничение по объёму — почтовую квоту. Для публичных сервисов квота может составлять 15–50 ГБ бесплатно, для корпоративных квоту определяет организация. Когда квота исчерпана, новые письма перестают доставляться, получатель письма теряет возможность прочитать и сохранить письмо, отправитель получает сообщение об ошибке отправки сообщения.
В деловой среде часто используются общие почтовые ящики — ящики, к которым имеют доступ несколько сотрудников, например, сотрудники целого отдела или подразделения. Таким образом на один адрес могут получать и отправлять письма разные сотрудники. Чтобы два сотрудника не отвечали на одно и то же письмо, используются внутренние договорённости или система тикетов — отметок о том, что определённый сотрудник взял в работу обращение из письма. Общий ящик обычно не закреплён за конкретным человеком, что обеспечивает непрерывность работы, если кто-то из сотрудников не присутствует на рабочем месте.
Адресация в электронной почте
Электронный почтовый адрес имеет единый международный формат, который одинаков для всех почтовых систем мира. Этот формат был установлен ещё на заре развития электронной почты и закреплён в технических стандартах (RFC 5322, а также более ранних RFC 822 и RFC 2822).
Общая формула адреса выглядит так: localpart@domain
Символ @ разделяет адрес на две части: локальную часть — идентификатор конкретного получателя в пределах почтового домена, домен — идентификатор почтовой системы, в которой находится почтовый ящик.
Символ @ был выбран Рэем Томлинсоном в 1971 году именно потому, что он отсутствовал в именах пользователей и названиях компьютеров, а также означал предлог «at» (в английском — «находящийся по адресу»).
Стандарт разрешает использовать в локальной части латинские буквы (a–z и A-Z), цифры (0–9), некоторые специальные символы (! # $ % & ' * + - / = ? ^ _ \ { | } ~`), точку (.). Однако существует ограничение: локальная часть не может начинаться или заканчиваться точкой, а также содержать две точки подряд.
Использование пробелов и кириллицы недопустимо в большинстве почтовых сервисов, однако некоторые современные почтовые системы всё-таки поддерживают адреса на кириллице, хоть это и не является общепринятым стандартом.
Устройство электронного почтового ящика на уровне клиента и сервера
Электронная почта построена по клиент-серверной архитектуре, в которой участвуют несколько типов программ-почтовых агентов, выполняющих разные функции: MUA (Mail User Agent) — работа с почтовым сервисом на устройстве клиента, MTA(Mail Transfer Agent) — передача письма от клиента на почтовый сервер и между почтовыми серверами, MDA (Mail Delivery Agent) — получение писем от почтового сервера и помещение их в почтовый ящик пользователя.
Процесс передачи одного письма включает последовательное взаимодействие всех трёх компонентов, часто с участием нескольких MTA (если письмо идёт через несколько промежуточных серверов).
MUA (Mail User Agent) — это интерфейс между пользователем и почтовой системой. Именно его видит и с ним работает человек.
Функции MUA: предоставление интерфейса для написания письма; передача написанного письма на MTA отправителя (обычно через протокол SMTP); подключение к почтовому серверу получателя для получения входящих писем (через протоколы POP3 или IMAP); отображение полученных писем пользователю, возможность их сортировки, удаления, поиска; управление папками.
Важно понимать, что MUA не хранит письма постоянно (если только не настроен на сохранение локальных копий). В классической схеме письма хранятся на сервере, а MUA лишь отображает их содержимое. Однако существуют настройки (например, в POP3), при которых письма скачиваются на устройство и удаляются с сервера — тогда MUA становится также и хранилищем.
Задача MTA (Mail Transfer Agent) — принять письмо от MUA или от другого MTA и передать его следующему MTA на пути к получателю, пока письмо не достигнет MTA, обслуживающего домен получателя.
Функции MTA: приём письма по протоколу SMTP; определение адреса получателя (извлечение домена); запрос к DNS для выяснения, какой почтовый сервер обслуживает этот домен; установление соединения с этим сервером (или с промежуточным MTA, если прямая доставка невозможна); передача письма следующему MTA (или, если это конечный MTA, передача письма MDA); обработка ошибок доставки.
В современном интернете письмо редко идёт напрямую от MTA отправителя к MTA получателя. Чаще оно проходит через несколько промежуточных серверов, особенно если отправитель использует почтовый сервис (например, Gmail), а получатель — другой сервис (например, Яндекс). Каждый такой сервер добавляет свои заголовки в письмо (строки «Received:»), что позволяет в случае проблем отследить путь письма.
MDA (Mail Delivery Agent) — это компонент, который получает письмо от входящего MTA и записывает его в почтовый ящик получателя.
Функции MDA: получение письма от MTA; проверка, существует ли указанный почтовый ящик на данном сервере; если ящик существует — запись письма в файл (или базу данных) ящика; применение правил фильтрации; добавление заголовков (например, статус «получено», дата доставки).