バグを追いかけているのかもしれませんが、ある種のSMTPプロキシを設定しようとしています。サーバー/クライアントのコレクションのすべての電子メールを受信するPostfixサーバーがあります。スマートホスト(relayhost = ...)を使用して、メールを企業のMTAに転送します。個々のサーバーが中継できるメッセージの数を制限して、企業のMTAがいっぱいになるのを防ぎたいと思います。 Postfixには「anvil」と呼ばれるプログラムがあり、そのようなことに使用されるメールに関する統計を追跡することができますが、実行されていないようです。 postfixを開始し、リモートサーバーから多数のメッセージを送信しているときに、「inotifywait -m/usr/lib/postfix/anvil」を実行しました。 inotifywaitは、アンビルが実行されなかったことを示しました。誰かが接尾辞/アンビルレートコントロールを機能させましたか?
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
結局、私はまさにこの種のことをするpolicydを使用しました。単一のIPアドレスを1時間あたり10000メッセージ以下および1GBに制限するように構成しました。以下は、誰かが役立つと思った場合に備えて、自分用に作成したドキュメントのコピーです。
パッケージがインストールされたら、構成に次の変更を加えます。 /etc/postfix/main.cfに次の行を追加します
smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031
/etc/postfix-policyd.conf内
WHITELISTING=1
からWHITELISTING=0
GREYLISTING=1
からGREYLISTING=0
SENDERTHROTTLE=0
からSENDERTHROTTLE=1
QUOTA_EXCEEDED_TEMP_REJECT=1
からQUOTA_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=512
からSENDERMSGLIMIT=10000
SENDERRCPTLIMIT=3600
からSENDERRCPTLIMIT=10000
SENDERQUOTALIMIT=250000000
からSENDERQUOTALIMIT=1000000000
SENDERMSGSIZE=10240000
からSENDERMSGSIZE=50000000
SENDER_INACTIVE_EXPIRE=31d
からSENDER_INACTIVE_EXPIRE=1h
あなたの実装にとっておそらく興味深い:
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.
アンビルは、実際には、送信を制限するのではなく、受信メッセージのレートを制限することを目的としていました。粗雑なDoSフィルターと考えてください。
接尾辞の qmgr 部分に関連する設定を確認することをお勧めします。具体的には、 同時実行 制限を非常に低い値に設定し、 キュー内待機時間 を非常に高く設定することをお勧めします。 遅延が大きいものへの配信率 、を設定し、 master.cfの配信プロセスの数を減らします。
qshapeの使用を検討 内部MTAの許容レートを決定しましたか?
アンビルは接尾辞のロギングを行います。以下を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