TODO
- 想避免 “via gmail.com”: 使用各自域名的 SMTP 服务器
- 想提高邮件到达率: ✅ 为每个域名设置 SPF、DKIM、DMARC 记录
介绍
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是一种用于发送电子邮件的标准通信协议。
配置smtp
要想让每个邮箱(如 support@yourapp.com)使用独立的 SMTP 服务器发信,核心就是——让自己的域名能“真正发送邮件”。
SMTP 的作用
- 任何邮件客户端(Gmail、Outlook、Thunderbird)要发邮件,都要连接一个 SMTP 服务器。
- 如果你用 Gmail 自带的发信通道,它走的是 Google 的 smtp.gmail.com。
- 如果你想发出的是 support@yourdomain.com,你就需要自己或第三方提供的 SMTP 服务器。
SMTP 是电子邮件系统的**“邮递员”**。 它主要负责:
- 把邮件从发件人设备传输到邮件服务器;
- 再由邮件服务器转发到收件人所在的服务器。
例如:
当你在 Gmail 里发邮件时,Gmail 会使用 SMTP 把邮件发送到对方的邮箱服务器(如 Outlook、QQ 邮箱等)。
应用场景
邮箱客户端发信
| 场景 | 比喻 |
|---|---|
| 你用 Outlook 发信 | 自己去邮局寄信(你负责邮寄过程) |
| 你用 Gmail 网页发信 | 你交给秘书(浏览器),秘书帮你到邮局(SMTP 服务器)寄信 |
第三方邮箱代发
- 你的网站或程序(客户端)连接到 Gmail 的 SMTP 服务器(smtp.gmail.com)。
- 通过身份验证(邮箱地址 + 密码或 App 专用密码)。
- 把邮件内容(收件人、标题、正文等)发送给 Gmail。
- Gmail 再代表你去和收件人邮箱服务器(比如 QQ 邮箱、Outlook)通信。
- 最终,收件人看到邮件的发件地址是你自己的域名邮箱(如 info@mydomain.com)。
✉️ 实际发送流程:
- 你点“发送”;
- Gmail 登录 smtp.gmail.com(凭你的 Gmail 身份);
- 邮件被 Gmail 的服务器送出;
- 邮件头(Header)中会写明真实来源;
- 收件人虽然看到的发件人是 support@myapp.com,
- 但技术上,这封信仍是从 Gmail 发出的。
基本流程
建立连接:发件人邮件客户端与邮件服务器通过 TCP(通常是端口 25、465 或 587)建立连接。
这是邮件客户端(比如 Outlook、Gmail、或者你的网站程序)与邮件服务器之间的“握手”过程。
- 它使用 TCP 协议(一种可靠的网络通信方式);
- 通常连接到服务器的 SMTP 端口(如 465 或 587);
- 类似你打电话前先拨号接通。
📍 举例: 当你点击“发送邮件”,电脑会和 Gmail 的服务器(smtp.gmail.com)建立连接。
身份验证:服务器验证发件人的身份(SMTP AUTH)。
服务器要确认:
“你是不是有权限从这个邮箱发送邮件?”
这一步是为了防止垃圾邮件或伪造发件人。
- 一般需要提供用户名(邮箱地址)和密码;
- Gmail 等服务使用 App 专用密码(不是你的登录密码)。
传输邮件:客户端将邮件内容发送到服务器。
当身份验证通过后,客户端开始真正“寄信”:
- 邮件分成三部分:发件人(From)、收件人(To)、正文(Body);
- SMTP 用一系列命令(如 MAIL FROM:、RCPT TO:、DATA)告诉服务器怎么处理。
📍 举例: 就像你在邮局写信地址、贴邮票、投信箱。
转发与投递:服务器将邮件转发给目标服务器或直接投递给收件人。
服务器拿到信后,检查收件人的地址:
- 如果收件人在同一个服务器上(例如两个 Gmail 用户),直接投递;
- 如果是不同服务器(例如发 Gmail 到 Outlook),SMTP 会转发到 Outlook 的邮件服务器。
📍 举例: 就像邮局把信交给另一个城市的邮局,再由那边送达。
结束会话:服务器关闭连接。
邮件传输完毕后,客户端告诉服务器:
“我发完了,可以断开连接了。” 命令是 QUIT。 服务器回应“再见”,然后关闭连接。
📍 举例: 就像打完电话说“拜拜”,挂断通话。