Files
clover-mail/docs/mail-client-setup.md

145 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 邮箱客户端配置指南(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.<域名> </dev/null | openssl x509 -noout -subject -dates
# 2) 587 STARTTLS 是否可用(看到 "250-STARTTLS" 即正常)
openssl s_client -starttls smtp -connect mail.<域名>:587 -crlf </dev/null | head -20
# 3) POP3S 995
openssl s_client -connect mail.<域名>:995 </dev/null | head -5
# 4) 端口是否被机房拦(从另一台机器测)
for p in 993 995 587 465 143 110 25; do timeout 5 bash -c "exec 3<>/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` 退信
> (真实客户端都会自动带,不受影响)。