是否可以将拒绝的消息保存在队列中?

是否可以将拒绝的消息保存在队列中?

我在 Postfix 中为虚拟表定制了一个 Postgresql 后端,但有时用户的电子邮件配置不正确,并会收到错误回复User unknown in virtual alias table。我希望能够将此类消息保存在队列中以供审核,并可能稍后发送到正确配置的电子邮件。是否可以配置 Postfix 以将这些被拒绝的电子邮件发送到队列?

编辑:我发现的最佳解决方案是使用defer_if_rejectmain.cf但如果我只想defer_if_reject在虚拟电子邮件地址表中找不到电子邮件地址时这样做,那么我该如何实现呢?是否可以只将这种消息转发到单独的队列而不是通用队列deferred

答案1

如果您同意defer_if_reject解决方案,那么您可以在 smtpd_recipient_restriction 上添加此规则

defer_if_reject reject_unlisted_recipient

有关详细信息,请查看官方文档


为了抓住解决方案,您可以搜索 postgresql 查询,如果表中不存在帐户,则返回值 HOLD。快速谷歌搜索显示 Postgre 具有功能WHERE NOT EXISTS(查看此页面举几个例子)。(抱歉,我不熟悉 Postgre :))

因此,在 smtpd_recipient_restriction 中定义

check_recipient_access pgsql:/path/to/pgsql/config

有关的内容/path/to/pgsql/config,请参阅此手册页

相关内容