SMTP 是什么
一句话总结
SMTP 是互联网上从一台服务器向另一台服务器发邮件的标准协议,类似「邮件中转站之间的对话规则」。
🤔 为什么会有它 / 解决了什么问题
早期互联网上每台邮件服务器各自为政,没有统一格式和握手流程。SMTP 规定了发件服务器如何找到收件服务器、如何传输邮件内容、对方收不到如何报错。
🔍 具体原理 / 运作逻辑
发件 MUA(邮件客户端)通过 587/465 端口把邮件提交给发件 MTA(如 Postfix)→ 发件 MTA 查收件人域的 MX 记录 → 连接收件 MTA 的 25 端口 → 传输邮件内容。标准端口:25(MTA→MTA)、587(提交)、465(SSL/TLS)。
更硬核的技术细节(点击展开)
SMTP 是纯文本协议,EHLO/HELO 握手后通过 DATA 命令传输邮件内容。支持 STARTTLS 升级加密通道。标准 SMTP 只能发不能收——收信用 POP3/IMAP。我们的 CF Email 桥接绕过了 SMTP 端口限制:应用发到 127.0.0.1:2525 → 本桥接转发到 CF REST API(HTTPS 443),避开了 DO 的出站封锁。
🧭 什么情况下会用到 / 什么场景会遇到它
- Frappe 发送通知邮件、ERPNext 自动发送报表
- 任何需要程序自动发邮件的应用(密码重置、订单确认、告警)
🛠️ 怎么上手 / 在哪操作
传统方式:搭建 Postfix + 配置 SPF/DKIM/DMARC → 监听 25/587 端口。我们的方式:CF Email Bridge 监听 2525 → 转 HTTPS REST API 发出。
⚖️ 副作用 / 代价 / 取舍
- SMTP 端口(25/465/587)是云厂商重点封锁对象——新 DO 账户默认全封,必须走 HTTP 中继或提工单
- SPF/DKIM/DMARC 配置错误会导致邮件被判定为垃圾邮件,比发不出去更隐蔽
🕰️ 来历
- 谁提出/创造的:Jon Postel(RFC 821,1982 年)
- 什么时候出现的:1982 年正式标准化,1985 年在 ARPANET 上广泛部署
🔗 关联 / 经常一起出现的概念
- MX 记录:DNS 中指定收件服务器的记录类型
- CF Email Bridge:我们绕过 SMTP 端口封锁的方案——SMTP in(2525)→ REST API out(443)
- SPF/DKIM/DMARC:邮件认证三件套,防止伪造发件人
⚠️ 注意事项 / 常见误区
SMTP 是你的应用跑在服务器上主动连外部的 25 端口(出站)。Gmail/Outlook 可以发出邮件是因为他们有自己的 MTA 监听入站 25 端口——用户只是通过 IMAP/POP3 提交。很多人在自家服务器上用 25 端口发不出是因为云厂商堵了出站 25,而不是 SMTP 本身有问题。
📎 记忆锚点
“SMTP 是邮局的跨城运输卡车——你投递到本地邮局(587),卡车跨城运到目的地邮局(25),收件人自己去邮局取(POP3/IMAP)。”
📝 更新日志
| 日期 | 改动 | 原因 |
|---|---|---|
| 2026-07-13 | 首次创建 | - |