|
|
|
|
|
PostgreyÚvodPostgrey je skript napsaný v Perlu, který slouží pro tzv. "greylistování". Greylistování je poměrně účinná metoda proti SPAMu, která využívá toho, že spamboti a další MTA, jež nepracují striktně v souladu s RFC normami se obvykle nepokusí znovu doručit e-mail v případě, že pokus o první doručení nebyl úspěšný. Pokus o první doručení zprávy je díky programu Postgrey SMTP serverem (Postfixem) odmítnut s chybovým kódem 450 ("try again later"), který odesílající straně signalizuje, že se má pokusit doručit tuto zprávu později. Běžný (validní) SMTP server na tuto odpověď zareaguje tím, že danou zprávu uloží do fronty a pokusí se ji doručit později. Spamboti tyto chybové kódy obvykle ignorují, protože je pro ně nezajímavé dostávat ohromné množství vrácených a "bouncovaných" zpráv, takže se již znovu nepokusí danou zprávu poslat. A právě na tomto je založeno "greylistování".
Postgrey při prvním pokusu o doručení dané zprávy vytvoří ve své interní
databázi (BerkeleyDB) záznam obsahující trojici údajů - IP adresu klienta
a e-mailovou adresu odesílatele a příjemce zprávy. Následně tuto zprávu
odmítne přijmout po daný čas, který je standardně nastaven na 5 minut
(parametrem Výhodou tohoto řešení je obrovská úspora výpočetního výkonu, který je potřebný pro podobné programy sloužící pro boj se SPAMy a viry (například Spamassassin). Nevýhodou je pozdržení doručení zprávy, které může být od několika minut až po několik hodin (v závislosti na konfiguraci SMTP serveru odesílatele). Na druhou stranu, pozdržena bude pouze první zpráva od daného odesílatele danému příjemci, protože po úspěšném doručení zprávy dojde k vytvoření záznamu v databázi programu Postgrey a další zpráva je tak již doručena bez prodlevy. Drobnou nevýhodou může být to, že některé servery nepracují korektně v souladu s RFC normami (Kerio MailServer 5.0.5, Novell Groupwise 6.0) nebo jsou špatně nakonfigurované a pak se chybová zpráva o dočasném nedoručení e-mailu může dostat až k uživateli, který z této zprávy může být zmatený nebo se nevalidní SMTP server již nepokusí o znovudoručení zprávy, což je horší případ. Každopádně tyto individuální případy nekorektní komunikace lze řešit pomocí whitelistů, tzn. vyjmutím klienta nebo příjemce e-mailu z greylistování. InstalaceProgram Postgrey je součástí repozitáře RPMForge, takže pokud jej máme nakonfigurován (viz článek o neoficiálních repozitářích pro CentOS), tak instalaci provedeme jednoduše následujícím příkazem: yum --enablerepo=rpmforge install postgrey Konfigurace
Máme dvě možnosti jak nakonfigurovat vzájemnou komunikaci mezi programem
Postgrey a Postfix. Buď ke komunikaci využijeme klasický síťový TCP socket
nebo můžeme použít běžný unixový socket. Tuto konfiguraci nalezneme v
souboru # unix socket #DBPATH=/var/spool/postfix/postgrey #SOCKET=$DBPATH/socket #OPTIONS="--unix=$SOCKET" # TCP socket OPTIONS="--inet=127.0.0.1:10023"
Následně je zapotřebí nakonfigurovat Postfix (Postgrey dokáže spolupracovat
i s jiným MTA, např. Sendmailem). V hlavním konfiguračním souboru Postfixu,
který leží v soubor
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10023,
permit
Pokud budeme využívat komunikaci přes unixový socket, tak zaměníme předposlední řádek níže uvedeným: check_policy_service unix:/var/spool/postfix/postgrey/socket
V direktivě
Teď již jen stačí spustit program service postgrey start
a pomocí programu Na závěr nezapomeneme restartovat Postfix: service postfix start a máme hotovo... Kontrola správné funkčnosti
Pokud máme vše správně nastavené, tak bychom měli v logu SMTP serveru, tedy
v souboru Dec 1 17:28:19 www postgrey[1927]: action=greylist, reason=new, client_name=unknown, client_address=151.16.229.254, sender=balkanise@hangdrum.com, recipient=test@tachec.org Dec 1 17:28:19 www postfix/smtpd[23213]: NOQUEUE: reject: RCPT from unknown[151.16.229.254]: 450 4.2.0 <test@tachec.org>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/tachec.org.html; from=<balkanise@hangdrum.com> to=<test@tachec.org> proto=SMTP helo=<gjkzv.auckke.com> V logu nalezneme informace i o čase po který bylo doručení dané zprávy pozdrženo.
V RPM balíčku pro Postgrey je obsažen program cat /var/log/maillog | /usr/sbin/postgreyreport WhitelistyPostgrey podporuje tzv. "whitelist", tzn. seznam IP adres, domén nebo e-mailových adres na něž se nebude aplikovat greylistování.
V souboru
Adresy klientů mohou být v tomto souboru uvedeny buď pomocí:
Vlastní údaje týkající se klientů, na něž se nebude aplikovat greylistování
bychom měli uvádět do souboru
V souboru
Pokud máme velký počet uživatelů a chceme povolit greylistování pouze
pro pár vybraných uživatelů, tak se jako lepší řešení nabízí konfigurace
greylistů pro jednotlivé uživatele v Postfixu než vyjmenovávání všech
uživatelů, kteří greylistování nechtějí používat, v souboru
V hlavním konfiguračním souboru Postfixu
(
smtpd_restriction_classes = greylist
greylist = check_policy_service inet:127.0.0.1:10023
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_recipient_access hash:/etc/postfix/greylist_users,
permit
Obsah souboru test@tachec.org greylist pokus@tachec.org greylist Ještě je potřeba vytvořit binární (hash) podobu tohoto souboru, což provedeme tímto příkazem: postmap /etc/postfix/greylist_users
Naposledy změněno: 6.12.2008 16:55
|
|
|
© 2006-2008 o.k.
|
|