我正在尝试改善我工作的组织的邮件传递(无垃圾邮件)。我们一直使用我们的普通邮件服务的 smtp 服务器作为智能主机进行传递,但最近他们封锁了该帐户,因为它发送了太多邮件。
我已经研究并注册了 SMTP 中继服务,但这些服务非常昂贵。我不想直接发送邮件的原因是,所有邮件的送达至关重要,我不想花很多时间检查日志以确保我们的邮件能送达所有人。
所以我想知道 - 是否可以设置 postfix,以便它首先尝试直接发送邮件,如果失败,则通过智能主机发送邮件?这应该允许我们向所有人发送邮件,但无需付费通过 SMTP 中继发送所有邮件。
答案1
我认为它可能如果您在同一台机器上运行两个并行的 postfix 实例,并且实例发送的“延迟”队列目录通常链接(我认为符号链接也可以)到配置为路由到智能主机的第二个实例的“传入”目录,那么它将按您的期望工作。实例 1 应该尝试发送;如果失败,它将把邮件写出到延迟队列,实例 2 的 qmgr 将把该队列视为新邮件并路由到智能主机。
(您可能需要对实例 1 进行一些调整,以调整它重试在共享目录中看到的内容的方式,并且可能存在各种锁定和竞争条件问题。)
更好的解决方案可能仍然是 2 个并行实例,但没有共享目录,以及一个脚本,该脚本扫描实例 1 的延迟队列,使用 postsuper 将其搁置,将其复制到实例 2 的传入队列,然后从实例 1 中清除它。这可以每隔几分钟由 cron 作业触发,或者可能是 inotify 钩子。