邮件转发

域名 catch-all:隔离邮箱与转发配置指南

作者:Alexey Bulygin
展示域名 catch-all 通配符地址流向与独立隔离邮箱架构的邮件路由示意图

你启用域名 catch-all,希望有人误写 saels@ 而不是 sales@ 时也不漏掉询问。规则覆盖未知收件人,包括自动地址探测的目标,但不会取消垃圾邮件过滤和其他接收检查。接受收件人不等于最终接受整封邮件。向伪造发件人退信、自动回复循环及转发投递问题都是需要管理的风险,而非必然结果。

很多指南只说“启用 catch-all,全部送进收件箱”。实际运维工作却从这里开始。本文介绍隔离邮箱、Postfix 正则路由、循环预防和转发中的认证失败。如果需要基础知识,请先阅读邮件转发设置指南;本文重点讨论域名 catch-all。

什么是域名 catch-all?

Catch-all 是一种 MTA 规则,接受发往域名中未知地址的邮件,即没有对应已知邮箱、别名或群组的地址。服务器可能不返回 550 User Unknown,而是返回 250 OK,再将邮件送到备用目的地。接受收件人不等于在 DATA 后最终接受整封邮件。规则作用于 SMTP 信封收件人,本身不会破坏认证。

信封与标头:为什么需要区分

理解这两个层次有助于排查路由、认证和通知。查明原因后两分钟修复只是示例,并非承诺;其他问题可能需要数天诊断。

RFC 5321 定义 SMTP 信封,包括 SMTP 会话中交换的 RCPT TOMAIL FROM 命令。RFC 5322 定义邮件标头,包括客户端显示的 To:From: 字段。

MTA 可以把未知信封收件人路由到备用地址,而不修改标头。SPF 为 MAIL FROM 域名或适用 HELO 检查连接 IP;DKIM 对签名覆盖的标头及正文部分进行密码学验证;DMARC 要求 SPF 或 DKIM 至少一项成功,且其域名与可见 From 对齐。本地收件人改写不会直接破坏这些检查。外部转发可能影响 SPF,修改签名覆盖的部分可能使 DKIM 失败。

外部转发的故障模式

把 catch-all 转发到 Gmail 或 Outlook.com 会新增一跳,可能改变认证结果:

  1. 原始发件人:client@bank.com(IP:1.2.3.4)
  2. 你的服务器接受 typo@yourdomain.com,再转发到 you@gmail.com
  3. Gmail 看到来自你服务器 IP 的连接,信封可能仍使用 bank.com
  4. 如果该 IP 未获 bank.com 的 SPF 记录授权,SPF 就会失败
  5. 如果 bank.com 发布 DMARC p=reject,又没有有效且对齐的 DKIM,接收方可能拒收;SMTP 拒绝可能产生通知,但用户不一定能看到

Catch-all 不保证投递成功,转发也需要独立验证。SRS(Sender Rewriting Scheme)可能帮助重写域名通过 SPF,但不会自动保留与原始 From 的对齐,也不保证 DMARC 通过或邮件送达。所述 TrekMail 邮件别名转发在支持的配置中处理 SRS;请确认套餐和当前条件。

域名 catch-all 的三类风险

修改配置前,应检查向伪造发件人发送通知、自动回复循环和转发认证失败这三类风险。只处理一类可能使原计划五分钟的任务,例如变成一周额外维护,这不是固定耗时。

1. 退信散射:信誉风险

服务器在 DATA 后最终接受 catch-all 邮件(250 OK),随后决定不投递并生成未投递报告(NDR)时,可能产生退信散射。如果 MAIL FROM 被伪造,通知就会发给没有发送邮件的人。这类对方并未请求的回复可能损害信誉并增加进入阻止名单的风险,但并不存在必然发生的期限。

对于不在接受规则内的收件人,应在 SMTP 会话中、对应的 250 OK 之前拒绝。对于已接受的流量,可按需要使用隔离和审核,避免向可能伪造的地址发送对方并未请求的 NDR。这不意味着禁止所有合法未投递通知,也不应默认删除合法邮件。

2. 自动回复循环(Exchange 错误 5.4.14)

Catch-all 把邮件送给备用收件人,而该账户可能启用了外出自动回复(OOF)。发往 random@yourdomain.com 的伪造发件人邮件可能触发回复和退信;如果路由又把退信送回 random@yourdomain.com,服务器就会再次接受。这样的规则组合可能形成循环。Exchange 可能返回 550 5.4.14 Hop count exceeded - possible mail loop

