Uderza mnie, że wszystkie inne odpowiedzi na to stare pytanie są tylko linkiem. Dlatego opiszę w kilku słowach, jak wdrożyć moje ulubione rozwiązanie dla tej pracy.
Ogniwo że @ 84104 zasugerował, choć bardzo użyteczne, nie mogą być wykorzystywane do prawidłowego stawkę za nadawcy wdrożenia. smtpd_client
ograniczenia nie dotyczą kontroli ruchu, ale raczej pomocy w oprogramowaniu klienckim: „Środki przeciwko klientom, którzy tworzą zbyt wiele połączeń”. Chociaż można znaleźć porady, takie jak ten jeden , który na pewno może pomóc. Jako @E. Yazici zasugerował, że wymagany jest dodatek do postfiksa . Osobiście uważam, że politykayd zalecana przez @Janne Pikkarainen jest raczej uciążliwa, chociaż jest uważana za standard.
Moim ulubionym dodatkiem jest postfwd, ponieważ jest lekki i łatwy. Warto również zauważyć, że działa to bardzo łatwo z Plesk lub podobnym, bez wpływu na skomplikowany zestaw plików konfiguracyjnych Pleska. Limit prędkości e-mail w Plesk został zaimplementowany tylko w wersji 12, ale funkcje zasad są ograniczone.
Najpierw pobierz najnowszy dodatek z powyższej strony. Wierzę, że nie ma rpm dla CentOS, w przeciwieństwie do Ubuntu i Debiana. Niemniej jednak zaleca się stosowanie najnowszej wersji. Mówiąc dokładniej, wersja 1.32 (która jest obecna np. W repozytoriach Ubuntu 14.04LTS) ma paskudny błąd, który uniemożliwia jej prawidłowe działanie. Wersja 1.35 rozwiązuje ten problem.
Upewnij się, że te moduły PERL są obecne. Jeśli używasz Debiana lub Ubuntu , możesz zainstalować z repozytoriów, aby wszystkie zależności zostały automatycznie uporządkowane, a następnie zastąpione /usr/sbin/postfwd
najnowszą wersją.
Następnie utwórz zestaw reguł. Utwórz plik taki jak /etc/postfwd.cf
lub /etc/postfix/postfwd.cf
i dodaj:
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)
Powyższy zestaw reguł ma oczywiście dwie reguły, które oceniają dla wszystkich nadawców. Składnia rate
akcji jest następująca:
rate (<item>/<max>/<time in sec>/<action>)
Inne przykłady stawek można znaleźć tutaj . Odwołanie do składni można znaleźć w dokumentacji . Podobną dyskusję można znaleźć tutaj . Jeśli SASL jest realizowany (np Dovecot) można bezpiecznie wymieniać sender
się sasl_username
. Możesz przetestować poprawność zestawu reguł z -C
opcją:
postfwd -f /etc/postfwd.cf -C
Następnie możesz opcjonalnie utworzyć dedykowanego użytkownika i grupę, postfwd
w których postfwd będzie działał i uruchamiał go:
postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd
W przypadku zainstalowania go z apt (Debian, Ubuntu itp.), Powinien również znajdować się plik konfiguracyjny /etc/default/postfwd
i możesz poprawnie uruchomić usługę, np sudo service postfwd start
.
Następnie spójrz na dziennik, aby sprawdzić, czy postfwd nasłuchuje. Postfwd używa tego samego dziennika jako postfix (EG /var/log/mail
lub /usr/local/psa/var/log/maillog
etc) oraz linii, co postfwd 1.35 ready for input
powinno być na swoim miejscu.
Następnie powiadom Postfix, aby używał PostfWD. Zmodyfikuj plik conf postfiksa (zwykle /etc/postfix/main.cf
) iw wierszu:
smtpd_recipient_restrictions = permit_mynetworks,...
dodać check_policy_service inet:127.0.0.1:10040
. Proszę wziąć pod uwagę, że kolejność, w której to umieszczasz, smtpd_recipient_restrictions
ma ogromne znaczenie i możesz spędzić dużo czasu diagnozując, co może być nie tak. Jak wyjaśniono w tym pytaniu , jeśli jedno sprawdzenie zwróci OK lub ODRZUĆ, to postfiks nie będzie kontynuowany do następnego, więc prawdopodobnie powinieneś ustawić ten wysoki.
Na koniec, aby sprawdzić, czy to działa, możesz albo określić bardzo mały limit, na przykład 1, albo nawet dodać regułę jako id=DEFAULT; action=dunno
. Każde trafienie reguły i tak jest rejestrowane. Należy również pamiętać, że limit stawek na jednego nadawcę nie rozróżnia wielu wiadomości e-mail z jednym odbiorcą lub pojedynczego e-maila z wieloma adresatami.
Następnie wyślij wiadomość e-mail z konta (na tym serwerze) i spójrz na dziennik:
grep "RULES" /var/log/mail
Inne linki: szybki start postfwd .
smtpd_recipient_restrictions
wpisie ze spacją, więc musiałem zdefiniowaćpostfwd_ratelimit = check_policy_service inet:127.0.0.1:10040
w /etc/postfix/main.cf, a następnie odwołać się do niego w /etc/postfix/master.cf jakosmtpd_recipient_restrictions=...,$postfwd_ratelimit,...
sudo postfwd -f /etc/postfix/postfwd.cf --pidfile=/var/run/postfwd.pid --reload
.+
(co najmniej 1) zamiast.*
(co najmniej 0), aby reguły nie pasowały do nieobecnych pól.Potrzebujesz dodatku do polityki dla Postfix. Istnieje kilkanaście dodatków do zasad dla Postfix, niektóre z nich mają funkcję ograniczania prędkości. Listę dodatków do zasad Postfix można znaleźć tutaj .
źródło
Zastosowanie: http://www.postfix.org/TUNING_README.html#conn_limit
źródło
Sprawdź tego demona zasad konfigurowalnego z mysql http://www.simonecaruso.com/limit-sender-rate-in-postfix/
źródło