Courier MTA 1.0.16 Ubuntu 22.04 安装指南
Courier MTA 1.0.16 Ubuntu 22.04 安装指南:jammy 官方 deb 四包安装、postinst 自签名证书、安装后必修四件事(mailname/587 ESMTPDSTART/ESMTPAUTH_TLS 主文件开启/postmaster 空别名)、9 个 systemd 单元与 7 端口验收、465/587/993/110 全协议 AUTH 实测。实测日期 2026-10-25。
Courier MTA 1.0.16 Ubuntu 22.04 安装指南
实测环境:Ubuntu 22.04 LTS(jammy),官方 universe 仓库
courier-mta 1.0.16-3build3。实测日期 2026-10-25。示例主机名mail.quzuo-test.cn,示例账号admin/q1w2e3r4(请替换为你自己的强口令)。
一、安装前说明
Courier 在 Ubuntu 官方仓库拆成一组包,最小可用组合是四个:
| 包 | 作用 |
|---|---|
| courier-mta | ESMTP 守护与队列核心(25 端口、发信、本地投递) |
| courier-imap | IMAP4rev1 服务(143/993 端口) |
| courier-pop | POP3 守护(110/995 端口) |
| courier-authdaemon | 认证守护(system 用户认证,userdb/LDAP/MySQL 可选) |
依赖会自动带入 courier-base、courier-ssl(提供 465/587/993/995 的 TLS 包装与自签名证书生成)等。
二、安装
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y \
courier-mta courier-imap courier-pop courier-authdaemon
安装过程的关键回显(节选):postinst 会自动生成自签名 TLS 证书并注册 systemd 单元——
Signing certificate...
Created symlink /etc/systemd/system/multi-user.target.wants/courier-imap.service → /lib/systemd/system/courier-imap.service.
Created symlink /etc/systemd/system/multi-user.target.wants/courier-imap-ssl.service → /lib/systemd/system/courier-imap-ssl.service.
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...
Processing triggers for ca-certificates (20260816ubuntu0.22.04.1) ...
Updating certificates in /etc/ssl/certs...
验证版本:
$ apt-cache policy courier-mta
courier-mta:
Installed: 1.0.16-3build3
Candidate: 1.0.16-3build3
Version table:
*** 1.0.16-3build3 500
500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
$ dpkg -l courier-mta courier-imap courier-pop courier-authdaemon | tail -5
ii courier-authdaemon 0.71.1-2build1 amd64 Courier authentication daemon
ii courier-imap 5.0.13+1.0.16-3build3 amd64 Courier mail server - IMAP server
ii courier-mta 1.0.16-3build3 amd64 Courier mail server - ESMTP daemon
ii courier-pop 1.0.16-3build3 amd64 Courier mail server - POP3 server
三、安装后必做的四件事
Debian 的默认配置是「能收不能发、能连不能认证」的保守姿态,以下四步缺一不可。
3.1 设置主机邮件名
echo "mail.quzuo-test.cn" | sudo tee /etc/mailname
/etc/mailname 是 Debian 系邮件包的公共约定,courier 的 postinst 据此生成默认域配置。
3.2 开启 587 提交端口
/etc/courier/esmtpd-msa 默认 ESMTPDSTART=NO,即 587 端口不启动。改为:
sudo sed -i 's/^ESMTPDSTART=NO/ESMTPDSTART=YES/' /etc/courier/esmtpd-msa
3.3 开启 SMTP AUTH(默认全关,实测踩坑)
Debian 默认 /etc/courier/esmtpd 里 ESMTPAUTH="" 且 ESMTPAUTH_TLS=""——明文会话与 TLS 会话的 AUTH 全关。Courier 的设计是 AUTH 只允许出现在 TLS 会话内,由 ESMTPAUTH_TLS 控制。在主配置文件中开启:
sudo sed -i 's/^ESMTPAUTH_TLS=""/ESMTPAUTH_TLS="PLAIN LOGIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256"/' /etc/courier/esmtpd
注意:
esmtpd-msa(587)与esmtpd-ssl(465)是包装脚本,先 source/etc/courier/esmtpd再 source 自己的文件,所以 AUTH 要开在主文件里才对所有端口生效。改错位置(只改 esmtpd-msa)是「535 Authentication rejected」的最常见原因。
3.4 补 postmaster 别名
/etc/courier/aliases/system 默认是 postmaster:(冒号后为空),发往 postmaster 的邮件会被静默丢弃。改为指向真实用户并重建别名库:
sudo sed -i 's/^postmaster:$/postmaster: admin/' /etc/courier/aliases/system
sudo makealiases
四、创建邮箱用户(Maildir)
Courier 的 system 认证直接读操作系统账号,邮箱用 Maildir 格式建在用户家目录:
sudo useradd -m -s /bin/bash admin
echo 'admin:q1w2e3r4' | sudo chpasswd
sudo su - admin -c "maildirmake /home/admin/Maildir"
maildirmake 会在 ~/Maildir 下生成 cur/ new/ tmp/ 与 maildirfolder。
五、启动并验证
sudo systemctl restart courier-authdaemon courier-mta courier-msa courier-mta-ssl \
courier-imap courier-imap-ssl courier-pop courier-pop-ssl
确认 9 个单元全部 running(courierfilter 默认 inactive 是正常的,那是过滤器框架):
$ systemctl list-units --type=service --all | grep courier
courier-authdaemon.service loaded active running Courier Authentification Daemon
courier-imap-ssl.service loaded active running Courier IMAP Daemon (SSL)
courier-imap.service loaded active running Courier IMAP Daemon
courier-msa.service loaded active running Courier ESMTP Daemon
courier-mta-ssl.service loaded active running Courier ESMTP Daemon
courier-mta.service loaded active running Courier ESMTP Daemon
courier-pop-ssl.service loaded active running Courier POP3 Daemon (SSL)
courier-pop.service loaded active running Courier POP3 Daemon
courier.service loaded active running Courier Daemon
courierfilter.service loaded inactive dead Courier Filter Daemon
七个端口全部监听:
$ ss -ltn | grep -E ':(25|110|143|465|587|993|995) '
LISTEN 0 4096 *:993 *:*
LISTEN 0 4096 *:995 *:*
LISTEN 0 4096 *:587 *:*
LISTEN 0 4096 *:465 *:*
LISTEN 0 4096 *:110 *:*
LISTEN 0 4096 *:25 *:*
LISTEN 0 4096 *:143 *:*
六、收发信实测
发一封本地信:
echo -e "Subject: hello\n\nfirst mail" | sendmail admin
SMTPS(465)AUTH 实测:
$ openssl s_client -connect 127.0.0.1:465
220 mail.quzuo-test.cn ESMTP
EHLO t
250-AUTH PLAIN LOGIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256
AUTH PLAIN AGFkbWluAHExdzJlM3I0
235 Ok
Submission(587,STARTTLS 之后)AUTH 实测:
250-AUTH PLAIN LOGIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256
235 Ok
IMAPS(993)登录并选中信箱:
a LOGIN admin q1w2e3r4
a OK LOGIN Ok.
b SELECT INBOX
* 14 EXISTS
POP3(110)登录实测:
+OK Hello there.
USER admin
+OK Password required.
PASS q1w2e3r4
+OK logged in.
AUTH PLAIN AGFkbWluAHExdzJlM3I0是\0admin\0q1w2e3r4的 Base64。生产环境务必把 993/995/465 的证书换成正式证书(替换/etc/courier/imapd.pem、pop3d.pem、esmtpd.pem后重启对应服务)。
七、常见问题
- AUTH 报
535 Authentication rejected:九成是ESMTPAUTH_TLS改在了esmtpd-msa而不是主文件esmtpd,或改完没systemctl restart courier-msa courier-mta-ssl。 - 587 端口没监听:
ESMTPDSTART=NO没改(见 3.2)。 sendmail -bp不显示队列:Courier 的 sendmail 兼容层不支持-bp列队,用mailq(见 CLI 篇)。- 发往 postmaster 的信不见了:默认空别名丢弃所致(见 3.4)。
- 想换正式证书:替换对应
.pem(私钥+证书合一文件),重启服务即可,无需额外参数。
八、参考来源
- Ubuntu jammy 包页:https://packages.ubuntu.com/jammy/courier-mta
- Courier 官方安装文档:https://www.courier-mta.org/install.html
- 本专栏配置篇:《Courier MTA 1.0.16 配置参数详解》(SPF/DKIM/DMARC 实测)
- 本专栏命令篇:《Courier MTA 1.0.16 常用 CLI 命令详解》