Ubuntu 8.04でのSMTPメッセージレート制御、できればpostfix


8

たぶん私はバグを追いかけていますが、一種のSMTPプロキシを設定しようとしています。サーバー/クライアントのコレクションのすべての電子メールを受信するPostfixサーバーがあります。スマートホスト(relayhost = ...)を使用して、メールを企業のMTAに転送します。個々のサーバーがリレーできるメッセージの数を制限して、企業のMTAが溢れるのを防ぎたいと思います。Postfixには "anvil"と呼ばれるプログラムがあり、そのようなものに使用されるメールに関する統計を追跡できますが、実行されていないようです。postinoを起動してリモートサーバーから多数のメッセージを送信しているときに、「inotifywait -m / usr / lib / postfix / anvil」を実行しました。inotifywaitは、アンビルが実行されなかったことを示しました。誰かがpostfix / anvilレートコントロールを機能させましたか?

main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = site-server-q9
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost = Out outgoing mail relay
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 10.X.X.X
smtpd_client_message_rate_limit = 1
anvil_rate_time_unit = 1h

master.cf抽出

anvil     unix  -       -       -       -       1       anvil
smtp      inet  n       -       -       -       -       smtpd

回答:


7

結局、私はこの種のことだけを行うポリシーを使用しました。1つのIPアドレスを1時間あたり1万メッセージと1 GBに制限するように構成しました。以下は、誰かが役に立ったと思われる場合に備えて自分用に作成したドキュメントのコピーです。


Postfixとポリシーの構成

パッケージをインストールした後、構成に次の変更を加えます。/etc/postfix/main.cfに次の行を追加します

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

/etc/postfix-policyd.conf

  • 変更WHITELISTING=1WHITELISTING=0
  • 変更GREYLISTING=1GREYLISTING=0
  • 変更SENDERTHROTTLE=0SENDERTHROTTLE=1
  • 変更QUOTA_EXCEEDED_TEMP_REJECT=1QUOTA_EXCEEDED_TEMP_REJECT=0
  • 変更SENDER_QUOTA_REJECTION="Quota Exceeded."SENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • 変更SENDER_SIZE_REJECTION="Message size too big."SENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • 変更SENDERMSGLIMIT=512SENDERMSGLIMIT=10000
  • 変更SENDERRCPTLIMIT=3600SENDERRCPTLIMIT=10000
  • 変更SENDERQUOTALIMIT=250000000SENDERQUOTALIMIT=1000000000
  • 変更SENDERMSGSIZE=10240000SENDERMSGSIZE=50000000
  • 変更SENDER_INACTIVE_EXPIRE=31dSENDER_INACTIVE_EXPIRE=1h

2

あなたの実装にとっておそらく興味深い:

default_destination_concurrency_limit (default: 20)

    The default maximal number of parallel deliveries to the same destination. This is the default limit for delivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents. With per-destination recipient limit > 1, a destination is a domain, otherwise it is a recipient.

    Use transport_destination_concurrency_limit to specify a transport-specific override, where transport is the master.cf name of the message delivery transport.

1

Anvilは、送信を制限するのではなく、実際に受信メッセージレートを制限することを目的としていました。粗雑なDoSフィルターと考えてください。

postfixのqmgr部分に関連する設定を確認したい場合があります。具体的には、同時実行制限を非常に低い値に設定し、キュー内での待機時間を非常に長く設定することができます。 あなたは、設定したいと思う大(R)遅延を持って何かに送達速度をそしてまた、master.cfで配信プロセスの数を下げたいです。

あなたが持っているqshapeを使って見て、あなたの内部MTAの許容率がどうなるかを決定するために?


私の目標は、速度を落とすことではなく、暴走したプロセスが企業サーバーを取り出すのを防ぎたいだけです。それは私が交換チームと彼らのサービスのためにした契約です。メールはまだきびきびしている必要があります。ローカル配信用にpostfixを再構成し、テストを繰り返しました。メッセージはまだ制限を無視しています。
TimDaMan 2009年

1
私はそれを考え出した!!Anvilは "mynetworks = ..."にあるクライアントに関するフィード/プロセスデータを取得しません。mynetworks= 127.0.0.0/8に変更しましたが、制限が守られています。
TimDaMan 2009年

0

Anvilはpostfixのロギングを実行します。以下にmain.cfに追加しましたが、私にとってはうまくいくようです

#### Prevent server sending excess mail from clients add to /etc/postfix/main.cf
####
anvil_rate_time_unit = 60s
anvil_status_update_time = 120s
smtpd_error_sleep_time = 2s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_client_message_rate_limit = 
#### End Prevent server sending excess mail 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.