CONTENT
  • CHANGES
Szukaj
counter

#top Postfix: policyd limits


Serwer Postfix ma dosyć ograniczone możliwości limitów jakie oferuje.
Oferowane limity są globalne, więc dotyczą wszystkich wszystkich operacji ilości nawiązywania połączeń oraz ilości przyjmowanych wiadomości na jednostkę czasu.

W samym pliku konfiguracyjnym domyślnie mamy tylko namiastę przykładowej konfiguracji związanej z ograniczeniem prędkości odbierania wiadomości od nadawców:
# INPUT RATE CONTROL
#
# The in_flow_delay configuration parameter implements mail input
# flow control. This feature is turned on by default, although it
# still needs further development (it's disabled on SCO UNIX due
# to an SCO bug).
#
# A Postfix process will pause for $in_flow_delay seconds before
# accepting a new message, when the message arrival rate exceeds the
# message delivery rate. With the default 100 SMTP server process
# limit, this limits the mail inflow to 100 messages a second more
# than the number of messages delivered per second.
#
# Specify 0 to disable the feature. Valid delays are 0..10.
#
#in_flow_delay = 1s

Oprócz powyższej opcji można również ograniczyć inne parametry związane z ilością połączeń oraz ilością odbiorców wysyłanych wiadomości:
smtpd_client_connection_rate_limit = 10
smtpd_client_connection_count_limit = 4
smtpd_client_recipient_rate_limit = 25
smtpd_client_message_rate_limit = 25
jednakże w dalszym ciągu są to globalne ustawienia dotyczące wszystkich nadawców wiadomości które są odbierane.
W serwerze Postfix dostępne są również ograniczenia (Postfix Rate Limiting) , które umożliwiają kontrolę predkości wysyłanych wiadomości, jednakże nie wpływają one na kontrolę prędkości odbierania wiadomości.



#top SMTPD_POLICY_README


Pewne możliwości bardziej szczegółowej kontroli ilości odbieranej poczty można zrealizować z użyciem mechanizmu policy (SMTPD_POLICY_README) czyli specyfikując w konfiguracji serwera w jednej z restrykcji check_policy_service (najczęsciej w restrykcji smtpd_recipient_restrictions).
Tę funkcjonalność dostępną w serwerze Postfix wykorzystuje niniejsze policy: policyd-limits, które odnotowywuje w bazie zwracany status dla każdej odebranej i przetworzonej wiadomości (nagłówków). Dzięki budowaniu w ten sposób historii odebranych wiadomości można w niniejszym policy określić ile wiadomości na jednostkę czasu może wysłać nadawca.

Kryteria dla ograniczeń dla nadawców wiadomości dla których można określać ilości wysyłanych wiadomości są następujące:
  • IPADDR - adres IP hosta łączącego się z serwerem Postfix, oczywiście adres IP może być podany w notacji CIDR, dzięki czemu ograniczenie może dotyczyć nie tylko hosta, ale również całej podsieci, dodatkowo istnieje adres IP w postaci 0.0.0.0 traktowany w sposób specjalny, który jest rozumiany jako bieżący adres IP hosta, który połączył się z serwerem Postfix, dzięki tej makro wartości można w uproszczony sposób dla wszystkich hostów ustanowić to samo ograniczenie.
  • MAIL FROM - adres email nadawcy lub domena dla adresu email nadawcy który przekazuje wiadomość do serwera Postfix, dodatkowo istnieje adres email nadawcy w postaci SENDER@DOMAIN oraz domena nadawcy w postaci FROMDOMAIN traktowane w sposób specjalny, które rozumiane są odpowiednio jako adres email nadawcy lub domena nadawcy, dzięki tym makro wartościom możliwe jest w uproszczony sposób dla wszystkich nadawców lub domen nadawców ustanowić to samo ograniczenie.
  • RCPT TO - adres email dobiorcy lub domena dla adresu email odbiocy do którego przekazywana jest wiadomości do serwera Postfix, dodatkowo istnieje adres email odbiorcy RECIPIENT@DOMAIN oraz domena odbiorcy TOTODOMAIN traktowane w sposób specjalny, które rozumiane są odpowiednio jako adres email odbiorcy lub domena odbiorcy, dzięki tym makro wartościom możliwe jest w uproszczony sposób dla wszystkich odbiorców lub domen odbiorców ustanowić to samo ograniczenie.
Powyższe kryteria mogą być stosowane rozłącznie lub łącznie w celu bardziej szczegółowego ustalenia limitów dla danej korespondencji.

