标签: SMTP

  • 25 端口、587 提交端口与 SMTP 中继应该怎样选择

    整理说明:本文属于“2025-2026 技术笔记整理”系列,于 2026 年 8 月集中整理并公开发布。

    云服务器 25 端口受限时:理解 587 中继并做出选择

    云平台限制出站 25 端口,通常是为了控制垃圾邮件、被盗账号和新 IP 滥用带来的信誉风险。限制可能只针对出站,也可能因账号、区域或产品而异,应以控制台和服务条款为准。不要把端口限制当成网络故障,更不应尝试绕过平台审核。

    25 与 587 承担不同角色

    • 25/tcp 用于邮件服务器之间的 SMTP 投递。发送服务器查询收件域 MX 后,通常连接其 25 端口。
    • 587/tcp 是邮件提交端口,供应用或用户经身份认证把邮件交给受信任的提交服务器,通常通过 STARTTLS 加密。
    • 465/tcp 也常用于采用隐式 TLS 的邮件提交;是否提供取决于中继服务。

    因此,远端 MX 不会因为你的 25 端口受限就自动接受 587。使用 587 的正确方式是选择合规的智能主机(SMTP relay):应用把邮件提交给中继,中继再负责通过 25 端口投递、排队重试和反馈退信。TLS 保护当前链路,并不等同于端到端加密。

    什么时候选直投,什么时候选中继

    直投适合具备静态专用 IP、可配置 PTR、获准开放 25 端口,并有人员维护队列、信誉、退信和滥用响应的团队。若发送量较小、来源多、运维能力有限,正规中继通常更可控;它还能提供速率限制和投递统计,但需评估数据驻留、费用、配额及供应商锁定。

    • 先向云平台按正式流程申请开放 25,并如实说明业务类型、名单来源和投诉处理。
    • 若未获开放,使用平台邮件服务或第三方中继的 587/465,不要搭建隧道规避限制。
    • 区分交易与营销流量,设置独立凭据、限额和监控,避免单一故障影响全部邮件。

    中继配置要点

    以下仅展示 Postfix 的配置形态,主机名和凭据须按供应商文档设置。密码应放在权限受控的凭据映射中,而不是直接写进主配置或仓库。

    relayhost = [smtp.relay.example]:587
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_tls_security_level = encrypt

    启用中继后仍要让身份链一致:按中继说明更新 SPF,由本地或供应商使用你的域名进行 DKIM 签名,再用 DMARC 报告核验对齐。还应验证退信、投诉回路、连接超时和限流告警,而不能只以“测试邮件已收到”作为上线标准。

    合规边界

    无论直投还是中继,都应只发送收件人合理预期的邮件,落实订阅证明、退订、地址抑制和最小发送频率。中继服务的高信誉不能替代名单质量;违反反垃圾政策可能导致账号暂停,也会损害域名信誉。

  • WordPress 邮箱注册背后的事务邮件链路

    整理说明:本文属于“2025-2026 技术笔记整理”系列,于 2026 年 8 月集中整理并公开发布。

    注册功能只是链路的起点

    WordPress 在“设置-常规”中允许任何人注册后,会开放注册入口,并按“新用户默认角色”创建账号。默认角色应保持为订阅者等低权限角色,不能为了省事设为管理员。公开注册还需要验证码、速率限制或人工审核等反滥用措施;这些措施负责控制账号创建,却不能代替邮件投递配置。

    一封激活邮件经过哪些组件

    注册、密码重置或评论通知触发后,核心代码或插件调用 wp_mail(),再由 WordPress 内置的 PHPMailer 交给本机邮件程序或 SMTP 服务。SMTP 服务器接受后,还要经过队列、域名认证、收件方策略和最终邮箱分类。一封邮件没有出现在收件箱,故障可能位于任意一段:

    注册动作 -> WordPress/插件 -> wp_mail()
             -> PHPMailer -> SMTP 提交 -> 收件服务器 -> 邮箱
    

    wp_mail() 返回成功,只说明调用阶段没有报告错误,不代表收件服务器已经接收,更不代表邮件进入收件箱。应同时查看 WordPress 错误、SMTP 响应、服务商投递事件以及退信内容。

    为事务邮件配置稳定出口

    生产站点通常通过 SMTP 插件或代码把邮件提交到受控中继。587 端口常用于 STARTTLS 提交,465 常用于隐式 TLS;25 端口主要承担邮件服务器之间的传输,不应把主机商封禁 25 端口误判为 WordPress 无法发送邮件。凭据应使用专用账号或令牌,并通过环境变量、秘密文件等受控方式管理,避免出现在仓库、日志和截图中。

    • 发件地址使用站点自己的域名,并保持可接收退信。
    • SPF 授权实际中继,DKIM 由出站系统签名,DMARC 检查 From 域对齐。
    • 邮件正文提供站点名称、操作目的和有效链接,不记录密码或完整重置令牌。
    • 限制注册频率,并为邮件失败提供重新发送入口。

    按场景完成上线测试

    先验证 SMTP 端点的 DNS、端口和 TLS,再分别执行新用户注册、找回密码、管理员通知三类测试。测试应覆盖至少两个不同邮件服务商,并检查发件人、回复地址、链接域名、垃圾箱、延迟和移动端显示。只测试插件自带的“测试邮件”不够,因为它不会覆盖真实注册钩子、模板和权限逻辑。

    openssl s_client -starttls smtp \
      -connect smtp.example.net:587 -servername smtp.example.net
    

    这条命令只能验证网络与 TLS 握手,不能证明账号认证或最终投递成功。运行中应记录时间、收件域、消息标识和 SMTP 状态码,但避免保存邮件正文与敏感链接。这样才能沿链路定位问题,而不是反复更换插件碰运气。