后缀中的速率限制

后缀中的速率限制

所以我一直在尝试制作一个运行良好的邮件服务器,我现在想要的是限制邮件用户可以发送的邮件数量,我尝试过但使用策略失败了,我也发布了一个主题问题,但没有得到任何回复,我想如果你们中有谁有解决方案的话

因此,基本上我想要实现的是,我希望限制每个用户每 5 分钟发送 2 封电子邮件,希望这样可以清楚

因此,关于我该如何处理这个问题,有什么建议吗?

我之前的政策问题的链接

答案1

尝试postfwd

我的服务器中端口 25 上的默认 smtpd 总是有非常严格的限制:mynetworks=127.0.0.1,它不允许任何身份验证和中继等。它仅用于从其他服务器接收邮件。因此,此类邮件服务器需要任何人连接到提交端口(587)并进行身份验证才能向外发送邮件。

端口 587 上的此提交 smtpd 进程在 中插入了 postfwd 作为策略服务smtpd_sender_restrictions。它在 中配置/etc/postfix/master.cf如下:

...
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_restrictions=reject_sender_login_mismatch,check_policy_service,inet:127.0.0.1:10040,permit
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
...

位于 localhost:10040 的策略服务是 postfwd。它的启动在 Debian 中由 定义/etc/default/postfwd,其中它具有以下内容(对于与 Postfix 的连接很重要):

CONF=/etc/postfix/postfwd.cf
INET=127.0.0.1
PORT=10040

systemd 使用它来为 postfwd 可执行文件构建命令行(它实际上是一个 Perl 脚本)。它将进一步的配置文件设置为/etc/postfix/postfwd.cf,您可以在其中定义实际规则。这些规则可能非常复杂,但对于您的问题来说,它将非常简单,只有一行:

id=TWO_IN_FIVE; sender=~/.*/; action=rate(sender/2/300/REJECT only 2 messages per 5 minutes for $$sender)

rate是 postfwd 的一个限速功能,这里设置为允许 300 秒内发送 2 条消息,否则将拒绝发送指定的消息。$$sender替换为该邮件的实际发件人。请注意,它将每个收件人视为独立邮件;如果您尝试向两个收件人发送邮件,则将计为两封邮件;如果您尝试向三个收件人发送邮件,则此服务将阻止此类消息。您会看到,5 分钟内发送 2 条消息的限制非常严格。

关于postfwd的功能和语法的完整描述请参考官方postfwd 文档

相关内容