所以我一直在尝试制作一个运行良好的邮件服务器,我现在想要的是限制邮件用户可以发送的邮件数量,我尝试过但使用策略失败了,我也发布了一个主题问题,但没有得到任何回复,我想如果你们中有谁有解决方案的话
因此,基本上我想要实现的是,我希望限制每个用户每 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 文档。