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 是电子邮件系统的**“邮递员”**。 它主要负责:

  1. 把邮件从发件人设备传输到邮件服务器;
  2. 再由邮件服务器转发到收件人所在的服务器。

例如:

当你在 Gmail 里发邮件时,Gmail 会使用 SMTP 把邮件发送到对方的邮箱服务器(如 Outlook、QQ 邮箱等)。

应用场景

邮箱客户端发信

场景 比喻
你用 Outlook 发信 自己去邮局寄信(你负责邮寄过程)
你用 Gmail 网页发信 你交给秘书(浏览器),秘书帮你到邮局(SMTP 服务器)寄信

第三方邮箱代发

  1. 你的网站或程序(客户端)连接到 Gmail 的 SMTP 服务器(smtp.gmail.com)。
  2. 通过身份验证(邮箱地址 + 密码或 App 专用密码)。
  3. 把邮件内容(收件人、标题、正文等)发送给 Gmail。
  4. Gmail 再代表你去和收件人邮箱服务器(比如 QQ 邮箱、Outlook)通信。
  5. 最终,收件人看到邮件的发件地址是你自己的域名邮箱(如 info@mydomain.com)。

✉️ 实际发送流程:

  1. 你点“发送”;
  2. Gmail 登录 smtp.gmail.com(凭你的 Gmail 身份);
  3. 邮件被 Gmail 的服务器送出;
  4. 邮件头(Header)中会写明真实来源;
  5. 收件人虽然看到的发件人是 support@myapp.com
  6. 但技术上,这封信仍是从 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。 服务器回应“再见”,然后关闭连接。

📍 举例: 就像打完电话说“拜拜”,挂断通话。