Konfiguracja SpamAssassina - PLD
Transkrypt
Konfiguracja SpamAssassina - PLD
2017/02/20 03:08 1/6 Konfiguracja SpamAssassina Konfiguracja SpamAssassina Potrzebujemy paczek: spamassassin spamassassin-compile spamassassin-spamc spamassassin-spamd spamassassin-update exim jest już ładnie połatany exiscanem, więc cała operacja sprowadza się do dopisania paru linijek w exim.conf Zakładając, że SA będzie na tym samym pudle: spamd_address = 127.0.0.1 783 Powyższe oczywiście w sekcji głównej. Kolejnym krokiem będzie włączenie skanowania zawartości (content scanning). Jeśli skonfigurowałeś sobie już wcześniej sprawdzanie poczty antywirusem (np. clamav), to prawdopodobnie poniższe linijki masz odhaszowane: acl_smtp_mime = acl_check_mime acl_smtp_data = acl_check_content Jeśli nie to teraz jest odpowiedni moment by to zrobić. PLD-owy konfig do eksima jest już wstępnie skonfigurowany do połączenia z SA, my to tylko trochę zmodyfikujemy dla naszych potrzeb. W sekcji ACL - acl_check_content modyfikujemy blok: warn message = X-Spam-Score: $spam_score ($spam_bar) spam = nobody:true w ten sposób: accept condition = ${if>{$message_size}{100k}{1}{0}} warn message = X-Spam-Score: $spam_score ($spam_bar) condition = ${if<{$message_size}{100k}{1}{0}} spam = nobody:true Co bystrzejsi pewnie zauważyli, że oznaczamy emalie do 100k. Dlaczego ? Bo to wystarcza (wyczytałem, że styka nawet 80k), spamerzy zwykle nie próbują wpychać nam większych. Po drugie SA ma tendencję do wykładania się kiedy musi oflagować emalię o wielkości 25M. To właściwie wszystko co musimy zmienić w konfiguracji eksima odnośnie SA. Zwracam tylko uwagę, by w linii: PLD-users.org - http://www.pld-users.org/ Last update: pl:przewodniki:exim-spamassasin-globalnie-greylisting-sasl http://www.pld-users.org/pl/przewodniki/exim-spamassasin-globalnie-greylisting-sasl 2009/11/16 14:41 condition = ${if >{$spam_score_int}{100}{1}{0}} Ustawić taką punktację jak w local.cf SpamAssassina. Tu mamy 10 punktów {100}. Na początek proponuję ustawić 8 {80}. No i to tyle jeśli chodzi o dłubanie przy MTA. Teraz pora zająć się konfiguracją SA. Są ogólnie dwa sposoby: system-wide configuration per-user configuration Ja z różnych przyczyn wybrałem pierwsze rozwiązanie. By SA działał w trybie system-wide configuration zmieniamy w /etc/sysconfig/spamd przełączniki na: SPAMD_OPTS="-d " Ogólnie config do SA leży w /etc/mail/spamassassin. Jak zwykle nie napracujemy się specjalnie Edytujemy plik local.cf: required_score 5.0 Czyli identycznie jak w configu eksima (jak już mówiłem na start dajcie sobie gdzieś około 8-miu) use_bayes 1 bayes_auto_learn 1 bayes_path /etc/mail/spamassassin/db/bayes bayes_file_mode 0666 Jak widać używam bayes'a. Można jak ktoś chce być bardziej pr0 dołożyć sobie jeszcze np. razora. Nie chciało mi się kombinować z prawami dostępu do tego katalogu /etc/mail/spamassassin/db, więc dałem 777. Jak ktoś nie chce żeby „/” mu puchło to niech wrzuci w/w katalog np. gdzieś na /var. U mnie mniej więcej po pół roku wygląda to tak: sudo ls -l /etc/mail/spamassassin/db razem 20569 -rw-rw-rw- 1 nobody nobody 81456 2007-01-23 13:37 bayes_journal -rw-rw-rw- 1 nobody nobody 21004288 2007-01-23 13:37 bayes_seen -rw-rw-rw- 1 nobody nobody 5341184 2007-01-23 13:37 bayes_toks Możemy przy okazji poprosić aby SA do nagłówka zamiast rozbudowanego podsumowania dodawał zwięzły raport ze swojej analizy: clear_report_template report Content analysis details: (_SCORE_ points, _REQD_ required) Co w efekcie może nam dać coś takiego: X-Spam-Report: Content analysis details: (1.6 points, 8.0 required) http://www.pld-users.org/ Printed on 2017/02/20 03:08 2017/02/20 03:08 3/6 Konfiguracja SpamAssassina No i to tyle. Teraz tylko: sudo /sbin/service spamd start sudo /sbin/service exim restart By uniknąć: auto-whitelist: open of auto-whitelist file failed: locker: safe_lock: cannot create tmp lockfile /home/users/nobody/.spamassassin/auto -whitelist.lock.domena.com.pl.5884 for /home/users/nobody/.spamassassin/auto-whitelist.lock: Permission denied Ważne jest by nobody miał swój katalog domowy Jeszcze jedno. Tu jest dobra strona o konfigurowaniu SA http://wiki.apache.org/spamassassin/ Jak karmić SA z ręki ? Wymaga to trochę manualnej roboty, ale znakomicie przyspiesza naukę naszego SA. Tworzymy sobie jakiś folder (SPAM) i ręcznie wpychamy do niego wszystkie emalie, które uważamy za syf. Jak mamy już tam trochę śmiecia (ja uzbierałem ~500 szt.) To dajemy: sa-learn --showdots --spam --dir ~/katalog/ze/spamem Natomiast wszystkie dobre wiadomości oznaczamy: sa-learn --showdots --ham --dir ~/katalog/z/dobrymi/mailami Powyższe dla maildirów. Jak ktoś ma nieszczęście używać formatu mbox to man sa-learn Jezeli SA nie zacznie sam sprawdzać i przydzielać ilości punktów wykonaj: sa-update -D --nogpg potem: service spamd restart Jeśli używasz SA w wersji 3.2.x lub nowszej możesz użyć sa-compile w celu przyspieszenia przetwarzania reguł przez SA. Zobacz też to. Greylisting O tym co to w ogóle jest greylisting możesz przeczytać np. tu. Jak to zwykle w PLD sprawa jest prosta PLD-users.org - http://www.pld-users.org/ Ponieważ w repozytorium nie ma gotowej paczki musimy Last update: pl:przewodniki:exim-spamassasin-globalnie-greylisting-sasl http://www.pld-users.org/pl/przewodniki/exim-spamassasin-globalnie-greylisting-sasl 2009/11/16 14:41 sobie demona greylistd ugotować sami. Nie będę w tym miejscu opisywał jak to zrobić, wspomnę tylko, że o przygotowaniu środowiska do samodzielnego budowania paczek w PLD można przeczytać np. tu. Dla niecierpliwych jest też filmowa wersja W domyślnej konfiguracji greylistd nie bardzo jest co zmieniać, domyślne ustawienia powinny w większości przypadków wystarczyć (mail jest odbijany na 10 minut). Włączenie greylistingu w eksimie sprowadza się do skopiowania przykładu z dokumentacji (w chwili pisania tego poradnika to było /usr/share/doc/greylistd-0.8.5). Z pliku exim4-acl-example.txt.gz kopiujemy: defer message = $sender_host_address is not yet authorized to deliver \ mail from <$sender_address> to <$local_part@$domain>. \ Please try later. log_message = greylisted. !senders = : !hosts = : +relay_from_hosts : \ ${if exists {/etc/greylistd/whitelist-hosts}\ {/etc/greylistd/whitelist-hosts}{}} : \ ${if exists {/var/lib/greylistd/whitelist-hosts}\ {/var/lib/greylistd/whitelist-hosts}{}} !authenticated = * !acl = acl_whitelist_local_deny domains = +local_domains : +relay_to_domains verify = recipient/callout=20s,use_sender,defer_ok condition = ${readsocket{/var/run/greylistd/socket}\ {--grey \ $sender_host_address \ $sender_address \ $local_part@$domain}\ {5s}{}{false}} I wklejamy ten blok do exim.conf tuż pod acl_check_rcpt:. Na koniec jeszcze jedna acz istotna uwaga. Demon greylistd tworzy sobie gniazdko z właścicielem i grupą mail (mail:mail, 0660). Przy takim ustawieniu exim nie ma szans by się tam dostać. Mamy tu dwa wyjścia: zmieniamy uprawnienia do gniazdka lub dopisujemy eksima do grupy mail. Ja wybrałem to drugie rozwiązanie. Restartujemy eksima: sudo /sbin/service exim restart I testujemy co nam z tego wszystkiego wyszło: sudo exim -bh <jakieś_dowolne_IP> Jeśli po wpisaniu adresu mailowego (rcpt to:) w czasie testu pojawi nam się coś takiego: http://www.pld-users.org/ Printed on 2017/02/20 03:08 2017/02/20 03:08 5/6 Konfiguracja SpamAssassina temporarily rejected RCPT [email protected]: greylisted. To znaczy, że ACL-ka działa jak należy Ogólnie jak wysyłać maile wykorzystując telnet możesz przeczytać na stronie Wikipedii. Sesja eksima (exim -bh) jest tylko „na niby”, więc można eksperymentować do woli bez stresu, że komuś zasypiemy jakimś śmieciem skrzynkę. Na koniec skonfigurujemy jeszcze autoryzację. Autoryzacja SMTP (plain auth) Znowu specjalnie się nie napracujemy. Dopoldkowujemy pakiet cyrus-sasl-saslauthd. Jego domyślna konfiguracja (autoryzacja przez PAM) jest dokładnie tym czego tu potrzebujemy (dla przypomnienia zakładamy, że autoryzujemy konta shellowe). Startujemy demona: sudo /sbin/service saslauthd start A w exim.conf w bloku AUTHENTICATORS odkomentowujemy: begin authenticators # Uncomment lines below to enable SMTP AUTH support. Be aware that this # requires cyrus-sasl-saslauthd package to be installed. plain: driver = plaintext public_name = PLAIN server_prompts = : server_condition = ${if saslauthd{{$2}{$3}{smtp}}{1}{0}} server_set_id = $2 login: driver = plaintext public_name = LOGIN server_prompts = "Username:: : Password::" server_condition = ${if saslauthd{{$1}{$2}{smtp}}{1}{0}} server_set_id = $1 Teraz już tylko restart eksima: sudo /sbin/service exim restart I szybkie sprawdzenie jak to działa: telnet localhost 25 Trying 127.0.0.1.25... Connected to localhost. Escape character is '^]'. 220 th.domena.pl ESMTP Exim 4.68 Tue, 13 Nov 2007 09:21:59 +0000 ehlo test PLD-users.org - http://www.pld-users.org/ Last update: pl:przewodniki:exim-spamassasin-globalnie-greylisting-sasl http://www.pld-users.org/pl/przewodniki/exim-spamassasin-globalnie-greylisting-sasl 2009/11/16 14:41 250-th.domena.pl Hello localhost [127.0.0.1] 250-SIZE 52428800 250-DSN 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS 250 HELP No i pięknie. Przykładowe pliki konfiguracyjne exim.conf local.cf whitelist-hosts Jeśli Twoim zdaniem opis jest niepełny lub zawiera błędy to daj znać. — Paweł Długosz From: http://www.pld-users.org/ - PLD-users.org Permanent link: http://www.pld-users.org/pl/przewodniki/exim-spamassasin-globalnie-greylisting-sasl Last update: 2009/11/16 14:41 http://www.pld-users.org/ Printed on 2017/02/20 03:08