我需要退回通过 Postfix 服务器发送的邮件,因为这些邮件的收件人和抄送字段中包含太多唯一域。有没有一种简单的方法可以用 Postfix 完成此操作?(我是 Postfix 新手,通常使用 sendmail)。
添加/编辑
To/CC: [email protected], [email protected], [email protected],
[email protected], [email protected], [email protected],
[email protected], [email protected], [email protected],
[email protected], [email protected]
应该反弹给用户。
To/CC: [email protected], [email protected], [email protected],
[email protected], [email protected], [email protected],
[email protected], [email protected], [email protected],
[email protected], [email protected], [email protected]
應該通過。
答案1
没有简单的方法可以做到这一点。在 Postfix 中,没有机制可以在接受或拒绝收件人之前对其进行统计。必须记住,Postfix 是一个邮件服务器,并且只有有限的内容检查可能性。
为此,您可以添加队列前过滤器(自己编写)或研究策略服务的可能性(自己编写)。最简单的方法是策略服务,可以使用简单的 Perl 脚本或您喜欢的任何脚本来实现。可以在 Postfix 上找到带有示例 Perl 实现的完整文档文档。还有其他使用相同接口的实现,但不能满足您的特殊情况。其中一个是策略权重。
如果您熟悉编写 SpamAssassin 规则,您可以尝试添加一个规则并使用 amavisd-new 作为队列前过滤器。
但正如我所说,对于您的情况没有内置解决方案。您的问题的其他答案只是全局限制,在这里没有帮助。
答案2
使用 smtpd_recipient_overshoot_limit(和 smtpd_recipient_limit)
smtpd_recipient_overshoot_limit (1000) The number of recipients that a remote SMTP client can send in excess of the limit specified with $smtpd_recipient_limit, before the Postfix SMTP server increments the per-session error count for each excess recipient.
答案3
查看:
smtpd_client_recipient_rate_limit(默认值:0)
无论 Postfix 是否实际接受这些收件人,每个时间单位允许任何客户端向此服务发送的最大收件人地址数。时间单位由 anvil_rate_time_unit 配置参数指定。默认情况下,客户端每个时间单位可以发送 Postfix 可以接受的收件人地址数。
要禁用此功能,请指定限制为 0。
smtpd_client_message_rate_limit(默认值:0)
无论 Postfix 是否实际接受这些消息,每个时间单位允许任何客户端向此服务发出的最大消息传递请求数。时间单位由 anvil_rate_time_unit 配置参数指定。默认情况下,客户端每个时间单位可以发送与 Postfix 可以接受的一样多的消息传递请求。要禁用此功能,请指定限制为 0。
作为postconf 手册页建议。