Открыть сервис

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, которые имеют более простую архитектуру и меньшее количество уязвимостей.

Сравнение с альтернативами

ХарактеристикаSendmailPostfixExim
Дата создания198319981995
Сложность конфигурацииВысокаяСредняяСредняя
ПроизводительностьСредняяВысокаяВысокая
Безопасность (исторически)НизкаяВысокаяСредняя
Популярность (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 →