web-dev-qa-db-ja.com

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

バグを追いかけているのかもしれませんが、ある種の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
8
TimDaMan

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


Postfixとpolicydの設定

パッケージがインストールされたら、構成に次の変更を加えます。 /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
7
TimDaMan

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

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.
2
Greeblesnort

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

接尾辞の qmgr 部分に関連する設定を確認することをお勧めします。具体的には、 同時実行 制限を非常に低い値に設定し、 キュー内待機時間 を非常に高く設定することをお勧めします。 遅延が大きいものへの配信率を設定し、 master.cfの配信プロセスの数を減らします。

qshapeの使用を検討 内部MTAの許容レートを決定しましたか?

1
Avery Payne

アンビルは接尾辞のロギングを行います。以下を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 
0
Alex Hull