在支持的系统中,尤其是 Exchange,可为通配符路由的流量设置 X-Auto-Response-Suppress: All,以限制 OOF 和确认通知,包括已读回执。它不是通用防护:还应审查自动规则、Auto-Submitted 和退信路由,并测试实际行为。

3. 地址收集攻击(DHA)

如果所有地址都返回 250 OK,攻击者可以尝试 admin@hr@ceo@invoice@ 等数千种组合。全域 catch-all 会接受这些收件地址,但不会证明哪些地址对应真实邮箱。即便如此,垃圾流量仍可能增加,甚至持续多年;这不代表地址已获验证,也不是固定的攻击期限。

下文策略 2 的局部通配符可限制覆盖范围,但不保证阻止大多数攻击。

策略 1:独立隔离邮箱

如果需要 catch-all,可使用独立审核邮箱,限制访问并配置过滤和保留规则。除非经过单独验证与授权,否则关闭其自动转发和外出回复。邮箱并非安全沙箱,不能单独保证安全或信誉;应保留审核合法邮件的途径。

实施逻辑:

  1. 接受:服务器接受 *@domain.com
  2. 标记:识别未知收件人,即没有对应获准邮箱、别名或群组
  3. 隔离:路由到独立邮箱,例如 catchall_sink@domain.com
  4. 限制回复:在合适的 Exchange 环境通过 Spam Confidence Level 9 请求高置信度垃圾邮件处理,并按需要设置 X-Auto-Response-Suppress: All;验证实际分类与动作

每周审核可以作为起点,但频率应适应邮件量和紧急程度。把合法邮件移到正确邮箱,并为其余内容制定保留策略。规划容量、存储和监控,避免隔离区成为另一个遗漏客户询问的地方。

Microsoft 365 / Exchange Online 传输规则

在 M365 中,需由获授权管理员审核。Internal Relay 会关闭 Directory Based Edge Blocking(DBEB),但不会独自实现 catch-all,也不适合收件人全部在云服务中的域名。其他收件人需要经过验证的连接器指向获授权自有服务器。核查最终路由、循环以及有效邮箱、别名、群组和其他收件人的完整目录;单个群组成员条件不能代替清单。以下仅是需按真实架构适配的框架:

条件目的
发件人位置组织外部仅处理外部流量
收件人不属于All Valid Users按审核后的清单排除有效收件人
重定向邮件到catchall_sink@domain.com把未知流量送到独立隔离邮箱
设置 SCL 为9请求高置信度垃圾邮件处理;实际分类、动作和通知还取决于其他过滤、策略及客户端
设置标头X-Auto-Response-Suppress: All在支持的系统中限制自动回复,并通过测试检查循环

规划并测试规则启用与任何 Internal Relay 变更的顺序。先验证连接器、收件人验证和最终路由,避免在变更期间失去对邮件接收的控制或形成循环。

策略 2:Postfix PCRE 局部通配符

局部通配符只接受指定模式,而不是开放整个域名。为预期地址定义正则表达式,并单独配置其他收件人的验证。映射表中没有匹配项,并不自动产生 SMTP 拒绝;域名类别、其他映射表和收件人限制也会影响结果。

安装 PCRE 支持后,Postfix 可以使用 PCRE(Perl Compatible Regular Expression)虚拟别名映射。请测试模式:示例注释不保证收件人验证生效或覆盖所有所述拼写错误。

# /etc/postfix/virtual_pcre

# Catch any address starting with "sales-" (sales-q1, sales-webinar, etc.)
/^sales-.*@yourdomain\.com$/    sales-team@yourdomain.com

# Catch common "support" typos (suport, supprt)
/^supp?o?rt@yourdomain\.com$/   support@yourdomain.com

# No wildcard below = hard 550 reject for everything else

适配 /etc/postfix/main.cf 前,先备份配置并审查现有映射。下面的赋值会替换当前值,应合并新映射而不丢失其他路由:

virtual_alias_maps = pcre:/etc/postfix/virtual_pcre

验证模式、收件人和路由后,获授权管理员可重新加载配置:postfix reload

如需扩大覆盖,可为常见地址添加谨慎设计的模式,而非使用全域 catch-all:

/^(info|contact|hello|team)@yourdomain\.com$/    info@yourdomain.com

只要 MTA 验证已正确配置并测试,就可以将接受范围限制在所需地址内。

何时适合使用域名 catch-all

