Postfix: kako kontrolirati brzinu isporuke maila na određene domene

Svi su se susreli s problemom crnih lista kod raznih mail providera, na koje ste sasvim sigurno stigli barem jednom. Scenarij je najčešće ovakav: netko od vaših korisnika proslijedio je svoju lozinku na neku adresu ili je ukucao u neku formu, vjerujući napisanom u phishing mailu.

Nakon što uspijete odblokirati vašu domenu, stvar nije gotova. Reputacija vaše domene je narušena, pa će svaki sljedeći put sankcije biti brže i teže. Nakon toga, neke mjere protiv vas provideri mogu uvoditi s lakoćom. Primjerice, mogu vam uvesti "rate throttling", odnosno usporavati primanje mailova s vaše domene. U logovima će se pojavljivati ovakve poruke:

421-4.7.0 Our system has detected an unusual rate of
421-4.7.0 unsolicited mail originating from your IP address. To protect our
421-4.7.0 users from spam, mail sent from your IP address has been temporarily
421-4.7.0 rate limited.  Please visit
421-4.7.0 http://www.google.com/mail/help/bulk_mail.html to review our Bulk
421 4.7.0 Email Senders Guidelines.

Dobra je vijest da se ovakve stvari mogu spriječiti u samom Postfixu uz pomoć nekoliko postavki, odnosno direktiva. One omogućavaju kontrolu nad brojem primatelja, razmakom između slanja pojedinih poruka i brojem istodobnih isporuka na istu domenu. Te opcije su:

smtp_destination_concurrency_limit = 20

Ova postavka određuje koliko se istodobno poruka može isporučiti na istu domenu. Osnovna vrijednost je 20, a mi preporučujemo 1.

smtp_destination_rate_delay = 0s

Ovime određujemo vremenski period između slanja pojedinih poruka na istu domenu. Osnovna vrijednost je 0, a mi preporučujemo bilo koji period za koji smatrate da će biti dovoljno dugačak, primjerice 10 ili 20 sekundi.

smtp_extra_recipient_limit = 50

Time smo ograničili broj primatelja u jednom mailu. Spameri znaju napisati desetke primatelja u polje "To", pa je ograničavanje broja primatelja način smanjivanja štete.

Postavke se upisuju u /etc/postfix/main.cf, nakon čega napravimo restart, odnosno reload postfixa. Točne vrijednosti za sve ove postavke najbolje je odrediti praćenjem logova i slušanjem zahtjeva korisnika.

Ako ste pomisli da će ovakva (vrlo restriktivna) ograničenja možda smetati određenim odredištima, u pravu ste. Ovako zadana ograničenja vrijede za sve domene i primatelje, pa ćete tako ograničiti slanje mailova i za servere koji nemaju nikakva ograničenja, poput nekih lokalnih poslužitelja.

Ima li tome pomoći? Naravno da ima.

Rješenje leži u pravljenju novih "transporta" i pripadajućih mapa. Postfix omogućava definiranje više "puteva" za isporuku mailova, pa je tako moguće definirati transport sa specifičnim postavkama. Na ovaj način je moguće fino podešavati isporuku po domenama, jednostavno pridružujući domenu određenom transportu.

Prvo je potrebno definirati transporte, koje ćemo ovaj put upisati u /etc/postfix/master.cf:

gmail   unix    -       -       n       -       -       smtp
yahoo   unix    -       -       n       -       -       smtp
sporo   unix    -       -       n       -       -       smtp

Definirali smo tri transporta, dva specifična i jedan generički ("sporo"), kojeg ćemo koristiti za više domena.

Kreiramo datoteku /etc/postfix/transport_mapa i u nju upišemo:

gmail.com       gmail:
yahoo.com       yahoo:
domena.hr      sporo:

Kao i uvijek kod mapa, pokrenemo naredbu postmap:

# postmap /etc/postfix/transport_mapa

Zatim zadamo putanju do transportne mape u /etc/postfix/main.cf:

transport_maps = hash:/etc/postfix/transport_mapa

Zadnje što je ostalo je definiranje opcija za svaki transport zasebno. Na početku smo definirali postavke za transport "smtp", ali princip je i dalje isti, samo se mijenja početno ime varijable:

sporo_destination_concurrency_limit = 1
sporo_destination_rate_delay = 20s
sporo_destination_recipient_limit = 2

Slično je i za druge transporte, samo treba promijeniti početno ime varijable, dakle gmail_destination_concurrency_limit, yahoo_destination_concurrency_limit itd.

Nakon restarta postfixa, sve bi mape trebale biti aktivne, a u logovima ćete moći pratiti idu li poruke po zadanim ograničenjima.

Ostaje pitanje koje vrijednosti koristiti? Na to je teško odgovoriti, jer sve ovisi o potrebama vaših korisnika. Nećete pogriješiti uvođenjem restriktivne politike. Uvijek naknadno možete povećati ograničenja, ako korisnici primjete da mailovi ne prolaze ili vam poruke previše čekaju u queueu.

Još jedna zanimljivost: ako varijablu *_destination_recipient_limit postavite na 1, onda se ostale dvije postavke ne odnose više na domenu, nego na točno jednog primatelja s određene domene. Tako će mail upućen na drugog primatelja iste domene biti isporučen paralelno s prvim mailom, iako je *_destination_concurrency_limit postavljen na 1!

Uz pomoć ovakvih posatavki poruke će odlaziti "urednije" prema domenama s agresivnim metodama suzbijanja spama (poput gmaila), te više ne bi trebalo biti problema s usporavanjima koja nameću takvi mail provideri.

Kuharice: 
Kategorije: 
Vote: 
0
No votes yet