Kontrol kecepatan pesan SMTP pada Ubuntu 8.04, lebih disukai dengan postfix

8

Mungkin saya mengejar bug tetapi saya mencoba mengatur proxy smtp. Saya memiliki server postfix yang menerima semua email untuk koleksi server / klien. Itu mereka menggunakan smarthost (relayhost = ...) untuk meneruskan surat itu ke MTA perusahaan kami. Saya ingin membatasi jumlah pesan yang dapat direlay oleh masing-masing server untuk mencegah swamping MTA perusahaan. Postfix memiliki program yang disebut "landasan" yang mampu melacak statistik tentang surat yang akan digunakan untuk hal-hal seperti itu tetapi tampaknya tidak dieksekusi. Saya menjalankan "inotifywait -m / usr / lib / postfix / anvil" ketika saya memulai postfix dan mengirim sejumlah pesan melalui server remote. inotifywait diindikasikan landasan tidak pernah berjalan. Adakah yang mendapat kontrol tingkat postfix / landasan untuk bekerja?

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

ekstrak master.cf

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

Jawaban:

7

Pada akhirnya saya menggunakan policyd yang melakukan hal semacam ini. Saya mengkonfigurasinya untuk membatasi satu alamat IP tidak lebih dari 10.000 pesan per jam dan 1 GB. Di bawah ini adalah salinan dokumen yang ditulis untuk saya sendiri seandainya ada yang merasa terbantu.


Mengkonfigurasi postfix dan policyd

Setelah paket diinstal, lakukan perubahan berikut pada konfigurasi mereka. Di /etc/postfix/main.cf tambahkan baris berikut

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

Di /etc/postfix-policyd.conf

  • ubah WHITELISTING=1keWHITELISTING=0
  • ubah GREYLISTING=1keGREYLISTING=0
  • ubah SENDERTHROTTLE=0keSENDERTHROTTLE=1
  • ubah QUOTA_EXCEEDED_TEMP_REJECT=1keQUOTA_EXCEEDED_TEMP_REJECT=0
  • ubah SENDER_QUOTA_REJECTION="Quota Exceeded."keSENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • ubah SENDER_SIZE_REJECTION="Message size too big."keSENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • ubah SENDERMSGLIMIT=512keSENDERMSGLIMIT=10000
  • ubah SENDERRCPTLIMIT=3600keSENDERRCPTLIMIT=10000
  • ubah SENDERQUOTALIMIT=250000000keSENDERQUOTALIMIT=1000000000
  • ubah SENDERMSGSIZE=10240000keSENDERMSGSIZE=50000000
  • ubah SENDER_INACTIVE_EXPIRE=31dkeSENDER_INACTIVE_EXPIRE=1h
TimDaMan
sumber
2

Mungkin menarik untuk implementasi Anda:

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.
Greeblesnort
sumber
1

Landasan benar-benar dimaksudkan untuk membatasi tingkat pesan masuk, bukan membatasi keluar. Anggap saja sebagai filter DoS mentah.

Anda mungkin ingin melihat pengaturan yang berkaitan dengan bagian qmgr dari postfix. Khususnya, Anda mungkin ingin menetapkan batas konkurensi Anda ke sesuatu yang sangat rendah, dan waktu tunggu Anda di antrian sangat tinggi. Anda ingin mengatur laju pengiriman ke sesuatu yang memiliki penundaan (r) yang besar , dan juga ingin menurunkan jumlah proses pengiriman di master.cf.

Sudahkah Anda melihat menggunakan qshape untuk menentukan tingkat yang akan diterima untuk MTA internal Anda?

Avery Payne
sumber
Tujuan saya bukan untuk memperlambat apa pun, saya hanya ingin mencegah proses lari dari mengambil server perusahaan. Itulah kesepakatan yang saya buat dengan tim pertukaran untuk layanan mereka. Mail masih harus cepat. Saya mengkonfigurasi ulang postfix untuk pengiriman lokal dan mengulangi tes. Pesan masih mengabaikan batas.
TimDaMan
1
Saya menemukan jawabannya !! Anvil tidak mendapatkan data umpan / proses tentang klien yang ada di "mynetworks = ..." Saya mengubahnya ke mynetworks = 127.0.0.0/8 dan batas sedang dipatuhi.
TimDaMan
0

Anvil melakukan logging untuk postfix, Ive menambahkan di bawah ini ke main.cf dan tampaknya berfungsi untuk saya

#### 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 
Alex Hull
sumber