Ubuntu 22.04 安装 Cyrus IMAP 3.4 指南

Ubuntu 22.04 在线 apt 与离线 deb 闭包两方案安装 Cyrus IMAP 3.4.3,含 pop3 缺包排障、管理员初始化与登录验证,全程实测。

Cyrus IMAPCyrus IMAP邮件服务器Ubuntu 22.042026/10/25

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 在线 aptB 离线 deb 包
版本3.4.3-3ubuntu0.3同左(同源)
是否需联网目标机需联网仅需一台联网准备机
安装方式apt-get installdpkg -i 完整闭包
systemd 服务cyrus-imapd.service(包自带)同左
监听端口143/4190143/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 账号库,卸载即彻底。

十、参考链接

Ubuntu 22.04 安装 Cyrus IMAP 3.4 指南 - Quzuo