Bagi saya, semua jawaban lain untuk pertanyaan lama ini hanya tautan saja. Jadi saya akan menjelaskan dalam beberapa kata bagaimana menerapkan solusi favorit saya untuk pekerjaan ini.
The Link yang @ 84.104 telah menyarankan, meskipun sangat berguna, tidak dapat digunakan untuk tingkat per pengirim benar menerapkan. smtpd_client
batas bukan untuk kontrol lalu lintas melainkan untuk membantu dengan perangkat lunak klien: "Tindakan terhadap klien yang membuat terlalu banyak koneksi". Meskipun satu dapat menemukan rekomendasi seperti ini salah satu yang pasti dapat membantu. Sebagai @E. Yazici telah menyarankan, addon untuk postfix diperlukan. Secara pribadi saya menemukan policyd seperti yang direkomendasikan oleh @Janne Pikkarainen agak rumit meskipun dianggap standar.
Addon favorit saya adalah postfwd karena ringan dan mudah. Perlu juga dicatat bahwa ini bekerja sangat mudah dengan Plesk atau yang serupa lainnya, tanpa mempengaruhi sekumpulan file konfigurasi Plesk yang rumit. Batas laju email di Plesk hanya diterapkan di versi 12 tetapi fitur kebijakan masih terbatas.
Pertama unduh addon terbaru dari situs di atas. Saya percaya tidak ada rpm untuk CentOS, berbeda dengan Ubuntu dan Debian. Namun demikian, disarankan agar versi terbaru digunakan. Lebih khusus lagi, versi 1.32 (yang ada di mis. Repo Ubuntu 14.04LTS) memiliki bug jahat yang mencegahnya berfungsi dengan tepat. Versi 1.35 menyelesaikan masalah ini.
Pastikan bahwa ini modul PERL yang hadir. Jika menggunakan Debian atau Ubuntu Anda dapat menginstal dari repos sehingga semua dependensi secara otomatis diurutkan dan kemudian ganti /usr/sbin/postfwd
dengan versi terbaru.
Lalu buat aturan. Buat file seperti /etc/postfwd.cf
atau /etc/postfix/postfwd.cf
dan tambahkan:
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)
Set aturan di atas jelas memiliki dua aturan yang mengevaluasi semua pengirim. Sintaks rate
tindakan adalah:
rate (<item>/<max>/<time in sec>/<action>)
Contoh harga lainnya dapat ditemukan di sini . Referensi ke sintaks dapat ditemukan pada dokumentasi . Diskusi serupa dapat ditemukan di sini . Jika SASL dilaksanakan (misalnya dovecot) Anda dapat dengan aman ganti sender
dengan sasl_username
. Anda dapat menguji validitas aturan dengan -C
opsi:
postfwd -f /etc/postfwd.cf -C
Setelah itu, Anda dapat secara opsional membuat pengguna dan grup khusus postfwd
tempat postfwd akan berjalan dan meluncurkannya:
postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd
Dalam hal menginstalnya dari apt (Debian, Ubuntu dll), harus ada file konfigurasi di bawah /etc/default/postfwd
dan Anda dapat memulai layanan dengan benar, misalnya sudo service postfwd start
.
Kemudian lihat log untuk memverifikasi bahwa postfwd mendengarkan. Postfwd menggunakan log yang sama dengan postfix (misalnya /var/log/mail
atau /usr/local/psa/var/log/maillog
lain - lain) dan sebuah baris seperti yang postfwd 1.35 ready for input
seharusnya ada.
Kemudian, beri tahu postfix untuk menggunakan postfwd. Edit file conf postfix (biasanya /etc/postfix/main.cf
) dan di baris:
smtpd_recipient_restrictions = permit_mynetworks,...
tambah check_policy_service inet:127.0.0.1:10040
. Harap pertimbangkan bahwa urutan tempat Anda memasukkan ini smtpd_recipient_restrictions
sangat penting dan Anda dapat menghabiskan banyak waktu untuk mendiagnosis apa yang salah. Seperti dijelaskan dalam pertanyaan ini , jika satu pemeriksaan mengembalikan OK atau TOLAKAN maka postfix tidak melanjutkan ke yang berikutnya, jadi Anda mungkin harus menempatkan ini tinggi.
Terakhir, untuk memeriksa apakah ini berfungsi, Anda dapat menentukan batas yang sangat kecil seperti 1 atau bahkan menambahkan aturan id=DEFAULT; action=dunno
. Lagipula aturan apa pun akan dicatat. Harap perhatikan juga bahwa batas nilai per pengirim tidak membedakan antara email mulitple dengan satu penerima atau satu email dengan banyak penerima.
Kemudian kirim email dari akun (di server itu) dan lihat log:
grep "RULES" /var/log/mail
Tautan lain: quickstart postfwd .
smtpd_recipient_restrictions
entri dengan spasi di dalamnya, jadi saya harus mendefinisikanpostfwd_ratelimit = check_policy_service inet:127.0.0.1:10040
di /etc/postfix/main.cf dan kemudian merujuknya di /etc/postfix/master.cf assmtpd_recipient_restrictions=...,$postfwd_ratelimit,...
sudo postfwd -f /etc/postfix/postfwd.cf --pidfile=/var/run/postfwd.pid --reload
.+
(setidaknya 1) daripada.*
(setidaknya 0) sehingga aturan tidak cocok dengan bidang yang tidak ada.Yang Anda butuhkan adalah tambahan kebijakan untuk Postfix. Ada selusin add-on kebijakan untuk Postfix, beberapa dari mereka memiliki fitur pembatasan tingkat. Anda dapat menemukan daftar tambahan kebijakan Postfix di sini .
sumber
Penggunaan: http://www.postfix.org/TUNING_README.html#conn_limit
sumber
Periksa daemon kebijakan ini dapat dikonfigurasi dari mysql http://www.simonecaruso.com/limit-sender-rate-in-postfix/
sumber