Skip to content
VDS · 应用与机器人

邮件服务器:为什么困难以及需要考虑什么

为什么外发邮件端口是关闭的以及如何打开,需要配置什么才能让邮件送达——PTR、SPF、DKIM、DMARC——以及什么时候不该自建邮件服务器。

更新于 2026年8月23日

搭建邮件服务器在技术上并不困难——难的是让邮件进入“收件箱”而不是垃圾邮件,并避免静默退信。本文介绍在发送第一封邮件之前需要完成的事项。

为什么这是一项独立的任务

接收邮件几乎可以立即工作:您搭建好服务器,开放 25 端口,邮件就会送达。问题出在发送上,它包含两个部分。第一,在我们的平台上,外发邮件端口默认关闭,需要申请后才能开放。第二,接收方(Gmail、Mail.ru、Yandex)会从多个维度检查发件人,任何一项不达标都会让邮件变成垃圾邮件或被拒收。

至少会检查以下内容:

检查项配置位置缺少时会怎样
外发 25 端口是否开放提交工单申请邮件完全发不出去
反向 DNS(PTR)机器面板的“访问”标签页在连接阶段被拒收
SPF域名 DNS邮件进入垃圾邮件
DKIM域名 DNS + 邮件服务器邮件进入垃圾邮件
DMARC域名 DNS域名容易被伪造
IP 信誉发送历史被静默过滤

配置顺序

  1. 申请外发端口。 25、465、587 端口在外发方向默认关闭,需要您申请后才会开放。请从这里开始:否则就无法测试后续内容,具体如下所述。
  2. PTR。 反向 DNS 记录必须与服务器在 SMTP 中声明的名称一致。在机器面板的“访问”标签页中设置,例如 mail.example.com,并创建一条指向该机器地址的同名正向 A 记录。
  3. 邮件套件。 最省事的方式是使用现成的容器化方案——docker-mailserver 或 Mailcow。它通过 Docker Compose 安装,会自动拉起 Postfix、Dovecot、反垃圾模块和 DKIM 密钥。
  4. DNS。 为服务器名称创建 MX 记录,然后配置 SPF 和 DMARC:
example.com.        MX  10 mail.example.com.
example.com.        TXT "v=spf1 mx -all"
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com"
  1. DKIM。 邮件服务器生成密钥;您将公钥部分以 TXT 记录的形式发布为 <selector>._domainkey.example.com。
  2. 验证。 向测试服务(mail-tester、learndmarc)发送一封邮件,争取拿到满分。在此之前不要发送任何群发邮件。

外发邮件端口默认关闭

这是安装邮件服务器之前最需要了解的一点。机器向外发往 25、465、587 端口的流量在宿主机上被封锁。新机器无法对外发送邮件,也不会因为系统内部的任何设置而变得可用:数据包根本不会离开它的网络接口。

可以这样检查——连接不会建立:

nc -vz smtp.gmail.com 25

这样做是因为被入侵的机器会最先开始发送垃圾邮件,而宿主机上的所有邻居都要为这个地址及其信誉买单。这不影响接收邮件:发往 25、465、587、993 端口的入站连接不会被封锁,邮件服务器可以立即接收邮件。

如何开放

端口需要申请后人工开放,并非即时生效。面板中没有对应的按钮。

  1. 联系客服,并提供机器编号(“付款”标签页中的“联系客服”区块)。
  2. 说明您要发送的内容:域名、邮件性质、大致每日发送量。
  3. 等待回复。在端口关闭期间,您可以安装和配置邮件服务器——但无法测试发送。

无论给出什么理由,都不会为向购买的数据库群发邮件开放端口;请参阅在机器上可以做和不可以做的事。

如果您需要当天就能发送,而不是来回沟通之后再发,请使用外部中继:邮件服务商会提供 SMTP 登录信息,并通过 2525 端口或 API 接受连接,无需 25 端口。

机器内部的防火墙

在您这一侧,允许入站连接到邮件端口:

sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
sudo ufw allow 993/tcp

ufw 规则只控制进入您系统的流量。对外发 25、465、587 端口的封锁来自外部,ufw allow out 无法解除它。

绝不要留下开放中继。检查方法:从另一台机器执行 swaks --to test@example.com --server <machine-address> 且不进行身份验证——连接应当被拒绝。开放中继会在一天之内让机器地址变成垃圾邮件来源,并永久毁掉它的信誉。

什么时候不需要自己的邮件服务器

  • 您只需要从应用发送通知——请使用外部发送服务。它更便宜,送达率也更好。通过 HTTP API 或 2525 等替代端口连接:标准端口 465 和 587 与 25 一样是关闭的。
  • 您需要的是供人使用的域名邮箱——邮件托管无需您参与即可解决问题。
  • 您还没准备好监控更新和队列——被弃置的邮件服务器会变成安全漏洞。

当独立性很重要且您愿意维护时,自己的服务器才是合理选择:备份邮箱是必须的,并且需要为邮件预留足够的磁盘空间——请参阅磁盘空间。