大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
IMAP 与邮件收取协议
IMAP(Internet Message Access Protocol)让邮件客户端 在服务器上同步文件夹、标记已读、搜索历史——适合多设备(手机 + 电脑)场景。POP3 则倾向「下载到本地后删除服务器副本」,适合单设备。运维邮箱、告警归档、工单系统通常用 IMAP。本课衔接 dnm-smtp,端口与 TLS 见 networking-essentials,DNS MX 见 dns-essentials,服务器见 linux-essentials,配置管理见 git-essentials。
学习目标
- 对比 IMAP vs POP3 的行为差异与选型
- 说出 IMAP 端口 143 / 993 及 TLS 配置
- 用
openssl或curl测试 IMAP 登录与会话
IMAP vs POP3
| IMAP | POP3 | |
|---|---|---|
| 邮件存储 | 服务器为主 | 下载到本地 |
| 多设备同步 | ✅ 文件夹/已读同步 | ❌ 易冲突 |
| 端口 | 143 / 993 | 110 / 995 |
| DevOps 场景 | 运维共享邮箱、归档 | 单节点拉取日志邮件 |
IMAP 993 会话
Client ──TLS──► Dovecot:993
Client: SELECT INBOX
Client: FETCH 1 BODY[]
Server: 返回邮件正文(留在服务器)
端口与加密
| 端口 | 说明 |
|---|---|
| 143 | 明文 IMAP,可 STARTTLS 升级 |
| 993 | IMAPS,隐式 TLS(生产推荐) |
# 测试 IMAPS 连接
openssl s_client -connect imap.example.com:993 -quiet
# a1 LOGIN ops@example.com password
# a2 LIST "" "*"
# a3 SELECT INBOX
# a4 FETCH 1 ENVELOPE
# a5 LOGOUT
Dovecot 最小配置(示意)
/etc/dovecot/dovecot.conf 或 conf.d/10-mail.conf:
protocols = imap pop3
mail_location = maildir:~/Maildir
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
/etc/dovecot/conf.d/10-auth.conf:
disable_plaintext_auth = yes
auth_mechanisms = plain login
sudo doveadm pw -s SHA512-CRYPT # 生成密码哈希
sudo systemctl enable --now dovecot
ss -tlnp | grep dovecot # 应看到 :993 :995
证书申请与 dns-essentials 的 A 记录、mail.example.com 解析相关。
客户端配置示例
Thunderbird / Outlook / 手机邮件 App:
收件 (IMAP)
服务器: imap.example.com
端口: 993
加密: SSL/TLS
用户名: ops@example.com
发件 (SMTP)
服务器: smtp.example.com
端口: 587
加密: STARTTLS
认证: 是
运维场景:告警邮件归档
# imapfetch 或 mbsync 同步邮箱到本地(备份/审计)
mbsync ops@example.com
# ~/.mbsyncrc 配置 IMAP 账户与本地 Maildir
配合 git-essentials 管理 mbsync 配置;敏感凭据放环境变量或密钥管理器。
排障
| 现象 | 可能原因 |
|---|---|
| 认证失败 | 用户名需完整邮箱;密码哈希算法不匹配 |
| 证书错误 | CN/SAN 不含 imap 主机名;Let's Encrypt 未续期 |
| 连接超时 | 防火墙未开 993;云安全组限制 |
| 文件夹为空 | mail_location 路径错误;权限问题 |
sudo journalctl -u dovecot -f
sudo doveadm auth test ops@example.com password
练习
- 用
openssl s_client连接 IMAP 993,执行 LOGIN + SELECT INBOX - 写一张 IMAP vs POP3 对照表,说明 DevOps 共享邮箱应选哪个
- 在邮件客户端配置 IMAP 收 + SMTP 发,完成一封往返测试
小结
IMAP = 服务器端邮件同步,多设备运维邮箱首选;生产用 993 + TLS。 下一课讲 SPF/DKIM/DMARC——邮件认证与反垃圾。