Exim 4.95 介绍与选型指南
Exim(EXperimental Internet Mailer)纯联网溯源篇:软件身份与沿革、路由器→传输器架构、ACL 体系、队列与 Debian 配置框架、功能特性清单、Ubuntu 22.04 快速上手路径、适用场景与安全风险,以及与 Postfix 3.11.6 / Sendmail 8.16.1 / OpenSMTPD 7.7.0p0 / dma 的量化选型对比。信息检索日期 2026-10-26,仓库版本号经 apt 实查。
Exim 4.95 介绍与选型指南
目标:讲清 Exim 是什么、怎么运作、能做什么、和谁竞争、什么时候选它——软件身份、核心架构、功能特性、快速上手路径、适用场景与限制,以及与 Postfix、Sendmail、OpenSMTPD、dma 的量化选型对比。本篇为纯联网溯源篇,全部事实取自官方站点、官方规格说明书与发行版包索引(信息检索日期:2026-10-26,Ubuntu 22.04 仓库版本号经 apt 实查)。
一、环境信息
本篇为介绍与选型篇,不依赖本地实验环境;正文涉及的具体版本以下列公开来源为准,检索日期均为 2026-10-26:
| 项目 | 取值 | 来源 |
|---|---|---|
| 官方站点 | https://www.exim.org/ | Exim 官网 |
| 权威文档 | Exim 规格说明书(Spec)https://www.exim.org/exim-html-current/doc/html/spec_html/index.html | 官方文档站 |
| Ubuntu 22.04 仓库版本 | 4.95-4ubuntu2.12(jammy-updates / jammy-security) | apt policy exim4 实查 |
| Ubuntu 22.04 基线版本 | 4.95-4ubuntu2(jammy/main) | apt policy exim4 实查 |
| 上游最新版 | 4.100.1 | exim.org 版本页(2026-10-26 查询) |
| 许可证 | GPL(GNU General Public License) | 官网与源码树 LICENSE |
| Ubuntu 包索引 | https://packages.ubuntu.com/jammy/exim4 | Ubuntu 官方包站 |
| 维基条目(历史沿革) | https://en.wikipedia.org/wiki/Exim | Wikipedia(2026-10-26 查询) |
Ubuntu 22.04 仓库中该版本的完整候选版本视图(apt policy 输出节选,实查于 2026-10-26):
exim4:
Installed: 4.95-4ubuntu2.12
Candidate: 4.95-4ubuntu2.12
Version table:
*** 4.95-4ubuntu2.12 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
4.95-4ubuntu2 500
500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
💡 说明:本文标题中的 4.95 即来自 Ubuntu 22.04 仓库的实查版本(候选版本 4.95-4ubuntu2.12)。上游版本号与仓库版本不必相同——Ubuntu 会把上游 4.95 长期维护在 jammy 的 updates/security 通道里。
二、软件概述
Exim 是一款运行在 Unix 类操作系统上的开源邮件传输代理(MTA,Mail Transfer Agent),负责在服务器之间接收、路由与投递电子邮件。它 1995 年诞生于英国剑桥大学,由 Philip Hazel 出于替代当时校内在用的 Smail-3 而开发,名字取自 EXperimental Internet Mailer;项目现由全球志愿者维护团队接管,源代码以 GPL 许可证发布,主站点为 https://www.exim.org/(沿革信息来源:官网项目页与 Wikipedia 条目,2026-10-26 查询)。
几个标定它江湖地位的事实(检索日期 2026-10-26):
- 装机量:公开互联网扫描统计显示,Exim 长期是互联网上可见的 MTA 之一,2025-02 前后 Shodan 可见的主机量约 256 万台;同期 Postfix 的可见数量已反超(两家互有领先,口径取决于扫描方式);
- 历史份额:Sendmail 曾占互联网 MTA 份额约 80%,如今已萎缩到约 4%——它让出的空间主要被 Postfix、Exim、OpenSMTPD 分食;
- 发行版默认:Exim 是 Debian 系发行版的默认 MTA(Ubuntu 安装系统工具时会默认拉起 exim4 做本地投递),这使它拥有极其庞大的"沉默装机量";
- 版本节奏:上游保持活跃发布,最新版本已到 4.100.1(2026-10-26 查询 exim.org);Ubuntu 22.04(LTS,2022 年发布)仓库锚定在 4.95,通过 jammy-updates/jammy-security 持续获得补丁(当前 4.95-4ubuntu2.12)。
💡 技术拓展:MTA 与 MDA、MUA 的分工——MUA(如 Outlook)只负责写信收信;MTA(Exim/Postfix/Sendmail)负责服务器间传输;MDA(如 Dovecot LDA、procmail)负责最终落箱。Exim 以 MTA 为主体,但内置 appendfile/maildir 传输器可以直接承担 MDA 的落箱职责,这是它与"纯 MTA"设计的一个差异点。
三、核心架构
以下机制描述均以官方规格说明书(Spec,exim-html-current)为准,章节号随上游版本可能浮动:
3.1 单一二进制 + 配置驱动
Exim 的核心是一个 exim 可执行文件(Debian/Ubuntu 上为 exim4),配合一份主配置文件工作。与其他 MTA 最大的不同是:Exim 的路由、投递、访问控制全部是"配置语言"——用路由器(router)、传输器(transport)、ACL(访问控制列表)与字符串展开表达式在配置文件里编程,而不是编译进二进制。同一个二进制可以扮演边缘网关、内部中继、本地投递器三种角色,全看配置。
3.2 路由器 → 传输器两段式投递模型
一封信在 Exim 里的旅程被拆成两段:
- 路由器链(Routers):按声明顺序逐个尝试,决定"这封信该去哪"。内置路由器类型包括
accept(本地接受)、dnslookup(查 MX 走 SMTP)、manualroute(手工指定下一跳,做智能主机/站点路由)、redirect(别名/转发展开)等; - 传输器(Transports):执行"怎么送"。
smtp传输器对外发信(支持 STARTTLS/TLS、DKIM 签名),appendfile落 mbox,maildir落 Maildir,pipe交给外部程序。
这种"路由与传输解耦 + 顺序链匹配"的模型让复杂策略(如"本域用户落 Maildir、转发到外部、陌生域走智能主机")用十几行配置就能表达,代价是配置语言本身有学习曲线。
3.3 访问控制:ACL 体系
SMTP 会话的每个阶段(连接、HELO、MAIL、RCPT、DATA)都挂接 ACL,按条件链(accept/require/deny/warn/defer)逐条求值。中继控制、垃圾邮件防线(黑名单、SPF、灰名单钩子)、认证后放行都在这里实现。典型的"三态中继"就是一段 ACL:授权网段放行、认证用户放行、其余一律拒绝。
3.4 队列与提示数据库
无法立即投出的邮件进入队列(spool 目录,Debian 为 /var/spool/exim4),由周期队列进程重试;重试节奏记录在提示数据库(retry hints)里,按"指数退避"规则决定下次尝试时间。冻结(frozen)机制把反复失败的信件冻结出队,防止无限重试。
3.5 Debian 配置框架
Debian/Ubuntu 把上游配置包装成 exim4-config 框架:用户只需编辑 /etc/exim4/update-exim4.conf.conf 里的几个部署型变量(部署型 internet site / smarthost / satellite / local only / unconfigured),再由 update-exim4.conf 从模板(单一模式)或 conf.d/ 分片(分片模式)生成真正的运行配置。这层框架显著降低了 Exim 的上手门槛,是 Ubuntu 上使用 Exim 的主要方式。
3.6 与同类架构的直观对比
| 维度 | Exim | Postfix | Sendmail |
|---|---|---|---|
| 配置载体 | 自有配置语言(路由器/ACL/展开式) | main.cf 键值 + 小型 DSL(master.cf) | sendmail.cf(m4 宏生成) |
| 进程模型 | 单守护进程 + 按需派生投递进程 | 多守护进程协作(master + smtpd/cleanup/qmgr…) | 单进程传统模型 |
| 扩展点 | 配置语言内嵌查找与展开 | 外部程序/插件 | m4 重写规则 |
(对比依据各方官方文档的架构描述,2026-10-26 查询。)
四、功能特性
以下特性取自官方规格说明书特性清单与 Ubuntu 仓库包描述(检索日期 2026-10-26);其中编译开关组合可用 exim4 -bV 的 Support for: 行核对,同批实测文档《Exim 4.95 常用 CLI 命令详解》第一章给出了 Ubuntu 22.04 二进制的真实特性行。
| 特性域 | 支持情况 |
|---|---|
| 传输加密 | STARTTLS / SMTP over TLS(GnuTLS 或 OpenSSL 编译选项)、TLS 会话恢复、DANE、OCSP |
| 身份认证 | plaintext、cram_md5 等认证器(编译选项可扩展 external/Dovecot 等) |
| 反垃圾防线 | ACL 钩子 + SPF 工具、灰名单/黑名单(RBLL)模式、内容扫描接口(exim4-daemon-heavy 内建 exiscan/SpamAssassin 与 ClamAV 钩子) |
| 邮件签名与校验 | DKIM 签名与验签(编译开关 DKIM) |
| DNS 能力 | DNSSEC 校验(DNSSEC)、DNS 黑名单查询、SRV/MX 解析 |
| 国际化 | EAI/SMTPUTF8(I18N)、iconv() 编码转换 |
| 协议增强 | PIPELINING/PIPE_CONNECT、PRDR、TCP Fast Open、SOCKS 代理、SRS(发件人重写) |
| 投递方式 | SMTP 远端投递、mbox/Maildir/Mailstore 本地投递、pipe 外部程序、autoreply 自动回复、LMTP |
| 查找后端(Lookups) | lsearch/dbm/cdb/dnsdb/passwd/dsearch 等十余种内置查找类型,配置里可直接查文件、查 DNS |
| 路由器/传输器 | accept、dnslookup、ipliteral、manualroute、queryprogram、redirect 六类路由器开箱即用 |
| 平台 | Linux、BSD 系、Solaris 等 Unix 类系统;无原生 Windows 版本 |
两个 Ubuntu 发行版差异点值得单独说明(来源:Ubuntu 包描述与 Debian Exim README):
- exim4-daemon-light vs exim4-daemon-heavy:二者互斥安装。light 面向本地投递与常规中继;heavy 在编译时加入内容扫描(exiscan-acl,接 SpamAssassin/ClamAV)等特性,面向对外邮件网关。装哪个用
apt install exim4-daemon-heavy即可切换(本系列《Ubuntu 22.04 安装 Exim 4.95 指南》对两种 daemon 都做了实测); - SPF 工具:Ubuntu 把 SPF 检查拆在建议包
spf-tools-perl中,默认安装不包含,需要 ACL 级 SPF 校验时另行安装。
五、快速开始
本篇是溯源篇,不展开本地实测;这里给出 Ubuntu 22.04 上的官方推荐最小路径,完整到 0→1 的安装、双机收发、本地投递与排障实录见同批实测篇《Ubuntu 22.04 安装 Exim 4.95 指南》。
-
安装(约 4.6 MB 磁盘增量,实查于 2026-10-26):
apt install exim4 # 默认拉入 exim4-base、exim4-config、exim4-daemon-light -
选部署型:编辑
/etc/exim4/update-exim4.conf.conf,把dc_eximconfig_configtype设为internet site(对外收发)或local mail only(只收本机),并填入邮件域名; -
重新生成配置并重启服务:
update-exim4.conf && systemctl restart exim4 -
验证:
exim4 -bV # 看版本与生效配置路径 exim4 -bt root@本机域名 # 看地址会被哪个路由器/传输器接走 systemctl is-active exim4 -
读信:本地用户信件按 Debian 默认落
/var/mail/<用户名>(或 Maildir,取决于配置),用mail/bsd-mailx读取;root 的信件经 Debian 特有的 mail4root 路由落到/var/mail/mail。
最小闭环(本机给本机发一封信、能看到落箱)在上述五步内即可完成;对外收发还依赖 DNS MX 记录与防火墙放行 25/tcp,这些前置在实测篇中有逐条验证。
六、适用场景与限制
6.1 适合选 Exim 的场景
- Debian/Ubuntu 系基础设施的默认与一致性:系统自带、debconf 一路确认即可用,与发行版生命周期绑定,安全补丁随仓库走;
- 需要"配置即编程"的复杂路由策略:多域托管、按收件人分流、别名与转发网、hub 站点路由、条件化中继——Exim 的路由器/ACL 语言表达力最强;
- 单机多角色:一台机器同时做本地投递 + 内部中继 + 出站网关,一套配置语言搞定;
- 实验室与教学:SMTP 协议教学、邮件路由实验,Exim 的
-bt/-d调试链路是业界最透明的。
6.2 限制与风险
- 安全历史包袱:Exim 因装机量巨大曾多次出现影响面很广的高危 CVE(如 2019 年 CVE-2019-10149 远程命令执行),暴露在公网的 Exim 必须保持仓库补丁节奏;
- 配置语言门槛:路由器/ACL/展开式三者组合的表达力以学习成本为代价,误配不易察觉,需要
-bt/-bP/日志三件套辅助; - 上游与 LTS 的版本差:Ubuntu 22.04 锚定 4.95,上游已演进到 4.100.1;新特性要等下一个 LTS 或自行编译;
- 默认安装偏保守:反垃圾、反病毒、DKIM 等能力以编译开关/建议包形态存在,heavy daemon、spf-tools-perl 等需要显式选择;
- 性能调优空间有限:Exim 的设计哲学是"策略正确优于极限吞吐",超大流量站点通常更倾向 Postfix 的并发进程模型(见 7.2)。
七、同类选型对比
7.1 候选者速览
- Postfix(IBM/Wietse Venema,1998 起,IPL-1.0 类 IBM 公共许可):以"安全、快、易管"著称,模块化多进程架构,Linux 世界的默认选择之一;上游活跃,2026-08-10 发布 3.11.6(2026-10-26 查询);
- Sendmail(Eric Allman,1980s 起,Sendmail License):互联网早期事实标准、m4 配置与重写规则的开山者;份额从约 80% 萎缩至约 4%,最新版 8.16.1,已明显老化;
- OpenSMTPD(OpenBSD 项目,ISC 许可):以"配置简单、默认安全"为卖点的现代 MTA,配置文件最少能短到五行;跟随 OpenBSD 节奏发布,最新 7.7.0p0(2026-10-26 查询);
- dma(DragonFly Mail Agent,BSD 系):极简邮件代理——只做"本地收信 + 出站队列投递",没有 SMTP 收信服务、没有复杂路由,定位与 exim 的
local mail only部署型相近。
7.2 量化对比表
| 维度 | Exim 4.95(Ubuntu 22.04) | Postfix 3.11.6 | Sendmail 8.16.1 | OpenSMTPD 7.7.0p0 | dma |
|---|---|---|---|---|---|
| 许可证 | GPL | IBM Public License 类 | Sendmail License | ISC | BSD 系 |
| 最新上游版 | 4.100.1 | 3.11.6(2026-08-10) | 8.16.1 | 7.7.0p0 | 以发行版打包为准 |
| 发布节奏 | 活跃(4.95→4.100.1 线性演进) | 活跃、稳定分支并行 | 缓慢 | 随 OpenBSD 半年节奏 | 极慢 |
| 互联网可见装机量 | 约 256 万主机(Shodan,2025-02) | 可见数量已反超 Exim | 约 4% 份额(历史峰值约 80%) | 较少 | 少(多为内网) |
| 配置复杂度 | 高(自有配置语言) | 中(键值 + 模板) | 高(sendmail.cf/m4) | 低(声明式短配置) | 极低 |
| 反垃圾/内容扫描 | heavy 版内建 exiscan(SpamAssassin/ClamAV 钩子) | 外接(postsieve/amavisd 类) | 外接 | 有限 | 无 |
| 多角色能力 | 本地投递/中继/边缘网关一体 | 全角色(虚拟域、虚拟用户强) | 全角色(老旧) | 全角色(简化模型) | 仅本地+出站 |
| 典型宿主 | Debian/Ubuntu 默认 | RHEL/SUSE 默认 | 历史 Unix | OpenBSD 默认 | BSD/嵌入式 |
(数据来源:各方官网/发布页/公开扫描统计,检索日期 2026-10-26;装机量为量级参考,口径随扫描方式浮动。)
7.3 选型建议(如果…则…)
- 如果宿主是 Debian/Ubuntu 且以系统邮件、内网中继、多域路由为主 → Exim:发行版默认、配置语言能表达复杂策略;
- 如果面向大流量边缘网关、需要成熟的多进程并发与广泛的第三方文档生态 → Postfix;
- 如果追求最小配置面、BSD 系环境或小站点的"傻瓜化" MTA → OpenSMTPD;
- 如果只是给本机进程发通知信、不想跑完整 MTA → dma(或 Exim 的
local mail only部署型,二选一); - 如果是新项目 → 不建议 Sendmail:份额与活跃度都已进入维护态,仅存量系统维护场景保留。
同批次还开发了 Postfix 专栏(与 Exim 同为 Ubuntu 22.04 邮件服务器方向),需要横向动手对比时可在站内检索该专栏的安装篇配合阅读。
八、参考链接
- Exim 官网(项目介绍/下载/新闻):https://www.exim.org/
- Exim 规格说明书(架构、路由器/传输器、ACL 权威文档):https://www.exim.org/exim-html-current/doc/html/spec_html/index.html
- Ubuntu 22.04 exim4 包页:https://packages.ubuntu.com/jammy/exim4
- Ubuntu exim4 源码包页:https://launchpad.net/ubuntu/+source/exim4
- Wikipedia: Exim(历史沿革与装机量引用):https://en.wikipedia.org/wiki/Exim
- 本站同批实践文档:《Ubuntu 22.04 安装 Exim 4.95 指南》(0→1 安装与双机收发实测)、《Exim 4.95 配置参数详解》(Debian 配置框架实测)、《Exim 4.95 常用 CLI 命令详解》(命令行工具箱实测)