Powyższe kryteria wykorzystywane są jako filtr w celu wyznaczenia liczby wiadomości która została odebrana w określonym czasie dla filtru. Obliczona liczba wiadomości następnie porównywana jest z liczbą zdefiniowaną w pliku konfiguracyjnym i na tej podstawie podejmowana jest decyzja, czy zaakceptować wiadomość, czy zwrócić do serwera (bezpośrednio) Postfix, a pośrednio do przez serwer Postfix do hosta wysyłającego wiadomość status, czy wiadomość zostanie przyjęta, czy tymczasowo odrzucona z kodem informującym by host wysyłający wiadomość mógł ponowić wysyłanie w późniejszym czasie.
Format wpisów z kryteriami w pliku jest następujący:
# ipaddr   sender           recipient   lastseconds   count
10.0.0.3   xnd.nat.wbcd.pl  o2.pl       14400         20
Powyższy zapis należy interpretować następująco: host o adresie IP 10.0.0.3 wysyłający wiadomości z dowolnego adresu email w domenie xnd.nat.wbcd.pl do odbiorców w domenie o2.pl w ciągu 14400 sekund (240 minut / 4 godziny) może wysłać maksymalnie 20 wiadomości email.
Powyższy zapis oznacza również, że po przekreczeniu limitu wystarczy zmiana domeny do której wysyłane są wiadomości na np: wp.pl i nadawca będzie mógł kontynuować wysyłanie wiadomości, również zmiana adresu IP hosta wysyłającego wiadomości spowoduje możliwość kontynuowania wysyłania wiadomości, jak również zmiana domeny do której wysyłane są wiadomości spowoduje możliwość kontynuowania wysyłania wiadomości. Tylko dla powyższych kryteriów wysyłanie wiadomości zostanie czasowo wstrzymane do czasu po którym pierwsza wysłana wiadomość przestanie mieścić się w oknie czasowym limitu (czyli pierwsza wysłana wiadomość pasująca do powyższych kryteriów będzie z czasu wcześniejszego niż 14400 sekund temu).
Oczywiście tak dokładna restrykcja może być stosowana głównie w celu zwiększenia możliwości wysyłania większej ilości wiadomości przez danego hosta wysyłającego wiadomości ze swojej domeny do domeny odbiorcy.

Powyższy zapis można zapisać jako kryteria rozłączne i ustanowić osobne limit dla poszczególnych kryteriów, ilość wysyłanych (akceptowanych) wiadomości od host o adresie IP 10.0.0.3, od nadawców w domenie xnd.nat.wbcd.pl, do odbiorców w domenie o2.pl.
# ipaddr   sender           recipient   lastseconds   count
10.0.0.3   *                *           14400         10
*          xnd.nat.wbcd.pl  *           14400         20
*          *                o2.pl       14400         30

Powyższe zapisy można również zastapić makro wartościami dzięki czemu nie będzie potrzeby modyfikacji i aktualizacji.
# ipaddr   sender           recipient   lastseconds   count
0.0.0.0    *                *           14400         25
*          FROMDOMAIN       *           14400         25
*          *                TOTODOMAIN  14400         25



#top Postfix Rate Limiting


Posted July 30, 2010 by Douglas in Linux, Open Source Software.
Tagged: email, Linux, open source software, postfix, rate limiting.
Leave a Comment

Since I had to figure out how to limit outbound traffic by domain today I thought I would post the procedure for everyone to enjoy. Listed below are the configuration changes that I made to our main postfix gateway server.

Add the following lines to /etc/postfix/master.cf. You could also copy the smtp line and rename it to something else. I use the term slow in this example.
# Outbound rate limiting
slow unix - - n - 1 smtp -o syslog_name=postfix-slow

Now add the following line to /etc/postfix/transport. You can rate limit as many individual domains as you wish using the transport file. Don't forget to postmap transport when you are finished. You should also have transport_maps set in /etc/postfix/main.cf.
domain.com slow:

The last step is to add the following block of code to /etc/postfix/main.cf:

This code forces a delay of 120 seconds between connection attempts. It also forces five concurrent connections at any one time. The current postfix default is 10. I'm not sure I would go lower than three for an organization of our size. It also limits recipients to 100 per connection attempt. Don't forget to restart the postfix daemon after making these changes!



#top User send rate limit for postfix


Image you need to limit the number of emails sent by users through your Postfix server,
with mqdaemon you can setup a per-user send rate on daily/weekly/monthly basis with MySQL storage.

To work with mqdaemon you only need a mysql table like this:

CREATE TABLE  `emails` (
`email` VARCHAR(65) NOT NULL,
`messagequota` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`messagetally` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`timestamp` INT(10) UNSIGNED DEFAULT NULL,
)

and setting up configuration parameters (db_table, db_wherecol, db_messagequota, etc) inside the Perl script,
then modify the postfix data restriction class "smtpd_data_restrictions" like the following:


To print the cache content with update statistics for username
into log file just send a SIGHUP to the process PID using "kill -HUP $pid".




Zmodyfikowany ostatnio: 2014/09/08 16:01:06 (9 lat temu), textsize: 11,3 kB, htmlsize: 13,9 kB

Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników
2021/05/20 11:03:35:   (0)  
Witam
U mnie dodanie do master.cf slow i dodanie odpowiednich dyrektyw dla slow w main.cf powoduje error:

qmgr[XXXX]: warning: connecto to transport private/slow: No such file or directory