我有一个带有 postfix 的邮件服务器,我想区分退回规则。
maximal_queue_lifetime = 12h
bounce_queue_lifetime = 12h
好的,是 12 小时(也许应该更多)。但是当用户的邮箱已满时,我希望退回邮件的时间更短。是否可以像这样配置 Postfix?
提前致谢
答案1
据我所知,Postfix 不允许您根据失败代码为消息配置不同的生存期。如果消息在不同的重试中遇到不同的错误,那么根据响应实现不同生存期的系统行为可能有点难以预测。
您真的会收到如此多的退回邮件吗?这是一个问题吗?
顺便说一句,5 天的生命周期比 12 小时更合理。许多系统管理员认为邮件服务器可以离线长达 24 小时,而丢失传入邮件的风险最小……
答案2
是的,自 postfix 2.1 起,您可以将 bounce_queue_lifetime 与 maximal_queue_lifetime 分开设置,完全按照您所写的方式。
请注意,您必须在 main.cf 中设置 soft_bounce = no,否则退回邮件将使用 4XX 代码,并将进入延迟队列并受 maximal_queue_time 约束,而不是将其放入退回队列的 5XX 代码(受 bounce_queue_lifetime 约束)。发送到邮箱的邮件超出 mailbox_size_limit
请注意,您不能从 master.cf -o 参数覆盖这些参数,以下是 Wietse Venema 对此的看法
不过,我非常怀疑这不仅仅是一个烦恼,而是一个问题。 以下是 Wietse 对此的看法
在我看来,12 小时太短了。默认 5 天是合理的,除了最繁忙的系统外,不会对其他系统造成太大负担。
请注意,RFC 3463 状态代码 2.XXX.XXX 表示成功、4.XXX.XXX 表示暂时失败,请稍后重试、5.XXX.XXX 表示永久失败,这些代码与指示 bounce(8) 返回什么状态代码的 EXITCODE 不同。您可以使用 .forward(或别名)测试此行为,例如“| EXITCODE=73”(无法创建用户输出文件,5.2.0 硬退回)或“|EXITCODE=75”(持续瞬时失败,重试)。这些代码在 /usr/include/sysexits.h 中定义
您可以自定义返回的模板和代码,请参阅 bounce(5) 和 postconf 的手册页。