Sendmail
Sendmail — это один из старейших и наиболее распространённых агентов пересылки почты (MTA, Mail Transfer Agent) для Unix-подобных операционных систем. Программа обеспечивает маршрутизацию и доставку электронных писем по протоколу SMTP (Simple Mail Transfer Protocol), а также взаимодействие с другими почтовыми серверами и почтовыми клиентами. Sendmail известен своей гибкостью настройки, поддержкой множества почтовых протоколов и форматов, а также сложной конфигурацией, что привело к появлению альтернативных MTA, таких как Postfix и Exim.
История
Sendmail был создан Эриком Оллманом (Eric Allman) в начале 1980-х годов в Калифорнийском университете в Беркли. Изначально программа называлась delivermail и была частью операционной системы BSD Unix. В 1983 году, с выходом 4.1cBSD, она была переименована в Sendmail и включена в состав дистрибутива.
В 1990-е годы Sendmail стал доминирующим MTA в интернете, обслуживая, по оценкам, более 80% почтовых серверов. Однако его сложная конфигурация (файл sendmail.cf с синтаксисом, напоминающим макросы m4) и частые уязвимости в безопасности привели к критике и постепенному переходу многих администраторов на более простые и безопасные альтернативы, такие как Postfix (созданный в 1998 году) и Exim.
В 1998 году Эрик Оллман основал компанию Sendmail, Inc., которая занялась коммерческой поддержкой, разработкой и выпуском проприетарных версий Sendmail (Sendmail Switch). В 2013 году компания прекратила активную деятельность, и разработка вернулась к сообществу с открытым исходным кодом. Последняя стабильная версия Sendmail (8.17.1) была выпущена в 2022 году.
Архитектура и принцип работы
Sendmail работает как фоновый процесс (демон), который прослушивает порт 25 (SMTP) и обрабатывает входящие и исходящие почтовые сообщения. Основные компоненты архитектуры:
- MTA (Mail Transfer Agent) — сам Sendmail, отвечающий за приём, маршрутизацию и отправку почты.
- MDA (Mail Delivery Agent) — компонент, доставляющий письма в почтовые ящики пользователей (например, через
procmailилиmail.local). - MUA (Mail User Agent) — почтовый клиент (например, Thunderbird, Outlook), который взаимодействует с Sendmail через протоколы SMTP или локальные команды (например,
/usr/sbin/sendmail).
Основные функции
- Приём почты от MUA по SMTP (порт 25) или через локальный сокет.
- Проверка получателей (локальные или удалённые).
- Маршрутизация писем: для локальной доставки — передача MDA, для удалённой — поиск MX-записей DNS и отправка по SMTP.
- Обработка очередей (queue) при временных сбоях доставки (например, если сервер получателя недоступен).
- Поддержка аутентификации (SMTP AUTH), шифрования (TLS/SSL), фильтрации спама и вирусов (через сторонние утилиты, например, SpamAssassin, ClamAV).
Конфигурация
Конфигурация Sendmail традиционно считается сложной. Основные файлы:
/etc/mail/sendmail.cf— главный конфигурационный файл, написанный на специальном макроязыке. Обычно генерируется из файла.mc(macro configuration) с помощью утилитыm4./etc/mail/sendmail.mc— файл, содержащий макросыm4, которые упрощают настройку. После редактирования необходимо выполнить командуmake -C /etc/mailдля генерацииsendmail.cf./etc/mail/access— файл контроля доступа, определяющий, какие хосты или сети могут использовать сервер для ретрансляции (relay)./etc/mail/local-host-names— список доменов, для которых сервер принимает почту как локальную./etc/mail/virtusertable— таблица виртуальных пользователей, позволяющая сопоставлять адреса электронной почты с локальными учётными записями.
Пример настройки (упрощённый)
Для базовой настройки сервера, принимающего почту для домена example.com, в файл sendmail.mc добавляются строки:
`` define(DOMAIN_NAME', example.com')dnl FEATURE(virtusertable', hash -o /etc/mail/virtusertable.db')dnl ``
После этого генерируется sendmail.cf и перезапускается демон.
Безопасность
Sendmail исторически имел множество уязвимостей, что привело к его репутации как небезопасного MTA. Однако современные версии (8.14+) включают ряд улучшений:
- Поддержка TLS для шифрования трафика.
- Встроенная поддержка SMTP AUTH (PLAIN, LOGIN, CRAM-MD5).
- Ограничение ретрансляции (relay) через файл
access. - Возможность интеграции с антивирусами и спам-фильтрами.
Тем не менее, из-за сложности конфигурации и большого объёма кода, Sendmail остаётся менее безопасным по сравнению с Postfix или Exim, которые имеют более простую архитектуру и меньшее количество уязвимостей.
Сравнение с альтернативами
| Характеристика | Sendmail | Postfix | Exim |
|---|---|---|---|
| Дата создания | 1983 | 1998 | 1995 |
| Сложность конфигурации | Высокая | Средняя | Средняя |
| Производительность | Средняя | Высокая | Высокая |
| Безопасность (исторически) | Низкая | Высокая | Средняя |
| Популярность (2020-е) | Низкая | Высокая | Высокая |
| Поддержка | Сообщество | Сообщество | Сообщество |
Применение
Sendmail в настоящее время используется в основном на устаревших системах, где требуется совместимость с существующей инфраструктурой, или в образовательных целях для изучения принципов работы MTA. В новых проектах администраторы предпочитают Postfix или Exim из-за их простоты, безопасности и производительности.
Интересные факты
- Название Sendmail происходит от команды
sendmail, которая использовалась для отправки почты в ранних версиях Unix. - Эрик Оллман написал Sendmail на языке C, и его код остаётся в основе программы до сих пор.
- В 2001 году Sendmail, Inc. выпустила коммерческую версию Sendmail Switch, которая включала графический интерфейс управления и расширенные функции безопасности.
- Sendmail является частью многих дистрибутивов Linux, включая Red Hat Enterprise Linux (до версии 8) и CentOS (до версии 7), хотя в последних версиях по умолчанию устанавливается Postfix.
Критика
Основные претензии к Sendmail:
- Сложность настройки: файл
sendmail.cfсчитается одним из самых запутанных конфигурационных файлов в Unix. - Безопасность: множество уязвимостей, особенно в ранних версиях, приводили к компрометации серверов.
- Производительность: при высокой нагрузке Sendmail уступает Postfix и Exim.
- Отсутствие активной разработки: после прекращения деятельности Sendmail, Inc. обновления выходят редко, и сообщество невелико.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