Catch-all 可以用于边界明确的场景。以下临时用途很常见,但不是仅有的合法用途。是否长期保留,应根据控制措施和业务需要决定。

合理用途:

  • 短期活动地址:使用 promo-jan@promo-feb@promo-mar@,无需逐一手动创建收件人
  • 客户接入:在地址正式配置完成前先接收邮件
  • 旧系统迁移:切换期间接收发往尚未完整登记的活跃地址的邮件

在这些场景中,应定期评估何时停用 catch-all,并为已知地址创建明确的邮箱或别名。如果不确定需要哪种收件人,请阅读域名邮件别名与邮箱对比,选择便于长期维护的地址结构。

不理想的动机:只是为了避免为三个别名支付假定的每用户每月 $6,就启用 catch-all。别名不一定需要独立许可,应先确认服务商计费模式。解决真实成本问题,而不是增加半年后难以维护的架构。

TrekMail:选择架构,而非临时绕路

按用户计费可能影响 catch-all 的选择。所述 TrekMail 模式采用固定价格套餐和账户级共享存储,而不是统一按域名或邮箱收费;单个邮箱也可能有配额。在套餐限制内,它可能减少以 catch-all 替代明确别名的财务动机。请核实当前价格、配额和功能。

按用户计费TrekMail:按套餐固定价格
sales@、support@、info@ 邮箱独立许可示例中的 3× 月费可用性和限制取决于套餐,并非所有套餐普遍包含
用 catch-all 替代别名如果服务商要求独立许可,可能节省成本一种业务选择,不一定是财务需要
转发到 Gmail 或 Outlook可能按路由和 DKIM 状态影响 SPF 与 DMARC支持的配置中管理 SRS,不保证 DMARC 通过或投递
从旧服务商迁移获授权 IMAP 同步、备份及验证检查源服务和套餐支持,比较文件夹及邮件,切换 DNS 前复制最后的增量;联系人及日历另外规划

历史 Starter 示例(每月 $3.50)说明套餐范围内的地址配置,请确认当前条件。只有所述 Nano 模型需要自备 SMTP 发送全部外发邮件,包括回复;付费托管发送取决于权限与设置。如果需要 catch-all,将受支持的域名规则与常用明确收件人结合。初次配置时,在自有域名上设置邮件的指南介绍 DNS、SPF/DKIM/DMARC 和邮箱创建。

启用 catch-all 前的检查清单

启用前应检查以下项目,并测试整条路径。控制措施可以降低风险,但不会消除运维工作:

  1. SMTP 入口验证:在连接期间拒绝不属于 catch-all 接受模式的地址,避免随后向伪造发件人发送对方并未请求的通知。
  2. 自动回复控制:在支持的系统中设置 X-Auto-Response-Suppress: All,并检查 OOF、Auto-Submitted 和路由以预防循环。
  3. 隔离区就绪:准备与业务收件箱分开的邮箱,明确容量、审核和保留策略。
  4. 垃圾邮件分类已审核:适配隔离策略,主动审核合法邮件,而不默认删除。
  5. SPF 与 DMARC 已验证:如需转发,应检查 SRS、重写域名授权,以及 DMARC 所需的至少一条有效且对齐的 SPF 或 DKIM 路径。
  6. 按需使用 PCRE 模式:如果局部通配符足以满足需要,应优先使用,并测试 MTA 对其他地址的验证。
  7. NDR 控制:避免向可能伪造的发件人发送对方并未请求的退信,同时正确处理合法邮件。

结论

配合经过测试的路由、接受模式之外的 SMTP 验证、隔离区和自动回复控制,域名 catch-all 可以发挥作用。未经架构审核就启用,可能增加退信散射、循环和转发故障风险。没有一种配置能独自消除所有风险,应测试并监控实际行为。

如果目的只是避免按用户计费,应先确认邮箱和别名真正需要哪些许可。所述 TrekMail 固定价格托管允许在套餐限制内选择明确收件人,让 catch-all 成为经过考虑的业务决定。配置域名前,请了解免费试用及当前条件。

分享这篇文章

我们使用运行和保护 TrekMail 所必需的技术。确认后还会允许《Cookie 政策》中所述的有限分析和广告衡量。

登录 TrekMail

访问您的控制面板、邮箱和 DNS。

12 个字符 两次密码一致

重置邮件已发送

如果该邮箱对应已有账户,我们已发送密码重置说明。

继续即表示您同意 TrekMail 的 服务条款隐私政策.