2026年自托管邮件还值得吗?送达率与中继方案
自托管邮件接收很容易,但发往 Gmail 常遇到 4xx 延迟和 5xx 拒收。了解 IP 信誉、身份验证和 587 端口中继的真实要求,以及何时适合完全自托管。
简短结论
只要将任务拆分为两部分,2026 年自托管电子邮件仍然值得。通过自己的 VPS 接收邮件风险较低,而且可正常工作,因为您是接收方,不需要任何人信任您。要让大型邮箱服务商接受您发送的邮件,则是另一项工作。这依赖于您继承的 IP 地址信誉,而不是您自行建立的信誉。
有经验的运维人员实际采用的是混合方案。邮件箱和归档保存在自己的服务器上,出站邮件则通过经过身份验证的中继从 587 端口发送。双向完全自托管在少数特定场景下仍然更有优势,本文接近末尾的部分会介绍这些场景。
自建电子邮件的难点在于送达率
安装邮件服务器只需一个周末。现代邮件栈可通过一个 compose 文件提供用于传输邮件的 SMTP(简单邮件传输协议)、用于读取邮件的 IMAP(互联网消息访问协议)、垃圾邮件过滤和 Webmail 界面,在 VPS 上安装 Mailcow 邮件服务器也涵盖了这些内容。安装过程本身并不困难。
真正的难点始于您的服务器连接到一台由完全不了解您的公司运行的机器,并请求对方将邮件放入某人的收件箱。接收方没有理由直接接受。它会根据多种信号做决定:连接 IP 地址的信誉、您的域名信誉、邮件是否经过身份验证,以及该接收方的用户过去如何处理您的邮件。新发件人完全没有历史记录,而没有历史记录不会被视为中性信号,而会被视为风险。因此,最初发送的邮件会进入垃圾邮件文件夹,或者在形成发送模式前被延迟处理。
您会看到拒收信息。Gmail 会发送以下形式的永久拒收:
550-5.7.1 [203.0.113.5 19] Our system has detected that this message is
550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail,
550-5.7.1 this message has been blocked.Microsoft 会发送另一种拒收信息,结尾是一个会变化的 block list 代码:
550 5.7.1 Unfortunately, messages from [203.0.113.5] weren't sent. Please
contact your Internet service provider since part of their network is on
our block list (S3150).先查看第一位数字。以 4 开头的代码表示临时错误,因此您的服务器会保留邮件并重试。以 5 开头的代码表示永久错误,因此邮件会立即退回给发件人。一直未解除的 4xx 延迟通常表示速率限制或信誉限制,并且可能自行恢复。5xx 表示接收方已经做出决定,不会自行恢复。
为什么新服务器发送的邮件会进入垃圾邮件文件夹?
因为这个 IP 地址并不是真正的新地址。你拿不到一个从未使用过的地址,只能从服务商的地址池中获得回收地址,而该地址的历史记录也会随之保留。如果上一位租户发送过垃圾邮件,那么你的第一封邮件可能在发送第二封之前就被拒收。
在此地址上部署任何服务前,先检查它。公共黑名单通过 DNS 返回结果,并将地址的4个八位组反转:
sudo apt update && sudo apt install -y bind9-dnsutils netcat-openbsd swaks
dig +short 10.0.0.10.zen.spamhaus.org返回空结果表示该地址未被列入黑名单。127.0.0.0/8 中的返回结果表示该地址已被列入,最后一个八位组表示匹配的是哪个黑名单。此测试有一个陷阱:Spamhaus 会拒绝通过大型公共 DNS 解析器发起的查询,因此通过 8.8.8.8 执行相同查询时,无论实际状态如何,都会返回 127.255.255.254。该代码表示查询被拒绝,并不表示该地址已被列入黑名单。请通过自己服务器的 DNS 解析器执行查询,或改用网页查询。
查询结果正常是必要条件,但还不够。未被列入黑名单,只表示近期没有人投诉该地址。它不代表该地址具有正面信誉,而正面信誉才是真正让邮件进入收件箱的因素。正面信誉需要通过数周持续发送少量目标邮件来建立。
同一网段中的其他地址也会影响结果,因为部分接收方会针对整个网络地址块而不是单个地址评估信誉。当同一 /24 网段中的其他客户开始发送垃圾邮件时,你的邮件可能会因关联关系而受到延迟。基于地址块的评估也解释了为什么 VPS 收件箱会收到滥用投诉,即使账户持有者从未发送过相关流量:投诉会随地址范围转移。
开始前需要确认的事项:端口 25 和 PTR 记录
出站 TCP 端口 25 是互联网中滥用最严重的端口,因此许多托管服务商会在新账户上默认关闭该端口。有些服务商会应请求开放。有些会在账户建立一段时间并产生付款记录后开放。有些服务商则永远不会开放。不同服务商的政策不同,且会随时间变化,因此不要把本文、旧论坛帖子或任何服务商的营销页面当作当前事实。在付款前先询问,并要求对方提供书面答复。
直接从服务器测试网络路径:
nc -vz gmail-smtp-in.l.google.com 25路径开放时,会在 1 秒内输出 succeeded!。路径被阻断时,命令会挂起,随后超时,且不会显示指出阻断原因的消息。这是因为被静默丢弃的数据包看起来与普通网络故障完全相同。
第二项要求是 PTR 记录,也称为反向 DNS。接收方会获取发起连接的 IP 地址,查询其 PTR 记录以获得一个名称,然后再查询该名称以获取地址。当两个地址一致时,这称为正向确认反向 DNS。这是一项成本很低的检查,可确认连接主机确实属于其声明的所有者。
dig -x 203.0.113.5 +short
dig +short mail.example.com第一条命令必须返回您的邮件主机名。第二条命令必须返回您最初使用的同一个地址。只有 IP 地址所有者才能发布其 PTR 记录,因此应由您的主机服务商为您设置,或在控制面板中提供设置入口。缺少 PTR 记录,或使用 203-0-113-5.static.example-isp.net 之类的通用记录,是一个很强的负面信号,因为真实邮件服务器几乎总是具有匹配的名称,而批量垃圾邮件来源通常没有。
如果您的主机还分配了 IPv6,且服务器优先使用 IPv6,则上述要求同样适用于 IPv6 地址,Gmail 在这方面的要求更严格。使用没有 PTR 记录的 IPv6 地址发送邮件时,可能会收到拒信,提示邮件不符合有关 PTR 记录和身份验证的 IPv6 发信指南。如果无法设置 IPv6 PTR 记录,请仅通过 IPv4 发送。在 Postfix 中,使用 smtp_address_preference = ipv4 可优先使用 IPv4,使用 inet_protocols = ipv4 可完全关闭 IPv6。
向任何主机服务商询问的三个问题
- 新账户的出站 TCP 端口 25 是否开放?如果未开放,开放该端口的确切流程和时间安排是什么?
- 我能否为 IPv4 地址和 IPv6 地址设置 PTR 记录?应在哪里设置?
- 如果我的地址因前一位客户的行为而进入阻止列表,您是否会将我迁移到其他地址?
在购买前询问全部三个问题,不要等到购买后再问。服务商如果能清楚回答前两个问题,但对第三个问题回答“不能”,仍然可以使用,因为您可以在第一天检查地址并取消服务。如果服务商不愿意以书面形式回答其中任何一个问题,那么它已经告诉您在那里运行邮件服务会是什么情况。
SPF、DKIM 和 DMARC 实际证明了什么
3 条 DNS 记录可以证明,声称来自您的域的邮件确实由授权方发送。每条记录回答一个不同的问题。只有理解前两条记录后,才能理解第3条记录的作用。
SPF(发件人策略框架)是一个 TXT 记录,列出哪些服务器可以代表您的域发送邮件。接收方会将其与信封发件人进行比对。信封发件人是 SMTP MAIL FROM 命令中提供的地址,不是收件人看到的 From: 标头。
DKIM(域名密钥识别邮件)会向邮件标头添加加密签名。签名覆盖邮件正文和所选的标头列表。匹配的公钥位于 DNS 中,路径由您选择的选择器决定。这样,任何人都可以验证邮件是否由持有您的私钥的一方发送,以及邮件在传输过程中是否被修改。
DMARC(基于域的邮件身份验证、报告和一致性)会将前两项与可见 From: 标头中的域关联起来,并告诉接收方关联失败时应如何处理。
example.com. TXT "v=spf1 mx -all"
mail._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"关键在于对齐。SPF 通过并不意味着 DMARC 通过。只有当 SPF 或 DKIM 通过,并且通过验证的域与 From: 标头中的域相同时,DMARC 才会通过。转发邮件时经常会出现这种静默失败:中继将信封发件人改写为自己的域后,SPF 仍会通过,但通过验证的域属于中继,因此未对齐。除非您自己的 DKIM 签名存在且有效,否则 DMARC 会失败。使用发布在您自己域下的密钥进行签名即可解决此问题。
对齐也能解释转发问题。邮件列表或旧大学地址将您的邮件继续转发时,转发服务器会成为连接 IP 地址,但该地址不在您的 SPF 记录中,因此邮件在最终目的地的 SPF 验证会失败。只要 DKIM 所签名的标头未被修改,DKIM 就能在转发后继续有效。必须依赖 DKIM 通过验证。
先发布 p=none,并设置 rua= 报告地址。然后读取聚合报告 2 周,再收紧策略。这些报告是唯一能显示有人冒用您的名义发送邮件的地方,也是找到您遗漏的转发服务器的唯一方法。直接使用 p=reject 会跳过这一步,并在没有故障记录的情况下中断合法邮件。
然后端到端测试整个链路。向您在大型邮件服务商处持有的账户发送一封邮件,并打开其原始源代码:
swaks --to you@gmail.com --from postmaster@example.com --server 127.0.0.1
sudo journalctl -t postfix/smtp -fswaks 会实时输出 SMTP 会话。Postfix 会在接收服务器接受邮件后,将投递日志行以 status=sent (250 2.0.0 OK ...) 结尾。其他情况会原样记录拒绝文本,您应搜索该字符串。在已投递邮件的原始源代码中,Authentication-Results: 标头会列出每项检查,并标明通过或失败以及完成身份验证的域。3 项检查都必须显示通过,而且域必须是您的域。
如何了解声誉问题?
反馈循环是这样一种机制:当邮箱服务商的某位用户点击“举报垃圾邮件”按钮时,邮箱服务商会向您发送该邮件的副本。没有反馈循环时,您发现问题的第一个迹象通常是投递已经失败,而且往往晚了数周。
这些计划各不相同,并非全部适用于只有一个地址的单个 VPS。截至 2026 年 8 月,Microsoft 运行一项按地址提供数据和投诉信息的服务,地址所有者可以注册;Yahoo 提供按 DKIM 签名域名关联的投诉反馈循环;Google 则发布汇总的声誉数据,而不是单条投诉,并通过一个控制面板提供这些数据。只有当您每天向其用户发送达到一定规模的邮件后,该控制面板才会显示数据。在依赖任何计划之前,请阅读各计划当前的条款,因为这些计划会发生变化,而且没有任何计划承诺向您提供访问权限。
Google 发布的批量发件人要求自 2024 年 2 月起生效,是大型接收方目前要求的最明确公开说明。每天向个人 Gmail 帐户发送超过 5,000 封邮件的发件人,必须通过 SPF 和 DKIM 完成身份验证,发布 DMARC 策略,为批量邮件提供一键退订,并将垃圾邮件投诉率保持在 0.3% 以下。小型服务器发送的个人邮件远低于该阈值,但所有发送量级都会被检查相同的信号;其中投诉率如果没有反馈循环,您无法查看。
可行的拆分方式:自行托管接收,使用中继发送
接收邮件几乎没有缺点。对于发往你的邮件,发送方无需信任你来接受邮件。你的 MX 记录,即指定域名邮件交换服务器的 DNS 记录,会指向你的服务器。发送方连接到你的服务器,之后的所有决定都由你做出:保留哪些邮件、保留多久、如何建立索引,以及谁可以搜索这些邮件。存储成本很低,自己拥有的归档不会因为其他地方的自动策略决定而被关闭。维护工作确实存在,但范围明确:更新垃圾邮件过滤器,确保 TLS(传输层安全)证书持续续期,保留备份,并防止磁盘空间耗尽。
发送邮件时,可以通过中继服务避开最棘手的问题。将服务器配置为把所有外发邮件交给端口 587 上经过身份验证的中继,而不是通过端口 25 直接与整个互联网通信。在 Postfix 的 main.cf 中:
relayhost = [smtp.relay.example]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt使用编辑器将凭据写入 /etc/postfix/sasl_passwd,这样密码就不会出现在 shell 历史记录中。该文件只有一行,左侧的主机名必须与 relayhost 中显示的内容完全一致:
[smtp.relay.example]:587 username:passwordsudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd.db
sudo systemctl reload postfix重新加载配置后发送一封邮件,日志会记录 relay=smtp.relay.example[...]:587 和 status=sent。如果日志行显示 SASL authentication failed,表示凭据未被接受。通常原因是 sasl_passwd 中的主机名与 relayhost 中的写法不同,因为查找使用精确字符串匹配。
这种拆分方式有效,是因为中继服务使用的地址已经积累了多年的正常发信记录,维护这些地址的信誉就是它的核心业务。你仍然掌握域名、邮箱、归档和迁移能力,因为更换中继只需修改一行配置和一条 DNS 记录。你放弃的是针对中继运营方的外发邮件机密性。这是这种安排的实际代价,最好事先做出决定,而不是事后才发现。
第一天还应完成另一项隔离。所有批量邮件都应从独立子域发送,并使用独立的 DKIM 密钥:新闻邮件使用 news.example.com,个人邮件使用 mail.example.com。信誉与发信域名相关,因此 自行托管的 Listmonk 新闻邮件产生的投诉率不会连带影响个人邮件。
何时仍应选择完全自托管?
规模。每月发送数百封邮件时,按邮件计费的中继服务价格通常可以接受;达到数百万封后,成本就不再合适。在这个规模下,您可以承担专用 IP 地址的成本,以及让这些地址建立信誉所需的预热计划。
管辖要求。当法规或合同规定邮件不得存储在第三方磁盘上时,投递质量就不是决定因素。此时您根本无法使用中继服务。
无法购买的控制权。保留规则可以完全按照您的策略制定,而不受套餐级别限制;每项服务使用独立地址,便于发现泄露地址的来源;过滤逻辑可以运行您自己的代码;账户也不会被一个没有申诉渠道的系统擅自暂停。
邮件永不离开您的网络。告警和其他机器间邮件完全不存在投递问题,因为通信两端都属于您。由本地 SMTP 服务器将邮件投递到您自己的邮箱,就是完整的解决方案。这也是通过 MCP(model context protocol)为助手提供独立的自托管邮箱所采用的模式。
如果您确实要直接发送外发邮件,请先预热该地址。每天从较低的发送量开始,只发送给明确期待收到您邮件的收件人;在数周内逐步增加发送量,绝不要从冷地址突然批量发送。地址信誉来自长期持续发送被接受且投诉较少的邮件。因此,没有历史记录的地址突然出现发送峰值时,看起来与服务器遭到入侵完全相同,也会被按入侵服务器处理。
运行邮件服务器第一年的成本是多少?
第一周用于搭建:安装软件包、配置 DNS 记录和 TLS 证书、发送第一批测试邮件,并将 DMARC 设置为 p=none。
第 2 到第 6 周用于处理计划之外的问题。你需要阅读 DMARC 汇总报告,找到之前不知道存在的对齐问题,发现破坏 SPF 的转发服务器,然后将策略调整为 p=quarantine,之后再调整为 p=reject。这段时间决定了自托管最终会成为日常工作,还是变成让你厌烦的负担。
之后每月大约需要 1 小时:更新软件包,验证证书是否续期而不是想当然地认为已续期,从备份执行一次恢复测试,检查磁盘增长情况,以及查询一次阻止列表。
此外,还有无法安排时间的那一周。某个地址因你没有执行的操作而被列入阻止列表。某个大型邮件接收方修改规则,你的邮件再次进入垃圾邮件文件夹。排队中的邮件不等于丢失的邮件:Postfix 默认会重试延迟邮件 5 天,由 maximal_queue_lifetime = 5d 设置。因此,持续数小时的中断只会增加延迟,不会造成其他损失。持续 1 周的中断则会导致邮件丢失。
备用 MX 记录并不像看起来那样是更好的解决方案。发送服务器本身就会自动重试数天,因此仅负责排队的备用服务器作用不大。更糟的是,如果备用服务器在不知道域中哪些地址存在的情况下接收邮件,它会接收发往不存在地址的邮件,然后将退信发送给伪造的发件人,使备用服务器成为回弹邮件的来源。应将精力用于监控,并实际测试恢复流程。
可以用你评估服务器上其他组件时会问的问题来判断整体价值:拥有它是否能提供你无法购买的功能?对于邮箱和邮件归档,答案通常是肯定的。对于向陌生收件方发送邮件,答案通常是否定的。这也是评估其余 2026 年值得自托管的项目列表 时使用的标准。
FAQ
如果 VPS 提供商阻止出站端口 25,我还能自托管电子邮件吗?
可以接收邮件,也可以通过中继发送邮件。入站邮件会通过端口 25 到达您的服务器,出站阻止不会影响入站邮件。出站邮件随后会通过端口 587 上经过身份验证的中继发送,而提供商通常不会阻止该端口。端口 25 关闭后,您无法直接向其他邮件服务器投递邮件,因为服务器之间的邮件投递按定义使用端口 25。使用 nc -vz gmail-smtp-in.l.google.com 25 进行测试。如果连接挂起后超时,说明该端口被阻止。
SPF、DKIM 和 DMARC 都通过了,为什么邮件仍会进入垃圾邮件?
身份验证可以证明邮件由谁发送,但不能证明收件人需要这封邮件。三项检查全部通过后,您的发件人状态会从未识别变为已识别。之后,收件服务器会评估您的 IP 地址和域名信誉,而新发件人暂时没有这些信誉。持续数周发送少量、收件人确实期待的邮件,逐步建立信誉。然后确认 PTR 记录在正向和反向解析中都与邮件主机名匹配,并检查邮件内容是否因链接缩短服务或不熟悉的跟踪域名等因素而受到额外扣分。
自托管邮件服务器需要专用 IP 地址吗?
如果要直接出站投递,需要。邮件服务器需要一个由您控制 PTR 记录的地址,并且该地址的信誉只属于您。VPS 地址在这个意义上已经是专用地址。您无法控制的是该地址的历史记录,以及同一网络地址块中的邻居。如果改用中继发送出站邮件,信誉由中继的地址承担,而您的地址只需接受入站连接。
将主邮箱地址迁移到自托管服务器安全吗?
应分阶段迁移,不要一次性切换。保持现有邮箱继续运行,将您的服务器添加为第二个投递目标,并在数周内将邮件副本转发到该服务器,同时查看 DMARC 报告,确认邮件可以双向正常流动。测试邮件连续一周正确到达后,再修改 MX 记录。最容易造成损失的是切换时丢失入站邮件,因为入站邮件无法重建。
保持邮件控制权所需的最小配置是什么?
使用您自己的服务器存储邮箱和归档邮件,并通过端口 587 上经过身份验证的中继发送出站邮件。数据和域名由您控制,同时可以完全避开信誉问题。即使之后改变方案,迁移成本也很低,因为中继只需修改一行配置和一条 SPF 记录,之后更换中继通常只需一个下午。