Система электронной почты состоит из трех компонентов: пользовательского агента, который позволяет пользователям читать и составлять сообщения, транспортного агента, который пересылает сообщения с одной машины на другую, и доставочного агента, который помещает сообщения в почтовые ящики пользователей-получателей. Взаимодействие этих компонентов схематически изображено на Рис. 1.
Рис. 1. Работа агентов электронной почты
Пользовательские агенты. Самым первым пользовательским агентом была программа /bin/mail, разработанная AT&T. Сейчас есть несколько программ этого класса. Кроме того, существуют пользовательские агенты с графическим интерфейсом пользователя. Существует также стандарт, определяющий включение в почтовые сообщения объектов мультимедиа. Он называется MIME (Multipurpose Internet Mail Extensions) – многоцелевые расширения электронной почты для Internet. Этот стандарт поддерживают некоторые пользовательские агенты. Бесплатные пользовательские агенты для ОС UNIX – /bin/mail, pine, elm и др.
Транспортные агенты. Задача транспортного агента – принимать почту от пользовательского агента, интерпретировать адреса получателей и каким-то образом перенаправлять почту на соответствующие машины для последующей доставки. Кроме того, транспортный агент должен принимать входящую почту от других транспортных агентов. Многие транспортные агенты «говорят» на языке протокола SMTP (Simple Mail Transport Protocol – простой протокол транспортировки почты), который определен в RFC821.
Для ОС UNIX разработано несколько транспортных агентов (MMDF, zmailer, smail, upas и другие), но самый мощный, самый гибкий и самый распространенный – sendmail.
Программа sendmail – транспортный агент, программа-связка между пользовательскими и доставочными агентами. Для Internet она является и доставочным агентом. Программа sendmail выполняет следующие задачи:
управление сообщениями после того, как они вышли из-под пальцев пользователя;
разбор адресов получателей;
выбор соответствующего доставочного или транспортного агента;
преобразование адресов в форму, понятную доставочному агенту;
необходимое переформатирование заголовков;
передачу преобразованного сообщения доставочному агенту.
Программа sendmail, кроме того, генерирует сообщения об ошибках и возвращает сообщения, которые не могут быть доставлены, отправителю.
Доставочные агенты. Доставочный агент отвечает за прием почты от транспортного агента и ее доставку соответствующим получателям. Почта может доставляться конкретному лицу, в список рассылки, в файл и даже в программу.
Для обслуживания получателя каждого типа может понадобиться отдельный агент. Программа /bin/mail – это доставочный агент для локальных пользователей, а программы uux и spop, fetchmail – доставочные агенты для пользователей удаленных машин, которые для приема почты пользуются услугами UUCP или POP, IMAP. Программа /bin/sh – доставочный агент для почты, которая направляется в файл или программу.