SMTP 与 25 端口
25 是电子邮件服务器之间投递信件的标准端口,负责 MTA 到 MTA 的传输:外部服务器按域的 MX 记录把信投到你的 25 端口,你的服务器也用它把信投给别人的 MTA。客户端提交发信走 587 或 465,两者与 25 是明确分工。云服务商普遍默认封禁 25 的出站流量以抑制垃圾邮件,部署前要先确认策略。
基本信息
| 服务 | SMTP(Postfix、Sendmail、Exchange、邮件网关设备) |
|---|---|
| 协议 | TCP |
| 用途 | MTA 之间投递、接收外部来信 |
| 规范 | RFC 5321;提交与加密建议见 RFC 8314 |
| 安全等级 | 需对公网开放,但必须严防开放中继 |
| 配套记录 | MX、SPF、DKIM、DMARC、PTR 反向解析 |
典型使用场景
- 自建邮局:MX 记录指向本机,接收外部来信并存入用户邮箱
- 应用发信:告警通知与业务邮件,优选提交端口而非直接投递 25
- 邮件网关与反垃圾设备之间转发,形成内外两道链路
- 多域托管:一台服务器承接多个域的收信,按域路由到不同后端
- 自建发信与第三方中继混合:重要通知走有信誉的中继,其他走自建
SMTP 端口分工
| 端口 | 用途 | 加密方式 |
|---|---|---|
| 25 | MTA 之间投递 | STARTTLS 通常为可选或要求 |
| 587 | 已认证客户端提交 | STARTTLS |
| 465 | 已认证客户端提交 | 隐式 TLS |
验证对端与 STARTTLS
验证对端与 STARTTLS
openssl s_client -starttls smtp -connect mx.example.com:25 -crlf # 观察证书与升级是否成功
dig +short mx example.com # 确认 MX 指向哪台服务器
dig +short txt example.com # 查看 SPF 记录是否包含出网地址
nc -vz mx.example.com 25 # 网络层连通性先行确认手工会话验证收信
手工会话验证收信
openssl s_client -starttls smtp -connect mail.example.com:25 -crlf
EHLO test.example.com # 打招呼,看服务端返回的能力列表
MAIL FROM:<alerts@example.com> # 发件人
RCPT TO:<ops@example.com> # 收件人,被拒可判断中继与收信范围
DATA # 回车后输入正文,以单独一行的点结束
QUIT返回码判读
| 返回码 | 含义 | 处置方向 |
|---|---|---|
| 220 | 服务就绪 | 正常,可继续会话 |
| 250 | 命令被接受 | 投递被接收 |
| 4xx | 临时失败 | 稍后自动重试,多为限流或上游暂时不可用 |
| 554 Relay access denied | 拒绝中继 | 检查来源是否在允许投递范围内 |
| 550 | 永久拒收 | 地址不存在或对方策略拒绝,不重试 |
| 421 | 服务不可用 | 连接被主动断开,多为限流或连接数限制 |
输出逐列读法
| 输出项 | 含义 | 正常/异常 |
|---|---|---|
| 250-STARTTLS | 服务端支持 STARTTLS | 缺失说明升级加密不可用 |
| 250-AUTH | 支持认证方式 | 25 端口通常不提供认证 |
| Peer certificate | 对端证书 | 主体应与 MX 主机名一致 |
| Verify return code | 证书校验结果 | 非 0 表示链或域名有问题 |
限制中继范围(Postfix 要点)
限制中继范围(Postfix 要点)
# 只接受本域收件人,拒绝为外部发信
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
# 收件域白名单,避免成为任意域的中继
relay_domains = example.com
# 对外发布的 25 端口要求 STARTTLS
smtpd_tls_security_level = may开放中继会让服务器沦为垃圾邮件转发节点,IP 很快被列入黑名单,此后连正常业务邮件也难送达;这类配置事故在自建邮局中屡见不鲜,需要定期做中继自检并留档。
送达率的关键不在 25 端口本身:SPF、DKIM、DMARC 三条记录与反向解析 PTR 才是收件方判定信誉的依据,缺少其中任意一条都容易进垃圾箱,自建发信前先把这几项配齐。
云主机排障提示:多数云厂商默认封禁 25 的出站,应用直连 25 报超时往往不是对端问题;改用 465 或 587 提交,或按流程申请解封 25 出站后再排查。
开放中继自检要留下记录:准备两个外部邮箱作为外部收件人,在本机模拟一次不经认证的投递,若被 554 拒绝即为正常;把结果与时间一并归档,便于合规检查时提供证据。
日志是主要排查入口:投递被拒、限流触发与 TLS 失败都会在邮件服务端日志中留下明确原因,先看日志结论再去改配置,能避免为了绕开现象而放宽安全策略。