Postfix:在本地传递中继失败消息,而不是通过失败的中继传递

Postfix:在本地传递中继失败消息,而不是通过失败的中继传递

是否可以免除“MAILER DAEMON”消息的别名扩展或中继?

背景:让我们来说明一下这个简单的前向全部设置中存在的问题:

/etc/aliases
root: [email protected]

/etc/postfix/generic_maps
@host.local [email protected]

/etc/postfix/main.cf
relayhost = [smtp.domain.com]:submission

当继电器断开时

  • 常规 cronjob 尝试发送电子邮件来自:[电子邮件保护]
  • 它被别名重写并遇到中继失败
  • “MAILER DAEMON”发送警告电子邮件至:[电子邮件保护]
  • 它被别名重写并遇到中继失败
  • 这些错误毫无意义地扰乱了队列

我希望将它们发送到本地收件箱,提醒登录的管理员。
如何免除错误邮件的别名扩展和/或中继?

答案1

1 明智的解决方案

/etc/postfix/main.cf
   bounce_queue_lifetime = 0
   notify_classes = bounce
   bounce_notice_recipient = bounces@<yourdomain.tld>
  • 您可能想禁用 bounce(8) 服务,但是我预计禁用邮政局长退回邮件。

有关详细信息,请参阅删除未送达的 MAILER-DAEMON在 Postfix 中收集退回邮件

怎么运行的:

  1. 无法送达的退回邮件将被删除
  2. 所有退回邮件的副本均会发送至 bounces@<yourdomain.tld>

缺点:1)bounces@<yourdomain.tld> 必须是非重定向的本地收件箱。2)原始退回邮件将被删除服务器尝试通过失败的中继进行无用的传输

2 有点疯狂的解决方案(未经测试)

/etc/postfix/main.cf
   sender_dependent_default_transport_maps = hash:sender_dependent_default_transport_maps
   virtual_mailbox_base = /var/spool/mail
   virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
   virtual_uid_maps = hash:/etc/postfix/virtual_uid_maps
   virtual_gid_maps = static:<GID_of_/var/spool/mail>
   #virtual_mailbox_domains = <yourdomain.tld> #MAYBE
sender_dependent_default_transport_maps
   MAILER-DAEMON@<yourdomain.tld> virtual:
/etc/postfix/virtual_uid_maps
   alice@<yourdomain.tld>   1000
   bob@<yourdomain.tld>     1002
   charlie@<yourdomain.tld> 1001
/etc/postfix/virtual_mailbox_maps
   alice@<yourdomain.tld>    alice/
   bob@<yourdomain.tld>      bob
   charlie@<yourdomain.tld>  charlie
  • 每次更改后,不要忘记 $postmap 所有 *_maps 文件。

有关详细信息,请参阅虚拟递送代理手册页在 Postfix 中收集退回邮件

怎么运行的:

  1. sender_dependent_default_transport_maps 强制通过虚拟退回投递:投递代理...
  2. ...将邮件发送到在 virtual_*_maps 中配置的邮箱/maildir

缺点:1) 未经测试。2) 永远不会向低于 virtual_minimum_uid 的 UID 交付。3) virtual_*_maps 必须手动与现有用户帐户保持同步

3 完全疯狂的解决方案

/etc/postfix/main.cf
   virtual_mailbox_base = /var/spool/mail
   virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
   virtual_uid_maps = hash:/etc/postfix/virtual_uid_maps
   virtual_gid_maps = static:<GID_of_/var/spool/mail>
   virtual_mailbox_domains = bounces.<yourdomain.tld>
   smtp_generic_maps = regexp:/etc/postfix/generic_maps
   sender_canonical_maps = regexp:/etc/postfix/canonical_sender_maps
/etc/postfix/virtual_uid_maps
   alice@bounces.<yourdomain.tld>   1000
   bob@bounces.<yourdomain.tld>     1002
   charlie@bounces.<yourdomain.tld> 1001
/etc/postfix/virtual_mailbox_maps
   alice@bounces.<yourdomain.tld>    alice/
   bob@bounces.<yourdomain.tld>      bob
   charlie@bounces.<yourdomain.tld>  charlie
/etc/postfix/generic_maps
   /@bounces./ @
/etc/postfix/canonical_sender_maps
   /^([^@]*)$/ $(1)@bounces.<yourdomain.tld>
   /^([^@]*)@/ $(1)@bounces.
  • 每次更改后,不要忘记 $postmap 所有 *_maps 文件。

怎么运行的:

  1. canonical_sender_maps 将“反弹”添加到发件人所有本地排队邮件
  2. 如果邮件通过 SMTP 发出,smtp_generic_maps 将撤消更改
  3. 如果邮件被退回,smtp_generic_maps 将不适用...
  4. ... 并且通知被发送到虚拟域@bounces。<yourdomain.tld>...
  5. ...将邮件发送到在 virtual_*_maps 中配置的邮箱/maildir

有关详细信息,请参阅地址重写概述

缺点:1) 太疯狂了。2) 永远不会向低于 virtual_minimum_uid 的 UID 发送消息 3) virtual_*_maps 必须手动与现有用户帐户保持同步

相关内容