Sendmail — MTA (Mail Transfer Agent, агент передачи почты) для Unix-систем. Принимает письма по SMTP и доставляет их локальным пользователям или передаёт другим серверам. Один из старейших почтовых серверов, прообраз для всех последующих MTA.
Как работает
Sendmail работает как демон, ожидающий входящих SMTP-соединений на портах 25 и 587. Принимает письмо, проверяет правила маршрутизации в конфигурации, ставит в очередь и пытается доставить. Конфигурационный файл sendmail.cf — один из самых сложных в Unix: написан на специальном макро-языке m4 и генерируется из шаблонов.
На практике sendmail используется на большинстве Linux-серверов как «заглушка» для локальной почты: системные утилиты (cron, скрипты мониторинга) отправляют уведомления через sendmail, который перенаправляет их на локальный MTA (Postfix) или внешний SMTP-сервер. Команда echo "Test" | sendmail -v user@domain.com — быстрый тест отправки.
История
Sendmail создан Эриком Оллманом (Eric Allman) в Университете Беркли в 1981 году для ARPANET. Стал стандартным MTA для Unix-систем в 1980-90-х. В 1995 году основана Sendmail, Inc. для коммерческой версии. В 1998 году обнаружена серьёзная уязвимость (CVE), ставшая символом проблем безопасности Sendmail. Postfix создан Витсе Венемой (Wietse Venema) в IBM Research в 1997 году специально как безопасная замена Sendmail. К 2010-м годам Postfix занял доминирующую позицию на серверах Linux.
Sendmail vs Postfix: когда Sendmail ещё актуален
Sendmail устарел как самостоятельный MTA для новых установок — сложная конфигурация (sendmail.cf почти не читается), уязвимости исторически были серьёзными. Тем не менее Sendmail присутствует в legacy-системах (старые RHEL, Solaris) и используется как локальный relay: в большинстве Linux-систем /usr/sbin/sendmail — это симлинк на текущий MTA (Postfix, Exim), а не на настоящий Sendmail. PHP функция mail() и системные скрипты используют /usr/bin/sendmail-команду без знания о реальном MTA.
Современная замена: Postfix (лучшая документация, безопасная архитектура с разделением на демоны), Exim (cPanel), msmtp (lightweight relay-only MTA для серверов, отправляющих письма через сторонний SMTP). msmtp — оптимален для серверов без собственного MTA: настраивается за 5 минут для relay через SendGrid/AWS SES.
Ключевые отличия от похожих терминов
Sendmail vs Postfix: оба — MTA, работают по SMTP. Postfix имеет модульную архитектуру (каждый компонент — отдельный процесс с минимальными привилегиями), конфигурацию в читаемом формате (main.cf, master.cf), лучшую безопасность. Sendmail — монолит со сложной конфигурацией. На новых серверах рекомендуется Postfix. Sendmail vs Exim: Exim — MTA с гибкими правилами маршрутизации, используется по умолчанию в cPanel и HestiaCP.
Sendmail и альтернативы
Sendmail — исторически первый MTA Unix (1981), сложный в настройке из-за нелинейного конфига. На современных серверах Sendmail заменён Postfix (проще, безопаснее) или Exim (в WHM/cPanel). HestiaCP использует Exim + Dovecot для полноценного почтового сервера. SMTP-конфигурация Sendmail: файл /etc/mail/sendmail.mc → компиляция через m4 → sendmail.cf. Команда для тестирования: echo 'test' | mail -s 'test' user@example.com. Для PHP-приложений: функция mail() вызывает sendmail/postfix локально — настройте sendmail_path в php.ini. Аутентификация: SASL + SSL/TLS для защиты SMTP-передачи. VPS: Postfix предпочтительнее Sendmail для новых установок. SPF-запись (SPF) снижает попадание в спам при отправке через Sendmail.