postfix:如果本地传送失败,请尝试备份 mx 服务器

postfix:如果本地传送失败,请尝试备份 mx 服务器

当邮件服务器无法访问共享存储时,我遇到了问题,然后邮件开始堆积在邮件队列中。现在,如果 Postfix 无法在本地进行投递,我希望它尝试将邮件发送到辅助邮件服务器。这可能吗?

我不知道 posfix 是否支持这样的事情,因为如果域在 my_destinations 中,那么传送是本地的,不能通过远程系统进行。

创建一个脚本来检查邮件队列是否太大,以及是否使用不同的配置文件重新启动 postfix,会不会更容易,例如,让它只成为备份 mx 服务器并将邮件转发到另一个。我希望我不会重新发明轮子。

答案1

解决这种困境的正确方法是将邮件接收与邮箱投递分开。

在与后端邮件存储具有可靠连接的机器上,实现邮件传递代理 (MDA),该代理可以由 postfix 实例提供信息,但可以是任何支持 SMTP 或 LMTP 的 MDA。

需要将此 MDA 配置为在邮箱不可用时返回 SMTP 4xx 状态代码,以便发件人稍后重试。

前端(邮件接收)可以是任意数量和类型的 MX。

作为现有平台上的临时解决方案,您可以在传送代理上设置选项 -o soft_bounce=yes,但请注意,这将重试所有被拒绝的消息。

答案2

使用可能需要改进的脚本解决了这个问题:

PQ=$(postqueue -p | grep "@" | wc -l)
if [ $PQ -gt 50 ]; then
        echo "Too many emails in queue"
        /etc/init.d/postfix stop
        cp /etc/postfix/main.cf.relay /etc/postfix/main.cf
        /etc/init.d/postfix start
        sleep 360
        /etc/init.d/postfix stop
        cp /etc/postfix/main.cf.local /etc/postfix/main.cf
        /etc/init.d/postfix start
fi

相关内容