Linux

後綴中的速率限制

  • February 21, 2021

所以我一直在嘗試製作一個執行良好的郵件伺服器,現在我想要的是限制郵件使用者可以發送的郵件數量得到任何回應認為如果你們中的任何人有解決方案

所以,基本上我想要實現的是我希望每個使用者每 5 分鐘限制 2 封電子郵件希望這清楚

所以關於我該如何處理的任何建議

我以前的政策問題的連結

試試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 官方文件

引用自:https://serverfault.com/questions/1054508