邮件转发

Catch-all 邮箱:3 种更安全的域名设置方式

作者:Alexey Bulygin
为自有域名设置隔离的 catch-all 邮箱

Catch-all 邮箱让服务器接收发往域名的所有邮件,即使收件人不存在。服务器不会以 550 拒绝 typo@yourdomain.com,而是收下邮件。这能挽回拼写错误的地址,也会接收垃圾邮件、钓鱼邮件和目录探测。邮件送达或恢复并无保证。

缺少保护的 catch-all 可能很快损害发件声誉。配置本身不难,困难在于隔离风险并持续运维。

本文介绍适用于 Microsoft 365、Linux 和 Google Workspace 的三种隔离方式。如果仍不确定是否需要,请先阅读域名 catch-all 邮件

什么是 catch-all 邮箱?

它是接收域名下所有未知地址邮件的单一收件箱。发往 misspelled-name@yourdomain.com 的邮件不被退回,而是在其他投递条件允许时进入指定邮箱。

问题是服务器会接收更多流量。垃圾邮件机器人、钓鱼和自动目录扫描也会得到 250 OK。若不隔离,这些流量会混入正常邮件并可能损害域名声誉。

基本原则:不要路由到主要收件箱

Catch-all 流量可能绕过 Directory-Based Edge Blocking (DBEB),服务器在验证收件人之前就接收内容。将其路由到 ceo@company.com 或其他活跃邮箱会造成安全盲区。

以下方案都遵循同一原则:将 catch-all 流量与生产邮件隔离

方案 1:隔离池 (Microsoft 365 / Exchange)

适合因法律或电子取证需要保留 catch-all 邮件,又不希望频繁收到通知的组织。保留期限、访问权限和隐私政策仍需单独配置。

工作方式

  1. 接收 - 服务器接收未知收件人的邮件。
  2. 标记 - 传输规则识别外部且未发给有效用户的邮件。
  3. 抑制 - 规则把 Spam Confidence Level (SCL) 设为 9。
  4. 存储 - 邮件路由到 catchall-sink@yourdomain.com 等共享邮箱。

PowerShell 设置

先在 Exchange Admin Center 将域名设为 "Internal Relay",这会停用 DBEB,然后运行:

# Create the sink (shared mailbox - no license needed)
New-Mailbox -Shared -Name "CatchAll Sink" -PrimarySmtpAddress catchall-sink@yourdomain.com

# Create the transport rule
New-TransportRule -Name "Catch-All Routing & Suppression"
    -FromScope "NotInOrganization"
    -SentTo "catchall-sink@yourdomain.com"
    -RedirectMessageTo "catchall-sink@yourdomain.com"
    -SetSCL 9
    -ExceptIfRecipientBelongsTo "All Valid Users Group"

为什么使用 SCL 9? 若不设置,邮箱会充满通知。SCL 9 将邮件放入垃圾邮件文件夹。应按保留政策定期检查。

方案 2:带标记的邮件流 (Postfix / Linux)

自建 Postfix/Dovecot 时,单独邮箱可能没有必要。可注入标头,再由客户端或 Sieve 规则分类。

工作方式

  1. 接收 - luser_relay 接收未知本地用户的邮件。
  2. 修改 - MTA 注入 X-Catch-All: True 标头。
  3. 过滤 - Sieve 将邮件移到专用文件夹。

Postfix 配置

# /etc/postfix/main.cf
# Route unknown local users to a specific alias
luser_relay = catchall_alias

# /etc/postfix/virtual
# Map the alias to a real user
catchall_alias    realuser@yourdomain.com

重要:luser_relay 只适用于本地域名。多个虚拟域名应使用带通配符的 virtual_alias_maps

# /etc/postfix/virtual
@example.com      realuser@example.com

同时设置邮件转发时,应确保虚拟映射不冲突。规则重叠是邮件误投的常见原因。

Sieve 过滤器

