Sendmail 8.18.2 介绍与选型指南
Sendmail 经典 Unix MTA 的定位、架构与功能全解析:8.18.2 版本实查(2026-10-26)、milter/MTA-STS 特性、四步快速开始,并与 Postfix、Exim 4.100.1、OpenSMTPD 7.8.0p1 做量化选型对比。
Sendmail 8.18.2 介绍与选型指南
目标:讲清 Sendmail——这个从 1983 年演进至今的经典 Unix MTA——的定位、架构、功能与生态,并用实查数据与 Postfix、Exim、OpenSMTPD 做量化选型对比。版本与对比数据均标注来源与查询日期(2026-10-26);快速开始一节的命令已在 Ubuntu 22.04.5 LTS 实测通过。
一、环境信息
- 软件版本:Sendmail 8.18.2(官方 ftp.sendmail.org 当前稳定版,2025-12-27 发布;查询日期 2026-10-26)
- 对比对象:Postfix(Wietse Venema 维护)、Exim 4.100.1、OpenSMTPD 7.8.0p1
- 溯源渠道:ftp.sendmail.org(版本与许可证)、官网 RELEASE_NOTES(变更摘要)、exim.org 安全公告、opensmtpd.org 发布页、shields.io 徽章(GitHub 星数代理值);全部实查于 2026-10-26
- 本地实测环境:Ubuntu 22.04.5 LTS(x86_64),sendmail 8.15.2-22ubuntu3(apt)与 8.18.2(源码编译)双版本实测,快速开始命令回显均来自实测
二、软件概述
Sendmail 是 Unix 世界最古老的邮件传输代理(Mail Transfer Agent,MTA)之一,1983 年诞生于伯克利(Eric Allman 编写,随 4.2BSD 发布),四十余年来一直是 AIX、Solaris、HP-UX 等传统 Unix 系统的默认 MTA,也是 FreeBSD 的基础组件之一。当前由 Proofpoint 公司维护 sendmail 8.x 系列(源码树版权头即为「Copyright (c) 1998, 1999 Proofpoint, Inc. and its suppliers」——摘自 8.18.2 源码包 cf/cf/generic-linux.mc 实测文件头),官方源码经 ftp.sendmail.org 分发,不经 GitHub 官方发布。
Sendmail 8.18.2 的关键身份信息(来源:ftp.sendmail.org,查询日期 2026-10-26):
| 项目 | 事实 |
|---|---|
| 当前稳定版 | 8.18.2(sendmail-current.tar.gz 符号链接指向 sendmail.8.18.2.tar.gz,2025-12-27) |
| 版本谱系 | 8.17.1(2021-08-17)→ 8.17.2(2023-06-03)→ 8.18.1(2024-01-31)→ 8.18.2(2025-12-27) |
| 许可证 | Sendmail 开源许可证(BSD 风格、含署名条款,ftp.sendmail.org/LICENSE) |
| 发布物 | sendmail.8.18.2.tar.gz(2.26 MB)+ GPG 签名(.sig),SHA-256 实测 1a085faa8ace52cffde2f5e9bc611bdb5f81481caaabf46f0437b719ca089d2f |
| 组件 | sendmail(MTA/MSP)、libmilter(过滤库)、makemap、mail.local、smrsh、mailstats、praliases、vacation 等(源码包顶层目录实测清单) |
💡 技术拓展:MTA 与 MDA、MUA、MSP 的分工——MUA(如 mutt、Thunderbird)负责写信读信;MTA(本文主角 Sendmail、Postfix、Exim)负责服务器间 SMTP 转运;MDA(如 procmail、mail.local)负责投递到本机用户邮箱;MSP(Message Submission Program)是本机应用把信交给 MTA 的通道(Sendmail 8.12 起以独立
submit.cf体系实现,监听 587/submission)。Sendmail 一套软件同时覆盖 MTA + MSP + MDA(配合 procmail/mail.local)。
三、核心架构
Sendmail 采用「单进程多角色 + 规则集引擎 + 队列驱动」的经典架构,理解它需要抓住四个层面:
1. 两个运行角色(自 8.12 起的安全分权)
- MTA(smtpd 侧):以 root 运行、监听 25/smtp,负责接收与转运;守护进程进程名实测显示为
sendmail: MTA: accepting connections; - MSP(提交侧):以
smmsp用户运行、监听 587/submission,只做「把本机应用的邮件安全交给 MTA」这一件事,队列在/var/spool/clientmqueue。这种分权是 2001 年安全重构的产物,让邮件提交不再需要 setuid root。
2. 规则集引擎(ruleset)与重写规则
Sendmail 的核心是一套基于模式的地址重写引擎:邮件地址在进入投递前要依次穿过编号规则集(3 → 96 → 0 → 1 → 4 等,0 号规则集决定投递 mailer)。这也是它「配置复杂」名声的根源——原生 .cf 语言晦涩,实践中一律用 m4 宏语言生成(.mc → m4 → .cf),Ubuntu 的 sendmail-cf 包就是把这套体系封装成 /etc/mail/sendmail.mc 单文件入口。
3. mailer(投递代理抽象)
每封邮件最终交给一个 mailer 处理:local(交给 procmail/mail.local 投本机邮箱)、smtp/esmtp(转远程服务器)、relay(交给上级中继)等。mailer 定义决定了「这封信谁去送、用什么协议、带什么标志」。
4. milter(Mail Filter,过滤插件协议)
Sendmail 8.11 引入的 milter 协议是它在反垃圾邮件时代的护城河:外部过滤进程(SpamAssassin-Milter、OpenDKIM、SPF milter、ClamAV-Milter 等)通过 unix socket 与 MTA 实时交互,可以在连接、HELO、发件人、收件人、正文各阶段逐层拦截或修改邮件。Sendmail、Postfix(部分兼容)、各商业网关都支持该协议,但 sendmail 的 libmilter 是协议的发源地与参考实现(8.18.2 源码包实测含 libmilter/ 目录,sendmail -d0.4 特性列表实测含 MILTER)。
5. 队列驱动
投递不是即时的:入站邮件先进 /var/spool/mqueue 队列,由队列跑动(-q 间隔、sendmail -q 手工触发)按 mailer 逐封投递,失败邮件按指数退避留在队列,形成天然的「断网缓冲」。
四、功能特性
以下特性均有实测或官方文档依据:
- SMTP 全家桶:ESMTP、PIPELINING、8BITMIME、SIZE、DSN(投递状态通知)、ETRN、DELIVERBY(8.15.2 服务器 EHLO 能力实测回显:
250-ENHANCEDSTATUSCODES / 250-PIPELINING / 250-EXPN / 250-VERB / 250-8BITMIME / 250-SIZE / 250-DSN / 250-ETRN / 250-DELIVERBY / 250 HELP); - STARTTLS 加密与 SASL 认证:8.15.2 实测 EHLO 应答含
250-AUTH DIGEST-MD5 CRAM-MD5( libsasl2 编译支持);8.18 系列进一步收紧 TLS 默认策略; - MTA-STS(实验性):8.18.2 重写了 SMTP MTA Strict Transport Security 支持,按 RCPT 域绑定 STS 策略,可用 access 表按域开关(
STS:domain NO),成功投递在日志中记STS=OK(来源:官方 RELEASE_NOTES 8.18.2 节,2025-12-27); - milter 过滤:libmilter 内置,配合任意 milter 插件实现 DKIM/SPF/反垃圾/防病毒链;
- access 数据库:IP/域级别的中继白名单、黑名单与限流策略;
- 邮件列表与别名:
/etc/aliases+newaliases重建,支持:include:列表展开; - 虚拟域:virtusertable(虚拟用户表)、mailertable(按域路由)、genericstable(发件地址改写)三张 map;
- XOAUTH2 等现代认证载荷:8.18.2 扩大了 AUTH 内部缓冲以支持 XOAUTH2 长令牌(来源:RELEASE_NOTES 8.18.2 节);
- 统计与排障工具:mailstats、hoststat/purgestat、
-bt地址测试模式、-X全量会话调试日志。
五、快速开始(最小可用示例)
在 Ubuntu 22.04 上一条命令安装并验证(完整安装与源码编译见《Ubuntu 22.04 安装 Sendmail 8.15.2 指南》):
apt-get install -y sendmail
安装后 Sendmail 默认监听 127.0.0.1:25/587,验证 SMTP 横幅:
exec 3<>/dev/tcp/127.0.0.1/25 && head -c 110 <&3; exec 3<&-
实测回显:
220 mail.example.com ESMTP Sendmail 8.15.2/8.15.2/Debian-22ubuntu3; Mon, 26 Oct 2026 14:42:51 GMT; (No UCE/UBE) logging access from:
给本机用户发一封信并确认落箱:
printf 'Subject: hello\n\nfirst mail via sendmail\n' | sendmail admin
tail -3 /var/mail/admin
实测回显:
Subject: hello
first mail via sendmail
查看队列状态:
mailq
实测回显:
MSP Queue status...
/var/spool/mqueue-client is empty
Total requests: 0
MTA Queue status...
/var/spool/mqueue is empty
Total requests: 0
三步即完成「装、通、投」的最小闭环。
六、适用场景与限制
适合 Sendmail 的场景:
- 遗留 Unix 企业环境(AIX/Solaris/HP-UX 主机、老牌金融/教育系统)——Sendmail 常是唯一预装或最顺滑的选择;
- 需要 milter 生态深度定制过滤链的中大型邮件网关(Sendmail + 商业/自研 milter 插件是成熟组合);
- 以「服务器间 SMTP 转运」为主、不需要复杂邮箱业务的边缘 MTA / 内网中继;
- FreeBSD 及传统 Unix 发行版的默认栈延续。
明显的限制:
- 配置体系(m4 宏 + 规则集)学习曲线在四大 MTA 中最陡,
sendmail.cf原生语法基本不可手写; - 默认特性偏保守:Ubuntu 包默认只监听
127.0.0.1,对外服务需改DAEMON_OPTIONS; - 无内置 Web 管理、无邮箱存储(IMAP/POP3 需另配 Dovecot/Cyrus IMAP);
- 社区节奏慢:8.18.1 → 8.18.2 间隔近两年,CVE 响应依赖 Proofpoint 的维护窗口。
七、同类选型对比
四大 Unix/Linux MTA 的量化对比(版本与星数均标注来源,查询日期 2026-10-26):
| 维度 | Sendmail 8.18.2 | Postfix(3.x) | Exim 4.100.1 | OpenSMTPD 7.8.0p1 |
|---|---|---|---|---|
| 起源 | 1983,Berkeley/BSD | 1998,IBM(Wietse Venema) | 1995,剑桥大学 | 2008,OpenBSD 项目 |
| 最新版与节奏 | 8.18.2(2025-12-27);两年一个大修正的慢节奏 | 官网/官方 FTP 分发,年度版本线 | 4.100.1(2026-09-12 安全修复,exim.org 安全公告);年内多次维护版 | 7.8.0p1(2026-03-27,opensmtpd.org);半年节奏 |
| 许可证 | Sendmail 开源许可证(BSD 风格+署名) | IBM Public License / EPL(随版本) | GPL | ISC |
| 默认宿主 | AIX/Solaris/FreeBSD/传统 Unix | Debian/RHEL 系默认 | Debian 系默认之一(与 postfix 二选一) | OpenBSD 默认 |
| 配置方式 | m4 宏(.mc)→ sendmail.cf + 规则集 | main.cf 键值对 + master.cf | 单文件 exim4.conf,ACL 配置语言 | smtpd.conf 极简 DSL |
| 过滤扩展 | milter(协议发源地,生态最全) | milter 子集兼容 + 原生 content_filter | 内置 ACL + local_scan | 原生 filter 表(简单) |
| GitHub 星数(镜像仓库代理值,shields.io) | 无官方 GitHub 仓库(ftp 分发) | 无官方 GitHub 仓库(官网分发) | 785(Exim/exim 镜像) | 586(OpenSMTPD/OpenSMTPD) |
| 典型运维画像 | 老系统维护、milter 网关 | 通用服务器、最广泛的文档与人才池 | 强策略路由、复杂中继规则 | 极简自托管、小型网关 |
对表的解读(如何选型):
- 有存量 Unix 系统或 milter 过滤链诉求 → Sendmail 是唯一同时满足「预装生态 + milter 全兼容」的选择;
- 从零起步的现代 Linux 服务器 → Postfix 的默认安全性与配置直感性全面占优,Sendmail 只在团队已有运维经验时才值得引入;
- 需要把投递策略写成复杂逻辑(按收件人/时间/内容分支) → Exim 的配置语言最强,但配置错误的历史安全代价(历年多个高危 CVE 集中在默认配置)要计入风险;
- 个人自托管、几行配置跑通收发 → OpenSMTPD 体验最轻,但 Linux 平台的便携版成熟度弱于 OpenBSD 原生。
- 另需说明:Sendmail 与 Postfix 官方都不经 GitHub 分发,上表星数只对 Exim/OpenSMTPD 有参考意义;对 MTA 生态而言,发行版装机量与邮件运维社区活跃度比 GitHub 星数更有代表性。
八、参考链接
- Sendmail 官方发布目录(版本谱系与 LICENSE,查询日期 2026-10-26):
https://ftp.sendmail.org/ - Sendmail 8.18.2 官方 RELEASE_NOTES(MTA-STS 重写、XOAUTH2 等,查询日期 2026-10-26):
https://ftp.sendmail.org/RELEASE_NOTES - Sendmail 官网:
https://www.sendmail.org/ - Ubuntu jammy sendmail 包页(8.15.2-22ubuntu3):
https://packages.ubuntu.com/jammy/sendmail - Exim 当前版本与安全公告(4.100.1,查询日期 2026-10-26):
https://www.exim.org/及https://www.exim.org/static/doc/security/EXIM-Security-2026-09-12.2/EXIM-Security-2026-09-12.2.txt - OpenSMTPD 官网(7.8.0p1,查询日期 2026-10-26):
https://www.opensmtpd.org/ - 星数取证(shields.io,查询日期 2026-10-26):
https://github.com/Exim/exim(785)、https://github.com/OpenSMTPD/OpenSMTPD(586) - 本系列实测篇:《Ubuntu 22.04 安装 Sendmail 8.15.2 指南》