この古い質問に対する他のすべての回答はリンクのみであると思います。そこで、この仕事に私のお気に入りのソリューションを実装する方法を簡単に説明します。
リンクその84104 @は非常に有用ではあるが、適切に送信者ごとの割合を実装するために使用することができない、示唆しています。smtpd_client
制限はトラフィック制御のためではなく、クライアントソフトウェアを支援するためのものです。「接続が多すぎるクライアントに対する対策」。1は、このような勧告を見つけることができますが1、それは確かに役立つことがあります。@Eとして Yaziciが示唆したように、後置用のアドオンが必要です。個人的には、@ Janne Pikkarainenが推奨しているようにポリシーが設定されていると思いますが、それは標準と考えられています。
私のお気に入りのアドオンは、軽量で簡単なのでpostfwdです。Pleskの複雑な設定ファイルセットに影響を与えることなく、これがPleskまたはその他の類似物で非常に簡単に機能することにも注意してください。Pleskのメールレート制限はバージョン12でのみ実装されていますが、それでもポリシー機能は制限されています。
まず、上記のサイトから最新のアドオンをダウンロードします。UbuntuやDebianとは対照的に、CentOSにはrpmはありません。それでも、最新バージョンを使用することをお勧めします。より具体的には、バージョン1.32(Ubuntu 14.04LTSリポジトリなどにあります)には、適切に機能するのを妨げる厄介なバグがあります。バージョン1.35はこれを整理します。
これらの PERLモジュールが存在することを確認してください。DebianまたはUbuntuを使用している場合は、リポジトリからインストールして、すべての依存関係を自動的に整理してから/usr/sbin/postfwd
最新バージョンに置き換えることができます。
次に、ルールセットを作成します。/etc/postfwd.cf
またはなどのファイルを作成し、/etc/postfix/postfwd.cf
追加します。
id=R001; sender=~/.*/; action=rate(sender/100/86400/REJECT only 100 messages per day for $$sender)
id=R002; sender=~/.*/; action=rate(sender/50/3600/REJECT only 50 messages per hour for $$sender)
上記のルールセットには、すべての送信者に対して評価される2つのルールがあります。rate
アクションの構文は次のとおりです。
rate (<item>/<max>/<time in sec>/<action>)
他の料金の例については、こちらをご覧ください。構文の参照については、ドキュメントを参照してください。ここで同様の議論を見つけることができます。SASLが実装されている場合(例えばdovecotの)あなたが安全に交換することができsender
てsasl_username
。次の-C
オプションを使用して、ルールセットの有効性をテストできます。
postfwd -f /etc/postfwd.cf -C
その後、postfwd
postfwdを実行して起動する専用のユーザーとグループをオプションで作成できます。
postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd
apt(Debian、Ubuntuなど)からインストールする場合は、設定ファイルも下/etc/default/postfwd
にある必要があり、サービスを適切に開始できます(例:)sudo service postfwd start
。
次に、ログを見て、postfwdがリッスンしていることを確認します。Postfwdは、postfixと同じログ(/var/log/mail
または/usr/local/psa/var/log/maillog
など)と適切な行を使用しますpostfwd 1.35 ready for input
。
次に、postfwdを使用することをpostfixに知らせます。postfix confファイルを編集し(通常は/etc/postfix/main.cf
)、次の行で:
smtpd_recipient_restrictions = permit_mynetworks,...
を追加しcheck_policy_service inet:127.0.0.1:10040
ます。これを配置する順序smtpd_recipient_restrictions
は非常に重要であり、何が間違っているのかを診断するのに多くの時間を費やすことになります。この質問で説明したように、1つのチェックがOKまたはREJECTを返す場合、postfixは次のチェックに進まないため、おそらくこれを高く設定する必要があります。
最後に、これが機能することを確認するには、1などの非常に小さな制限を指定するか、ルールをとして追加しid=DEFAULT; action=dunno
ます。とにかく、ルールのヒットは記録されます。また、送信者ごとのレート制限は、単一の受信者を含む複数の電子メールと複数の受信者を含む単一の電子メールを区別しないことに注意してください。
次に、そのサーバーのアカウントからメールを送信して、ログを確認します。
grep "RULES" /var/log/mail
他のリンク:postfwdクイックスタート。