如何使用 exim 处理辅助电子邮件服务器 (mx) 上无法路由的地址?

如何使用 exim 处理辅助电子邮件服务器 (mx) 上无法路由的地址?

我在两台不同的 Ubuntu 服务器上配置了两个 exim4 实例。它们都接受来自相同三个域的电子邮件。主域充当最终目的地,而辅域仅将电子邮件转发到主域。

但是,不可路由的地址存在一个问题。每隔一段时间,辅助服务器就会收到一封电子邮件,该邮件发往一个不存在的地址,但属于正确的域。它接受此消息,然后尝试将其转发到主服务器。但是,主服务器会拒绝该消息,并返回“550 不可路由的地址”,从而使辅助服务器陷入困境,所有那些消息都冻结在队列中。

这个问题的正确解决方案是什么?辅助服务器是否应该丢弃主服务器拒绝的消息?如果是,我该如何配置它来做到这一点?

我该如何做才能不丢失冗余呢?假设主服务器出现配置错误并拒绝所有消息。我不想丢失它们。如果辅助服务器保留它们直到主服务器恢复到正确配置,我会非常感激。

当然,这个问题并不是什么新问题,而且存在规范的解决方案……?

答案1

我已经看到了这些机制的使用:

  • 丢弃通过辅助服务器发送到不存在地址的邮件。这可防止使用辅助服务器生成反向散射垃圾邮件。

  • 安排在辅助服务器上提供用户数据库。如果您使用 LDAP 作为用户数据库,这相对容易。/etc/passwd 中的用户更难,但可以通过将文件复制到 Exim 可以使用的位置来完成。

  • 调用目标服务器来验证地址。如果主服务器发生故障,这将中断,但我相信有缓存。

如果主服务器正常运行并拒绝邮件,我认为您的辅助服务器不会收到任何合法邮件。如果任何服务器拒绝邮件,邮件应该被退回。服务器(垃圾邮件机器人除外)不会尝试辅助服务器来查看它是否会投递邮件。

大多数电子邮件服务器都能妥善处理服务器中断,并将邮件排队以便稍后发送。许多服务器会尝试几天。那些没有这样做的通常是垃圾邮件机器人,或实施不佳的自动邮件传递系统。

相关内容