Dovecot 2.3.16 Ubuntu 22.04 安装指南
在 Ubuntu 22.04 上从零通过 apt 安装 Dovecot 2.3.16 邮件服务器,完成 Maildir 存储配置、systemd 托管、IMAP/POP3 四端口验证与 openssl s_client 真实登录,并覆盖离线 deb 安装、版本锁定与卸载清理的完整闭环。
Dovecot 2.3.16 Ubuntu 22.04 安装指南
目标:在 Ubuntu 22.04 服务器上从零安装并运行 Dovecot IMAP/POP3 邮件服务器,完成 Maildir 存储配置、测试用户创建、systemd 托管、IMAP/POP3 端口验证与真实 TLS 登录测试。全部命令与回显已在 Ubuntu 22.04.5 LTS(x86_64,Dovecot 2.3.16)实测通过。
一、环境信息
本篇所有命令均在以下环境中逐条实测,读者复现时应保持相近版本:
- 操作系统:Ubuntu 22.04.5 LTS(x86_64,内核 6.8.0-138-generic)
- 软件版本:Dovecot 2.3.16 (7e2e900c1a),包名
1:2.3.16+dfsg1-3ubuntu2.9,Pigeonhole 0.5.16 - 服务器主机名:mail.example.com
- 监听端口:143(IMAP)、993(IMAPS)、110(POP3)、995(POP3S)
- 配置目录:
/etc/dovecot/(主配置/etc/dovecot/dovecot.conf,分片配置/etc/dovecot/conf.d/*.conf) - 邮件存储:
maildir:~/Maildir(用户家目录下 Maildir) - 服务管理:systemd(
dovecot.service)
二、软件概览与版本选型
2.1 Dovecot 是什么
Dovecot 是一款以安全著称的开源 IMAP/POP3 邮件服务器,采用 C 语言编写,最早发布于 2002 年。它的定位是「邮件投递之后」的服务:由 Postfix、Exim 等 MTA 把邮件送进用户邮箱,Dovecot 负责让用户通过 IMAP/POP3 协议读取这些邮件。Dovecot 同时提供 LDA/LMTP 投递代理、Sieve 过滤(Pigeonhole)、配额管理、加密同步(dsync)等配套能力,是 Linux 邮件系统里与 Postfix 搭配使用最广泛的组合。
先在本机确认 apt 仓库可提供的版本:
apt-cache policy dovecot-core
实测输出:
dovecot-core:
Installed: (none)
Candidate: 1:2.3.16+dfsg1-3ubuntu2.9
Version table:
💡 说明:Ubuntu 22.04(jammy)仓库自带 Dovecot 2.3.16,这是 2.3 系列的稳定版本,
+dfsg1是 Debian/Ubuntu 对源码包的再打包标记,3ubuntu2.9是安全与缺陷修补号。直接使用仓库版本即可,无需第三方源。
2.2 安装包组件说明
Dovecot 在 Ubuntu 中按功能拆分为多个包,按需安装:
| 包名 | 作用 | 本篇是否安装 |
|---|---|---|
| dovecot-core | 核心服务与配置(含 POP3 支持) | 是 |
| dovecot-imapd | IMAP 协议支持(143/993) | 是 |
| dovecot-pop3d | POP3 协议支持(110/995) | 是 |
| dovecot-lmtpd | LMTP 投递代理(供 Postfix 投递用) | 否(见《Dovecot 2.3.16 快速入门与 Postfix 集成示例》) |
| dovecot-mysql / dovecot-pgsql / dovecot-ldap | 虚拟用户后端 | 否 |
| dovecot-sieve / dovecot-solr | 过滤脚本、全文检索扩展 | 否 |
关键差异:只装 dovecot-core 时仅 110/995(POP3)可用;IMAP 端口 143/993 需要 dovecot-imapd。生产邮件系统通常 IMAP 为主、POP3 为辅,本篇三个包全部安装。
2.3 邮件存储格式选型
💡 技术拓展:Linux 邮件存储不止本篇采用的 Maildir 一种,常见格式对比——
格式 原理/特点 适用场景 mbox 所有邮件拼接进一个文件,靠空行加 From行分隔用户少、邮件量小; /var/mail传统格式Maildir 每封邮件一个独立文件,分 cur/new/tmp 三个子目录 绝大多数现代部署;防损坏、可被多个进程安全并发访问 dbox(mdbox/sdbox) 多邮件打包进 dbox 文件 + 索引,空间效率最高 大规模存储优化;配合 dsync 迁移方便 本文采用 Maildir(
mail_location = maildir:~/Maildir),理由:单文件单邮件不存在 mbox 的"一损俱损"问题,且与 Postfix、配额插件(maildir 后端)的兼容性最好,是 Dovecot 官方文档推荐的主流通用格式。
三、方案 A:apt 在线安装(推荐)
3.1 方案说明
在线安装从 Ubuntu 官方仓库获取软件包,自动解析依赖并注册 systemd 服务,是最简单可靠的安装方式,适合所有能访问公网或内网镜像源的服务器。整个过程分为:更新索引 → 安装组件 → 核对产物。
3.2 更新软件包索引
apt-get update
实测输出(节选首尾):
Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [2,974 kB]
...
Reading package lists... Done
3.3 安装 Dovecot 组件
DEBIAN_FRONTEND=noninteractive apt-get install -y dovecot-core dovecot-imapd dovecot-pop3d
实测输出(节选):
Creating config file /etc/dovecot/conf.d/auth-system.conf.ext with new version
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /lib/systemd/system/dovecot.service.
Setting up dovecot-imapd (1:2.3.16+dfsg1-3ubuntu2.9) ...
Creating config file /etc/dovecot/conf.d/20-imap.conf with new version
Setting up dovecot-pop3d (1:2.3.16+dfsg1-3ubuntu2.9) ...
Creating config file /etc/dovecot/conf.d/20-pop3.conf with new version
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...
💡 说明:安装器完成了三件关键事情——写入全套配置文件到
/etc/dovecot/conf.d/、注册dovecot.service到 systemd(Created symlink ... multi-user.target.wants,即安装即开机自启)、创建自签名证书(见 3.4)。DEBIAN_FRONTEND=noninteractive用于避免安装过程中的交互式提问(如是否允许 auth-system 等旧配置覆盖),无人值守环境必加。
3.4 核对安装产物
确认版本与包列表:
dovecot --version
实测输出:
2.3.16 (7e2e900c1a)
dpkg -l | grep dovecot
实测输出:
ii dovecot-core 1:2.3.16+dfsg1-3ubuntu2.9 amd64 secure POP3/IMAP server - core files
ii dovecot-imapd 1:2.3.16+dfsg1-3ubuntu2.9 amd64 secure POP3/IMAP server - IMAP daemon
ii dovecot-pop3d 1:2.3.16+dfsg1-3ubuntu2.9 amd64 secure POP3/IMAP server - POP3 daemon
确认配置目录结构:
ls /etc/dovecot/ /etc/dovecot/conf.d/
实测输出:
/etc/dovecot/:
conf.d
dovecot-dict-auth.conf.ext
dovecot-dict-sql.conf.ext
dovecot-sql.conf.ext
dovecot.conf
private
/etc/dovecot/conf.d/:
10-auth.conf
10-director.conf
10-logging.conf
10-mail.conf
10-master.conf
10-ssl.conf
10-tcpwrapper.conf
15-lda.conf
15-mailboxes.conf
20-imap.conf
20-pop3.conf
90-acl.conf
90-plugin.conf
90-quota.conf
auth-checkpassword.conf.ext
auth-deny.conf.ext
auth-dict.conf.ext
auth-master.conf.ext
auth-passwdfile.conf.ext
auth-sql.conf.ext
auth-static.conf.ext
auth-system.conf.ext
💡 说明:
dovecot.conf是入口配置,通过!include conf.d/*.conf把conf.d/下的分片配置全部引入。文件名前缀数字代表加载顺序,10-是基础(邮件/认证/SSL/进程),15-是投递,20-是协议,90-是插件。安装时自动生成的自签名证书在/etc/dovecot/private/下(符号链接指向 ssl-cert 包的 snakeoil 证书):
ls -l /etc/dovecot/private/
实测输出:
total 0
lrwxrwxrwx 1 root root 38 Oct 16 15:19 dovecot.key -> /etc/ssl/private/ssl-cert-snakeoil.key
lrwxrwxrwx 1 root root 36 Oct 16 15:19 dovecot.pem -> /etc/ssl/certs/ssl-cert-snakeoil.pem
四、方案 B:deb 离线安装(断网/内网环境)
4.1 方案说明
当目标服务器无法访问 apt 仓库时,可在另一台同架构、同发行版联网机器上把 deb 包下载下来,拷贝到目标机用 dpkg -i 安装。适用前提:两台机器均为 Ubuntu 22.04 amd64,且目标机已具备基本依赖库。若目标机缺依赖,可参照 4.2 的方法把依赖一并下载。
4.2 在联网机器下载离线包
mkdir -p /tmp/dovecot-deb && cd /tmp/dovecot-deb
apt-get download dovecot-core dovecot-imapd dovecot-pop3d
实测输出(节选):
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 dovecot-pop3d amd64 1:2.3.16+dfsg1-3ubuntu2.9 [37.7 kB]
Fetched 3550 kB in 7s (514 kB/s)
ls -l dovecot*.deb
实测输出:
-rw-r--r-- 1 root root 3319370 Jun 2 12:30 dovecot-core_1%3a2.3.16+dfsg1-3ubuntu2.9_amd64.deb
-rw-r--r-- 1 root root 192898 Jun 2 12:30 dovecot-imapd_1%3a2.3.16+dfsg1-3ubuntu2.9_amd64.deb
-rw-r--r-- 1 root root 37734 Jun 2 12:30 dovecot-pop3d_1%3a2.3.16+dfsg1-3ubuntu2.9_amd64.deb
💡 说明:若目标机连基础依赖(如
ucf、ssl-cert)都不具备,需把依赖一并下载。用apt-cache depends --recurse --no-recommends --no-suggests dovecot-core | grep "^\w" | sort -u列出完整依赖树后,将其作为apt-get download的参数一并下载。更省事的替代做法:目标机/etc/apt/sources.list指向同版本内网镜像源,仍走方案 A。
4.3 在目标机安装离线包
把上一步的 deb 文件拷贝到目标机(如 /tmp/dovecot-deb/),执行:
cd /tmp/dovecot-deb
dpkg -i dovecot-core_*.deb dovecot-imapd_*.deb dovecot-pop3d_*.deb
实测输出(节选首尾):
Selecting previously unselected package dovecot-core.
Preparing to unpack ... dovecot-core_1%3a2.3.16+dfsg1-3ubuntu2.9_amd64.deb ...
Unpacking dovecot-core (1:2.3.16+dfsg1-3ubuntu2.9) ...
...
Processing triggers for dovecot-core (1:2.3.16+dfsg1-3ubuntu2.9) ...
4.4 验证离线安装结果
dovecot --version && dpkg -l | grep -c dovecot
实测输出:
2.3.16 (7e2e900c1a)
3
⚠️ 注意:
dpkg -i不会自动安装缺失依赖。若输出中出现dependency problems字样,记录缺失的包名(如ucf、ssl-cert),回到联网机器把这些包加入apt-get download的参数一并下载后重新dpkg -i;不要在断网机器上运行apt-get install -f(它会尝试联网下载)。
五、多方案对比与选择建议
| 维度 | 方案 A:apt 在线 | 方案 B:deb 离线 |
|---|---|---|
| 版本 | 仓库最新(2.3.16+dfsg1-3ubuntu2.9) | 与下载机一致 |
| 是否需联网 | 安装时需要 | 安装时不需要 |
| 依赖处理 | 自动解析安装 | 手工补齐或依赖树整体下载 |
| systemd 服务注册 | 自动(安装即开机自启) | 自动(dpkg 同样执行 postinst) |
| 适用场景 | 常规服务器 | 内网隔离、批量分发 |
选择建议:能联网一律走方案 A;批量分发到同规格内网机器时用方案 B,且务必带上完整依赖树。
六、基础配置
6.1 配置邮件存储位置
默认配置使用 mbox 存储(mail_location = mbox:~/mail:INBOX=/var/mail/%u)。按 2.3 节的选型改为 Maildir。编辑 /etc/dovecot/conf.d/10-mail.conf,找到第 30 行:
sed -i 's|^mail_location = mbox:~/mail:INBOX=/var/mail/%u|mail_location = maildir:~/Maildir|' /etc/dovecot/conf.d/10-mail.conf
grep -n '^mail_location' /etc/dovecot/conf.d/10-mail.conf
实测输出:
30:mail_location = maildir:~/Maildir
💡 说明:
mail_location中的变量——~表示用户家目录;%u是完整用户名;%d是域名(虚拟域场景用)。maildir:~/Maildir表示每个用户的邮件存到其家目录的Maildir子目录。改完立即用doveconf -n核对生效值:
doveconf -n
实测输出:
# 2.3.16 (7e2e900c1a): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.16 (09c29328)
# OS: Linux 6.8.0-138-generic x86_64 Ubuntu 22.04.5 LTS
# Hostname: mail.example.com
mail_location = maildir:~/Maildir
mail_privileged_group = mail
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
driver = pam
}
protocols = " imap pop3"
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
driver = passwd
}
💡 说明:
doveconf -n只输出「与默认值不同」的配置,是检查配置变更的标准姿势(排障时请把它的输出发给支持方而不是贴整个配置文件)。当前可见:认证走 PAM 系统用户(passdb pam)+ passwd 用户库(userdb passwd),协议为 imap + pop3,密钥值被隐藏(需-P参数才显示)。
6.2 创建测试用户
Dovecot 默认认证方式(PAM + /etc/passwd)直接使用系统用户。创建一个收信测试用户并设置密码:
useradd -m -s /bin/bash mailuser
echo 'mailuser:q1w2e3r4' | chpasswd
id mailuser
实测输出:
uid=1000(mailuser) gid=1000(mailuser) groups=1000(mailuser)
⚠️ 注意:
q1w2e3r4仅为演示用固定测试口令,生产环境必须换成强密码策略管理的口令。-m参数保证创建家目录/home/mailuser——首次 IMAP 登录后 Dovecot 会自动在其下创建Maildir/结构。
七、启动服务与验证
7.1 systemd 启动与开机自启
systemctl enable dovecot
实测输出:
Synchronizing state of dovecot.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable dovecot
systemctl start dovecot
systemctl status dovecot --no-pager
实测输出(节选):
● dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/lib/systemd/system/dovecot.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2026-10-16 15:20:45 UTC; 3ms ago
Docs: man:dovecot(1)
https://doc.dovecot.org/
Main PID: 3315 (dovecot)
Status: "v2.3.16 (7e2e900c1a) running"
Memory: 2.9M
确认服务当前状态:
systemctl is-active dovecot
实测输出:
active
7.2 验证监听端口
ss -tlnp | grep dovecot
实测输出:
LISTEN 0 100 0.0.0.0:993 0.0.0.0:* users:(("dovecot",pid=3315,fd=40))
LISTEN 0 100 0.0.0.0:995 0.0.0.0:* users:(("dovecot",pid=3315,fd=23))
LISTEN 0 100 0.0.0.0:143 0.0.0.0:* users:(("dovecot",pid=3315,fd=38))
LISTEN 0 100 0.0.0.0:110 0.0.0.0:* users:(("dovecot",pid=3315,fd=21))
LISTEN 0 100 [::]:993 [::]:* users:(("dovecot",pid=3315,fd=41))
LISTEN 0 100 [::]:995 [::]:* users:(("dovecot",pid=3315,fd=24))
LISTEN 0 100 [::]:143 [::]:* users:(("dovecot",pid=3315,fd=39))
LISTEN 0 100 [::]:110 [::]:* users:(("dovecot",pid=3315,fd=22))
💡 说明:四个端口全部监听在 IPv4(0.0.0.0)与 IPv6([::])双栈——143/993 是 IMAP/IMAPS,110/995 是 POP3/POP3S。若防火墙开启,需放行这些端口(
ufw allow 143,993,110,995/tcp)。
7.3 IMAPS 真实登录测试
用 openssl s_client 建立 TLS 连接并执行真实 IMAP 会话(登录 → 列邮箱 → 查状态 → 登出):
printf 'a1 LOGIN mailuser q1w2e3r4\r\na2 LIST "" *\r\na3 STATUS INBOX (MESSAGES UNSEEN)\r\na4 LOGOUT\r\n' | openssl s_client -connect localhost:993 -quiet
实测输出:
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] Dovecot (Ubuntu) ready.
a1 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE] Logged in
* LIST (\HasNoChildren) "." INBOX
a2 OK List completed (0.001 + 0.000 + 0.001 secs).
* STATUS INBOX (MESSAGES 0 UNSEEN 0)
a3 OK Status completed (0.003 + 0.000 + 0.002 secs).
* BYE Logging out
a4 OK Logout completed (0.000 + 0.000 secs).
💡 说明:
a1~a4是 IMAP 协议要求客户端给每条命令加的标签(tag),服务器原样回应。a1 OK ... Logged in即认证成功;首次登录同时触发了/home/mailuser/Maildir/的自动创建:
ls -la /home/mailuser/Maildir/
实测输出:
total 36
drwx------ 5 mailuser mailuser 4096 Oct 16 15:21 .
drwxr-x--- 3 mailuser mailuser 4096 Oct 16 15:21 ..
drwx------ 2 mailuser mailuser 4096 Oct 16 15:21 cur
-rw------- 1 mailuser mailuser 51 Oct 16 15:21 dovecot-uidlist
-rw------- 1 mailuser mailuser 8 Oct 16 15:21 dovecot-uidvalidity
-r--r--r-- 1 mailuser mailuser 0 Oct 16 15:21 dovecot-uidvalidity.6ad240e8
-rw------- 1 mailuser mailuser 320 Oct 16 15:21 dovecot.index.log
-rw------- 1 mailuser mailuser 400 Oct 16 15:21 dovecot.list.index.log
drwx------ 2 mailuser mailuser 4096 Oct 16 15:21 new
drwx------ 2 mailuser mailuser 4096 Oct 16 15:21 tmp
7.4 POP3S 真实登录测试
printf 'user mailuser\r\npass q1w2e3r4\r\nlist\r\nquit\r\n' | openssl s_client -connect localhost:995 -quiet
实测输出:
+OK Dovecot (Ubuntu) ready.
+OK
+OK Logged in.
+OK 0 messages:
.
+OK Logging out.
7.5 明文端口的 TLS 要求验证(143 端口安全行为)
Dovecot 默认 disable_plaintext_auth = yes(用 doveconf -h disable_plaintext_auth 可查得 yes),即非 TLS 连接拒绝明文密码。从另一台机器(非本机地址)连接 143 端口时 capability 中会出现 LOGINDISABLED,明文 LOGIN 会被拒绝:
printf 'a1 LOGIN mailuser q1w2e3r4\r\na2 LOGOUT\r\n' | nc mail.example.com 143
实测输出(从远程机器连接):
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS LOGINDISABLED] Dovecot (Ubuntu) ready.
* BAD [ALERT] Plaintext authentication not allowed without SSL/TLS, but your client did it anyway. If anyone was listening, the password was exposed.
a1 NO [PRIVACYREQUIRED] Plaintext authentication disallowed on non-secure (SSL/TLS) connections.
* BYE Logging out
a2 OK Logout completed.
💡 说明:
PRIVACYREQUIRED是预期行为,不是故障——远程明文密码登录被安全策略拦截,客户端应改用 993(IMAPS)或先发STARTTLS升级加密。而本机(localhost)发起的连接被 Dovecot 视为安全连接,明文 LOGIN 允许通过,这是同一配置下两种结果的原因。
7.6 doveadm 用户查询
doveadm user mailuser
实测输出:
field value
uid 1000
gid 1000
home /home/mailuser
mail maildir:~/Maildir
system_groups_user mailuser
💡 说明:
doveadm user显示 Dovecot 从用户库解析出的最终投递属性(uid/gid/home/mail 位置),是排查「邮件投到了哪」的第一工具。不带-u全列出则用doveadm user '*'(passwd 用户库支持通配)。
八、升级与版本管理
8.1 常规升级
apt 仓库版本的升级随系统更新自动完成:
apt-get update && apt-get upgrade -y dovecot-core dovecot-imapd dovecot-pop3d
升级后核对版本与服务状态:
dovecot --version && systemctl is-active dovecot
8.2 锁定版本(防止自动升级)
某些环境要求固定 Dovecot 版本(如与集群其他节点一致),用 apt-mark hold 锁定:
apt-mark hold dovecot-core
apt-mark showhold
实测输出:
dovecot-core set on hold.
dovecot-core
解除锁定:
apt-mark unhold dovecot-core
实测输出:
Canceled hold on dovecot-core.
💡 说明:hold 只对
dovecot-core锁定。dovecot-imapd/dovecot-pop3d与 core 是同源包,锁 core 后升级时 apt 会因版本依赖关系提示冲突,三个包建议同时 hold。
8.3 查询可用版本
apt-cache policy dovecot-core
Installed 行显示当前版本,Candidate 行显示可升级到的版本;两行一致即为最新。
九、常见问题(FAQ)
Q1:IMAP 登录报 NO [PRIVACYREQUIRED] Plaintext authentication disallowed?
这是远程明文连接触发 disable_plaintext_auth = yes 的正常拦截(见 7.5 节实测)。客户端改连 993 端口走 IMAPS,或在 143 端口先发 STARTTLS。若确需内网明文(不推荐),在 /etc/dovecot/conf.d/10-auth.conf 设置 disable_plaintext_auth = no 并重启服务,同时用 login_trusted_networks = 10.0.0.0/8 把受信网段标为安全。
Q2:邮件客户端连接 993 时提示证书不受信任?
安装时自动生成的是自签名证书(/etc/dovecot/private/dovecot.pem 链到 ssl-cert-snakeoil),客户端会提示无法验证。测试环境可直接接受;生产环境应替换为受信 CA 签发的证书并改 10-ssl.conf 的 ssl_cert/ssl_key 指向,参见《Dovecot 2.3.16 进阶实战与运维》SSL 一节。
Q3:systemctl start dovecot 失败,如何定位?
依次执行三步:systemctl status dovecot --no-pager -l 看退出码;journalctl -u dovecot --no-pager -n 50 看启动日志,Dovecot 的配置错误会直接打印 Fatal 行(如 Fatal: Error in configuration file ... line N);再用 doveconf -n 核对改动过的参数是否拼写正确。配置修正后 systemctl restart dovecot。
Q4:ss -tlnp 里看不到 993/995 端口?
说明 dovecot-imapd/dovecot-pop3d 没装或 protocols 被改。用 dpkg -l | grep dovecot 核对包,doveconf -h protocols 核对生效协议(本篇实测值为 " imap pop3")。补装包或恢复 protocols 后 systemctl restart dovecot。
Q5:远程客户端完全连不上 143/993?
在服务器本机 ss -tlnp | grep dovecot 确认监听存在,然后依次排查:ufw status / iptables -L -n 防火墙规则、云平台安全组是否放行对应 TCP 端口。本机监听正常 + 远程超时,九成是安全组。
十、卸载与清理
10.1 停止服务并卸载软件包
systemctl stop dovecot
DEBIAN_FRONTEND=noninteractive apt-get purge -y dovecot-core dovecot-imapd dovecot-pop3d
实测输出(节选):
Purging configuration files for dovecot-pop3d (1:2.3.16+dfsg1-3ubuntu2.9) ...
Purging configuration files for dovecot-core (1:2.3.16+dfsg1-3ubuntu2.9) ...
dpkg: warning: while removing dovecot-core, directory '/var/lib/dovecot' not empty so not removed
dpkg: warning: while removing dovecot-core, directory '/etc/dovecot/conf.d' not empty so not removed
Purging configuration files for dovecot-imapd (1:2.3.16+dfsg1-3ubuntu2.9) ...
Removing ucf (3.0043) ...
DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
10.2 验证卸载结果
dpkg -l | grep dovecot
which dovecot dovecadm
systemctl is-active dovecot
实测输出(dpkg -l 无输出、which 无输出,说明二进制与包已删除):
inactive
10.3 清理残留目录
purge 后会残留两个空目录(dpkg 因目录非空而保留,见 10.1 的 warning):
ls -la /etc/dovecot/conf.d/ /var/lib/dovecot/
实测输出:
/etc/dovecot/conf.d/:
total 8
drwxr-xr-x 2 root root 4096 Oct 16 15:23 .
drwxr-xr-x 3 root root 4096 Oct 16 15:23 ..
/var/lib/dovecot/:
total 16
drwxr-xr-x 2 root root 58 Oct 16 15:23 instances
...
确认无需保留配置后手工删除:
rm -rf /etc/dovecot /var/lib/dovecot
ls /etc/dovecot
实测输出:
ls: cannot access '/etc/dovecot': No such file or directory
⚠️ 注意:用户邮箱数据
/home/mailuser/Maildir(及各用户的家目录)不在卸载范围内,实测确认卸载后仍在。若要连同用户一起清理,先userdel -r mailuser删除用户及其家目录,再删除/var/mail/mailuser(如存在)。
十一、参考链接
- Dovecot 官网:https://dovecot.org
- Dovecot 官方文档(2.3):
https://doc.dovecot.org/configuration_manual/ - Ubuntu 包信息:
https://packages.ubuntu.com/jammy/dovecot-core - 邮件存储格式官方说明(Maildir):
https://doc.dovecot.org/configuration_manual/mail_location/#maildir - 相关文档:《Dovecot 2.3.8 CentOS 8 安装指南》《Dovecot 2.3.16 快速入门与 Postfix 集成示例》《Dovecot 2.3.16 配置参数详解》《Dovecot 2.3.16 进阶实战与运维》