Ubuntu 22.04 安装 Cyrus IMAP 3.4 指南
Ubuntu 22.04 在线 apt 与离线 deb 闭包两方案安装 Cyrus IMAP 3.4.3,含 pop3 缺包排障、管理员初始化与登录验证,全程实测。
Ubuntu 22.04 安装 Cyrus IMAP 3.4 指南
目标:在 Ubuntu 22.04 LTS 服务器上从零安装并跑通 Cyrus IMAP 3.4(官方仓库版 3.4.3),覆盖在线 apt 与离线 deb 包两种方案,含默认配置排障、管理员初始化、IMAP 登录验证与卸载。全文命令与回显已在 Ubuntu 22.04.5 LTS(x86_64)实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(Jammy),x86_64
- 软件版本:cyrus-imapd 3.4.3-3ubuntu0.3(jammy-updates/universe 仓库)
- 上游最新稳定版:3.12.4(2026-09-09 发布,见《Cyrus IMAP 3 介绍与选型指南》版本对比)
- 安装后关键路径:配置
/etc/imapd.conf、/etc/cyrus.conf;数据/var/lib/cyrus;邮件存储/var/spool/cyrus/mail;守护进程/usr/lib/cyrus/bin/master - 监听端口:IMAP 143(本指南),IMAPS 993 / Sieve 4190(配置篇展开)
- 演示账号:管理员
cyrus、业务用户admin,密码均为q1w2e3r4(仅演示环境)
二、前置条件
- 一台干净的 Ubuntu 22.04 服务器,具备 root 或 sudo 权限;
- 在线方案需可访问 Ubuntu 官方源(archive.ubuntu.com);离线方案需另一台同版本联网机器准备安装包;
- 服务器已正确设置主机名(Cyrus SASL 默认以主机名作为认证域,本文示例用
mail.example.com;无域名场景保持默认主机名亦可,全流程命令不受影响)。
三、版本选型说明
| 渠道 | 版本 | 特点 | 适用 |
|---|---|---|---|
| Ubuntu 22.04 官方仓库(本文方案 A/B) | 3.4.3-3ubuntu0.3 | 免编译、自带 systemd 单元、随系统安全更新 | 绝大多数自建场景 |
| 上游源码编译 | 3.12.4 | 最新特性(JMAP 增强、备份体系完善),需自行解决一串编译依赖 | 追新/特定特性需求 |
仓库候选版本实测如下:
apt-cache policy cyrus-imapd
cyrus-imapd:
Installed: (none)
Candidate: 3.4.3-3ubuntu0.3
Version table:
3.4.3-3ubuntu0.3 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages
3.4.3-3build2 500
仓库版与上游差了一个大版本族(3.4 vs 3.12),但 3.4 仍随 Ubuntu 22.04 生命周期获得安全补丁,是省心之选;本文以仓库版为主线。
四、在线安装方案(A:官方 apt 仓库)
4.1 方案说明
直接 apt-get install 安装 cyrus-imapd 及配套工具包,是最快路径。需要注意:Ubuntu 的 Cyrus 被拆成多个二进制包,cyrus-imapd 只含 IMAP,POP3/NNTP/CalDAV 分别在 cyrus-pop3d/cyrus-nntpd/cyrus-caldav 包中——这是后面启动排障的关键背景。
4.2 安装软件包
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y cyrus-imapd cyrus-admin cyrus-clients sasl2-bin
安装完成确认(实测回显):
dpkg -l | grep -E "^ii.*cyrus"
ii cyrus-admin 3.4.3-3ubuntu0.3 amd64 Cyrus mail system - administration tools
ii cyrus-clients 3.4.3-3ubuntu0.3 amd64 Cyrus mail system - test clients
ii cyrus-common 3.4.3-3ubuntu0.3 amd64 Cyrus mail system - common files
ii cyrus-imapd 3.4.3-3ubuntu0.3 amd64 Cyrus mail system - IMAP support
ii libcyrus-imap-perl:amd64 3.4.3-3ubuntu0.3 amd64 Interface to Cyrus imap client imclient library
四个包的分工:cyrus-imapd 是服务本体;cyrus-common 是公共库与目录骨架;cyrus-admin 提供 cyradm 管理 Shell;cyrus-clients 提供 imtest/pop3test 等测试客户端(路径在 /usr/lib/cyrus/bin/,不在默认 PATH)。
4.3 启动排障:master 找不到 pop3 可执行文件
直接启动会失败,这是 Ubuntu 打包的经典坑:
systemctl start cyrus-imapd
systemctl status cyrus-imapd --no-pager
● cyrus-imapd.service - Cyrus IMAP/POP3 daemons
Active: failed (Result: exit-code)
查看日志定位原因:
journalctl -u cyrus-imapd --no-pager -n 5
cyrus/master[3822]: cannot find executable for service 'pop3'
cyrus/master[3822]: exiting
systemd[1]: cyrus-imapd.service: Main process exited, code=exited, status=78/CONFIG
原因:默认 /etc/cyrus.conf 的 SERVICES 段启用了 pop3、nntp、http 服务条目,但 pop3d/nntpd/httpd 分别属于未安装的 cyrus-pop3d/cyrus-nntpd/cyrus-caldav 包,master 找不到可执行文件便整体退出。
解决:只保留实际需要的服务。若只做 IMAP,把这三行注释掉(注意行首有制表符缩进):
sed -i -E 's/^(\s*)(pop3|nntp|http)\t/\1#\2\t/' /etc/cyrus.conf
grep -nE '^\s*#?\s*(imap|pop3|nntp|http|sieve|lmtpunix)\s' /etc/cyrus.conf
31: imap cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
33: #pop3 cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
35: #nntp cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100
37: #http cmd="httpd -U 30" listen="8008" prefork=0 maxchild=100
44: lmtpunix cmd="lmtpd" listen="/run/cyrus/socket/lmtp" prefork=0 maxchild=20
49: sieve cmd="timsieved" listen="localhost:sieve" prefork=0 maxchild=100
⚠️ 注意:如需 POP3 服务,另一条路是补装软件包
apt-get install -y cyrus-pop3d,不必注释;两种方式按业务取舍。
4.4 指定管理员并启动服务
非交互安装的 /etc/imapd.conf 没有 admins 行(debconf 交互步骤被跳过),必须手工补上,否则无人可执行邮箱管理操作:
sed -i '1i admins: cyrus' /etc/imapd.conf
head -2 /etc/imapd.conf
admins: cyrus
# Debian Cyrus imapd.conf
启动并设置开机自启:
systemctl enable cyrus-imapd
systemctl start cyrus-imapd
systemctl is-active cyrus-imapd
active
验证监听(143 为 IMAP,4190 为 ManageSieve,默认仅绑定 localhost):
ss -ltnp | grep -E ":(143|4190)"
LISTEN 0 32 127.0.0.1:4190 0.0.0.0:* users:(("cyrmaster",pid=4035,fd=18))
LISTEN 0 32 0.0.0.0:143 0.0.0.0:* users:(("cyrmaster",pid=4035,fd=6))
4.5 初始化管理员与业务账号
Cyrus 默认认证后端是 SASL auxprop(本地 /etc/sasldb2 数据库)。创建管理员 cyrus 与业务用户 admin(演示密码 q1w2e3r4):
echo q1w2e3r4 | saslpasswd2 -p -c cyrus
echo q1w2e3r4 | saslpasswd2 -p -c admin
sasldblistusers2
admin@mail.example.com: userPassword
cyrus@mail.example.com: userPassword
⚠️ 注意:账号条目后缀(
@后)是 SASL 认证域,默认取本机主机名;/etc/imapd.conf中设置了servername: mail.example.com时,需用saslpasswd2 -p -c -u mail.example.com 用户名显式指定域,二者必须一致,否则登录报authentication failure。本文已在配置中设置servername: mail.example.com。
用测试客户端验证 IMAP 登录:
/usr/lib/cyrus/bin/imtest -m login -u cyrus -a cyrus -w q1w2e3r4 localhost
S: * OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=SCRAM-SHA-1 AUTH=SCRAM-SHA-256 AUTH=DIGEST-MD5 AUTH=NTLM AUTH=CRAM-MD5 AUTH=LOGIN AUTH=PLAIN SASL-IR] mail.example.com Cyrus IMAP 3.4.3-dirty-Debian-3.4.3-3ubuntu0.3 server ready
S: L01 OK [CAPABILITY ...] User logged in SESSIONID=<cyrus-1792901871-4313-1-8982163484700182305>
(第二行 CAPABILITY 列表较长,已省略中段,实测完整列表见配置篇。)
出现 User logged in 即安装验证通过。
五、离线 deb 包安装方案(B:断网服务器)
5.1 方案说明
断网服务器无法访问 apt 仓库,需在同版本联网机器上把 cyrus-imapd 及其完整依赖闭包 下载为 deb 包,拷贝到目标机用 dpkg 安装。关键点是必须拿到依赖闭包——只下载 5 个包会在目标机报一串依赖缺失。
5.2 联网机器准备离线包
在一台能联网的 Ubuntu 22.04 上执行(--download-only 会把包及全部依赖下载到 apt 缓存而不安装):
apt-get update
apt-get install -y --download-only cyrus-imapd cyrus-admin cyrus-clients sasl2-bin
Fetched 46.4 MB in 6s (7190 kB/s)
Download complete and in download only mode
确认缓存中的包数量并打包:
ls /var/cache/apt/archives/*.deb | wc -l
67
cd /var/cache/apt/archives && tar czf /root/cyrus-offline-debs.tar.gz *.deb
ls -l /root/cyrus-offline-debs.tar.gz
-rw-r--r-- 1 root root 46157857 Oct 25 04:26 /root/cyrus-offline-debs.tar.gz
5.3 目标机离线安装
把 cyrus-offline-debs.tar.gz 拷贝(scp/U 盘)到断网服务器,解压并安装:
mkdir -p /root/cyrus-offline && cd /root/cyrus-offline
tar xzf /root/cyrus-offline-debs.tar.gz
dpkg -i *.deb
dpkg --configure -a
验证二进制可用:
/usr/lib/cyrus/bin/master -V
cyrus-imapd 3.4.3-dirty-Debian-3.4.3-3ubuntu0.3
⚠️ 注意:若只拷贝了
apt-get download cyrus-imapd ...得到的 5 个包,dpkg -i会因缺libsasl2-2、libicu70、libjansson4、db-util等 67 个依赖报dependency problems - leaving unconfigured,必须用 5.2 的--download-only方式取完整闭包。离线机后续启动、配置步骤与方案 A 的 4.3~4.5 完全一致。
六、方案对比与选择建议
| 维度 | A 在线 apt | B 离线 deb 包 |
|---|---|---|
| 版本 | 3.4.3-3ubuntu0.3 | 同左(同源) |
| 是否需联网 | 目标机需联网 | 仅需一台联网准备机 |
| 安装方式 | apt-get install | dpkg -i 完整闭包 |
| systemd 服务 | cyrus-imapd.service(包自带) | 同左 |
| 监听端口 | 143/4190 | 143/4190 |
| 优点 | 一条命令、自动处理依赖与更新 | 可审计、可入库归档分发 |
| 缺点 | 依赖仓库可达 | 准备闭包步骤多、升级同样离线 |
选择建议:能联网一律走方案 A;内网隔离/合规要求介质分发的环境走方案 B,并把 cyrus-offline-debs.tar.gz 纳入内部软件仓库管理。
七、配置说明
安装完成后两个核心配置文件:
/etc/imapd.conf:服务参数(存储路径、认证方式、管理员、TLS 等),常用键的逐项说明与 TLS/SASL 加固实测见《Cyrus IMAP 3.4 配置参数详解》;/etc/cyrus.conf:master 进程编排文件,START(启动钩子)/SERVICES(监听服务)/EVENTS(定时任务)三段,本指南 4.3 已演示按需裁剪SERVICES。
安装即生效的默认关键项(/etc/imapd.conf,已实测读取):
configdirectory: /var/lib/cyrus # 邮箱元数据库目录
partition-default: /var/spool/cyrus/mail # 邮件存储分区
sasl_pwcheck_method: auxprop # 本地 sasldb2 认证
allowplaintext: yes # 默认允许明文登录(生产应改 no,见配置篇)
hashimapspool: true # 存储目录按用户名首字母散列
八、常见问题(FAQ)
Q1:启动报 cannot find executable for service 'pop3'?
默认 cyrus.conf 启用了 pop3/nntp/http 但对应包未装。注释对应行(见 4.3)或 apt-get install -y cyrus-pop3d cyrus-nntpd cyrus-caldav。
Q2:启用 imaps 后报 multiple entries for service 'imaps'?
cyrus.conf 中 Murder 代理段也有一行被注释的 imaps cmd="proxyd -s ...",放开注释时若误放开两行就会重名。确认只保留 imapd -s 那一行(配置篇有实录)。
Q3:imtest 提示 command not found?
测试客户端不在 PATH,用全路径 /usr/lib/cyrus/bin/imtest。
Q4:saslpasswd2 交互式创建的账号登录报 StoredKey mismatch?
用管道双次输入密码交互建号偶发校验器不一致,改用非交互方式重建:saslpasswd2 -d 用户名 删除后 echo 'q1w2e3r4' | saslpasswd2 -p -c 用户名(-p 从标准输入读一次)。
Q5:登录报 authentication failure 但密码确定正确?
检查认证域:sasldblistusers2 看到的 用户@域 中的域必须与 imapd 的 realm 一致(默认主机名,或被 servername 覆盖)。不一致时用 saslpasswd2 -p -c -u <域> 用户名 重建。
九、卸载与清理
systemctl stop cyrus-imapd
systemctl disable cyrus-imapd
apt-get purge -y cyrus-imapd cyrus-admin cyrus-clients cyrus-common libcyrus-imap-perl
rm -rf /var/lib/cyrus /var/spool/cyrus /var/spool/sieve /etc/sasldb2
purge 删除配置,四条 rm 清掉邮件数据、Sieve 脚本与 SASL 账号库,卸载即彻底。
十、参考链接
- Cyrus IMAP 官方文档(3.4 分支):https://www.cyrusimap.org/3.4/
- Ubuntu Packages:cyrus-imapd (jammy):https://packages.ubuntu.com/jammy/cyrus-imapd
- Cyrus IMAP 下载页:https://www.cyrusimap.org/imap/download.html
- 专栏导览:《Cyrus IMAP 3 介绍与选型指南》