# 邮箱客户端配置指南(IMAP / POP3 / SMTP) > 适用于 clover 三叶草邮局实例。示例使用 `example.com`,请替换成你自己的域名。 > 面板地址:`https://<面板域名>`(例如 `https://panel.example.com`) --- ## 一、服务器参数(照抄) | 用途 | 服务器 | 端口 | 加密方式 | 用户名 | 密码 | |---|---|---|---|---|---| | **收信 IMAP**(推荐) | `mail.<你的域名>` 或服务器 IP | **993** | **SSL/TLS** | 完整邮箱地址 | 建邮箱时设的 | | 收信 IMAP(备选) | 同上 | 143 | STARTTLS | 同上 | 同上 | | **收信 POP3** | 同上 | **995** | **SSL/TLS** | 同上 | 同上 | | 收信 POP3(备选) | 同上 | 110 | STARTTLS | 同上 | 同上 | | **发信 SMTP**(推荐) | 同上 | **587** | **STARTTLS** | 同上 | 同上 | | 发信 SMTP(备选) | 同上 | 465 | SSL/TLS | 同上 | 同上 | **三条铁律**: 1. **用户名必须写完整邮箱地址**(`boss@example.com`),不是只写 `boss` 2. **加密必须开**,个人邮箱别用明文端口(143/110 不带加密时密码是明文的) 3. **发信必须勾选「需要认证」**,否则会被当开放中继 > 端口 25 **不要**用做客户端发信端口——那是服务器之间投递用的,客户端用 587。 **WebMail(不想装客户端就用这个)**:浏览器打开 `https://<面板域名>/webmail` (面板左侧「WebMail」页选邮箱可**免密直达**;直接打开这个网址则用邮箱地址+密码登录) --- ## 二、各客户端具体步骤 ### Thunderbird(Windows / macOS / Linux) 1. 账户设置 → 新建账户 → **电子邮件** 2. 填姓名 / 邮箱地址 / 密码 → 点「**手动配置**」(别让向导自己猜) 3. 按上表填: - 收件:**IMAP**,`mail.<域名>`,`993`,**SSL/TLS** - 发件:`mail.<域名>`,`587`,**STARTTLS**,认证方式「普通密码」 - 用户名两处都填完整邮箱地址 4. 点「重新测试」→ 两边都显示成功后「完成」 5. 若提示证书不受信任:勾选「**永久信任此证书**」→ 确认(自签证书,见第四节) ### iPhone / iPad(iOS「邮件」App) 设置 → 邮件 → 账户 → 添加账户 → **其他** → 添加邮件账户 - 收件服务器:**IMAP**,主机名 `mail.<域名>`,用户名 = 完整邮箱,密码 - 发件服务器:主机名 `mail.<域名>`,用户名/密码同上 - 保存后进「账户 → 高级」确认:收件用 **993 + SSL**,发件用 **587 + STARTTLS**(iOS 有时会自动选错端口,务必核对) - 弹证书警告 → 「详细信息 → 信任」(自签证书) ### Android(系统「电子邮件」/ Gmail App 的「其他」) 手动设置 → **IMAP**: - 收件:`mail.<域名>` / `993` / SSL/TLS - 发件:`mail.<域名>` / `587` / STARTTLS / 需要登录 - 用户名 = 完整邮箱地址 ### Outlook(Windows / Mac / 移动端) 文件 → 添加账户 → 手动设置 → **POP 或 IMAP** - 若坚持用 POP3:收件 `995` SSL,发件 `587` STARTTLS,**勾选「在服务器上保留邮件副本」**(否则手机拉走就没了) - 建议改用 IMAP(多设备同步) ### Apple Mail(macOS) 系统设置 → 互联网账户 → 添加其他账户 → 邮件 → 填账号密码 → 手动填上面参数 --- ## 三、POP3 还是 IMAP? | | IMAP(推荐) | POP3 | |---|---|---| | 多设备同步 | ✅ 服务器保存,各端看到同一份 | ❌ 默认下载到本地并删除服务器副本 | | 已读/文件夹/标记 | ✅ 同步 | ❌ 只有收件箱概念 | | 服务器占用 | 配额内一直占 | 拉走即释放(省空间) | **结论**:手机+电脑都用 → 用 IMAP。只有一台设备且想省服务器空间 → 用 POP3(务必勾「保留副本」免得误删)。 POP3 和 ManageSieve 监听器由 `.env` 中的 `ENABLE_POP3=1`、`ENABLE_MANAGESIEVE=1` 启动(示例配置默认启用)。IMAP、POP3、ManageSieve 和 SMTP 的账号访问开关集中在「邮箱账户 → 全局邮箱设置」中,默认全部启用;关闭 IMAP 会同时关闭Roundcube。 --- ## 四、证书这件事(首次连接必看) 全新安装默认使用**自签证书**(安装器自动生成,CN = `mail.<主域>`)。所以: - 客户端首次连接会报「证书不受信任 / 无法验证服务器身份」 - Thunderbird:勾「永久信任」;iOS:进「详细信息 → 信任」;Android:选「继续/接受」 - **不影响加密**(连接仍是 TLS 加密的),只影响证书链验证 **想彻底消除警告**:登录面板,打开「面板设置 → TLS 证书」,在「邮件服务证书」卡片点击「签发 / 检查续期」。邮件主机名的 A 记录需指向本机,公网 TCP 80 可达,Cloudflare 代理需暂时关闭。签发成功后证书会安装到 DMS,并由证书助手自动续期;续期时邮件服务会短暂重启。 --- ## 五、限制与已知问题 | 项 | 值 / 状态 | |---|---| | DMS 单封邮件大小上限 | 按「全局邮箱设置」中的附件总量自动设置,并预留 MIME 编码空间;默认附件上限 100 MB 时,DMS 总邮件上限约 **150 MiB**。 | | 邮箱配额 | 面板建邮箱时填的「配额 MB」;不填 = 不限 | | 附件总量限制 | 全局设置同时应用于 Webmail;DMS 的 Postfix 上限是完整 MIME 邮件的全局值,客户端(如 Foxmail)也受此值限制。勾选“无限额”可关闭上限;API 中填 0 表示无限额。 | | 远程图片 | 默认不自动显示,使用 Roundcube 原生图片拦截/按需加载功能;全局邮箱设置可调整自动显示默认值。 | | **外网来信** | 若 VPS 服务商或防火墙未放行公网 TCP 25,则无法接收外部来信 | | 发信被 Gmail 判垃圾 | 检查 **PTR 反解**是否指向 `mail.<域名>`,并确认 SPF / DKIM / DMARC 已配置 | | 自动配置(autoconfig) | ❌ 暂未生效:DNS 里 `autoconfig.<域名>` 有 CNAME,但服务器**未托管自动配置 XML**,客户端自动发现会失败 → 按本文手动填参数 | | CalDAV / CardDAV(日历通讯录) | ❌ 未部署(DMS 不含),如需可另装 | --- ## 六、连不上时怎么排查 **在服务器上(或本机有 openssl 的话)逐条测**: ```bash # 1) IMAPS 995 是否通 + 证书信息 openssl s_client -connect mail.<域名>:993 -servername mail.<域名> :587 -crlf :995 /dev/tcp/<服务器IP>/$p" 2>/dev/null && echo "$p 通" || echo "$p 不通"; done ``` **常见错误对照**: | 现象 | 原因 | 处理 | |---|---|---| | `Authentication failed` / `LOGIN failed` | 用户名没写完整地址;或密码错 | 用户名必须是 `xxx@域名` 完整形式 | | 能收不能发 | 发信端口/加密错,或没勾「需要认证」 | 用 587 + STARTTLS + 认证 | | `STARTTLS not supported` | 服务器没配 TLS 证书 | 确认 `.env` 里有 `SSL_TYPE=manual` 且证书路径存在;`docker compose up -d mail` | | 一直卡在「正在连接」 | 端口被机房封 | 上面第 4 条命令确认;被拦需工单放行 | | 提示证书错误 | 自签证书 | 见第四节;或按第四节换真证书 | | 发出去的信进垃圾箱 | PTR 未匹配 / SPF/DKIM 未配 | 面板 → Cloudflare 页推送 DNS;机房面板改 PTR | **服务器侧看日志**: ```bash docker exec docker-mailserver sh -c "tail -50 /var/log/mail/mail.log" # 投递/认证日志 docker exec docker-mailserver doveadm auth test boss@<域名> '密码' # 直接验证账号密码 docker exec docker-mailserver setup email list # 账号清单 ``` > 用脚本发信务必带上 `Date` 和 `Message-ID` 头,否则会被内容过滤器判 `BAD-HEADER-0` 退信 > (真实客户端都会自动带,不受影响)。