不要靠人工区分 catch-all 流量,应自动处理:

if header :contains "X-Original-To" "catchall_alias" {
    fileinto "Junk/CatchAll";
    stop;
}

方案 3:部分通配符 (正则路由)

不需要完整 catch-all 时,可不再接受全部 *@domain.com,而只接受 sales-*@domain.com 等特定模式,其余地址直接拒绝。

工作方式

配置 MTA 或提供商接受匹配正则表达式的地址,例如 sales-webinar@sales-q1@,同时拒绝 admin@hr@ 等高风险目标。

Google Workspace 设置

  1. 前往 Apps > Google Workspace > Gmail > Default Routing
  2. Specify Envelope Recipients 下选择 "Pattern Match"。
  3. 输入正则:^sales-.*@yourdomain\.com$
  4. 把信封收件人改为 sales-team@yourdomain.com

结果:sales-promo@yourdomain.com 会被接收,admin@yourdomain.com 以 550 拒绝。这可显著缩小目录探测攻击面,但不能完全消除。

若地址还要作为邮箱别名使用,可组合部分通配符与别名转发,并检查认证和循环保护。

防止 catch-all 路由循环

路由循环是最危险的故障之一,可能这样发生:

  1. Catch-all 接收发往 ghost@domain.com 的邮件。
  2. 规则自动转发到 external@gmail.com
  3. Gmail 因 SPF/DMARC 失败而拒绝。
  4. Gmail 将 NDR 退回 ghost@domain.com
  5. Catch-all 接收退信。
  6. 规则再次转发给 Gmail。
  7. 重复直至超过 MaxHopCount

您可能看到 5.4.14 Hop count exceeded5.4.6 Routing loop detected。在繁忙域名上,循环会推高发件队列并可能触发垃圾邮件封锁。

预防清单

  • 检查标头 - 确保 MTA 遵循 X-LoopDelivered-To
  • 阻止自动回复 - 让 catch-all 规则跳过带 Auto-Submitted: auto-generated 的邮件。
  • Microsoft 365 注意事项 - 出站垃圾邮件策略默认阻止外部转发,错误为 5.7.520 Access denied。启用后会增加反向散射风险,应参考最新文档谨慎权衡。

不同提供商的转发风险详见邮箱别名转发指南。

为什么多数 catch-all 设置并非必要

很多企业为了避开按用户收费而开启 catch-all。需要 support@billing@jobs@,却不想为 Google 或 Microsoft 的每个用户支付 $18/month 时,它看似是捷径。此价格仅为文中示例,可能变化。

实际上,它会形成技术债务,并可能影响声誉。

替代方案是不按用户收费的提供商。按照本文所述的当前模式,TrekMail 使用共享存储池:

  • Nano 套餐 - $0,无须银行卡。
  • Starter - $3.50/mo,含 14-day 试用。
  • Pro - $10/mo,含 14-day 试用。
  • Agency - $23.25/mo,含 14-day 试用。

可把 support@billing@jobs@ 创建为真实邮箱或自定义域名别名。正确的目录记录让服务器在边缘用 550 拒绝未知收件人,有助于保护声誉,但不能保证。通常也不再需要传输规则、Sieve 或正则路由。

管理多个域名时,应评估 catch-all 绕行方案的风险。TrekMail 的 catch-all 收件箱可作为安全网,但仍需要正确的 DNS、认证、存储和垃圾邮件策略。

总结

Catch-all 邮箱本身并非坏事,缺少保护才危险。按环境选择隔离方案:Exchange 使用隔离池,Postfix 使用标记流,Workspace 使用部分通配符。不要把 catch-all 与生产邮件混在一起。

也可以选择在合适套餐中能以合理成本创建真实地址的提供商,避开复杂性。决策前请核对最新价格和限制。

分享这篇文章

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

登录 TrekMail

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

12 个字符 两次密码一致

重置邮件已发送

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

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