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 MTACourier MTA邮件服务器Ubuntu2026/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-mtaESMTP 守护与队列核心(25 端口、发信、本地投递)
courier-imapIMAP4rev1 服务(143/993 端口)
courier-popPOP3 守护(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(私钥+证书合一文件),重启服务即可,无需额外参数。

八、参考来源