Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pl:przewodniki:exim-spamassasin-globalnie [2007/09/08 11:54]
paszczus
pl:przewodniki:exim-spamassasin-globalnie [2007/11/13 09:50] (current)
duddits
Line 1: Line 1:
-__Potrzebujemy paczek:__ +====== Konfiguracja SpamAssassina ====== 
-**spamassassin + 
-spamassassin-spamc +__Potrzebujemy paczek:__ **spamassassin ​spamassassin-compile ​spamassassin-spamc spamassassin-spamd spamassassin-update**
-spamassassin-spamd +
-spamassassin-tools**+
  
 exim jest już ładnie połatany exiscanem, exim jest już ładnie połatany exiscanem,
Line 15: Line 13:
 Powyższe oczywiście w sekcji głównej. Powyższe oczywiście w sekcji głównej.
  
-I dalej sekcji ACL/​exiscan ​(poniżej antywirusa+Kolejnym krokiem będzie ​włączenie skanowania 
-jeśli go masz):+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}}   accept condition = ${if>​{$message_size}{100k}{1}{0}}
Line 28: Line 43:
 nawet 80k), spamerzy zwykle nie próbują wpychać nam większych. nawet 80k), spamerzy zwykle nie próbują wpychać nam większych.
 Po drugie SA ma tendencję do wykładania się kiedy musi Po drugie SA ma tendencję do wykładania się kiedy musi
-oflagować emalię o wielkości 25M+oflagować emalię o wielkości 25M.
  
-Dobra, teraz dodajemy flagę do nagłówka (przyda się do +To właściwie wszystko co musimy zmienić w konfiguracji 
-filtrowania ​śmieci):+eksima odnośnie SA. Zwracam tylko uwagę, by w linii: 
 +  condition = ${if >​{$spam_score_int}{100}{1}{0}}
  
- +Ustawić taką punktację jak w **local.cf** SpamAssassina
-  warn message = X-Spam-Flag:​ YES +Tu mamy 10 punktów ​{100}. Na początek ​proponuję ustawić 
-         spam = nobody +{80}.
- +
- +
-I teraz jeśli emalia została zakwalifikowana jako spam +
-dodajemy do nagłówka gratulacje +
- +
- +
-        warn  message = This message scored $spam_score pointsCongratulations! +
-        spam = nobody:​true +
-        condition = ${if >​{$spam_score_int}{50}{1}{0}} +
- +
-Ja mam tu 5 punktów, ale na początek ​lepiej być mniej restrykcyjnym,​ +
-trzeba pamiętać, że SA musi mieć trochę czasu na naukę. Można dać +
-gdzieś w granicach ​punktów (80). +
- +
-Wszystkie powyższe wpisy najlepiej umieścić jako ostatnie przed "​accept"​.+
  
 No i to tyle jeśli chodzi o dłubanie przy MTA. Teraz pora zająć się konfiguracją No i to tyle jeśli chodzi o dłubanie przy MTA. Teraz pora zająć się konfiguracją
Line 58: Line 59:
 Ja z różnych przyczyn wybrałem pierwsze rozwiązanie. Ja z różnych przyczyn wybrałem pierwsze rozwiązanie.
  
-Ogólnie ​konfig ​do SA leży w /​etc/​mail/​spamassassin.+Ogólnie ​config ​do SA leży w /​etc/​mail/​spamassassin.
 Jak zwykle nie napracujemy się specjalnie :cool: Jak zwykle nie napracujemy się specjalnie :cool:
 Edytujemy plik local.cf: Edytujemy plik local.cf:
Line 64: Line 65:
   required_score 5.0   required_score 5.0
  
-Czyli identycznie jak w konfigu ​eksima (jak już mówiłem na start dajcie sobie+Czyli identycznie jak w configu ​eksima (jak już mówiłem na start dajcie sobie
 gdzieś około 8-miu) gdzieś około 8-miu)
- 
  
   use_bayes 1   use_bayes 1
Line 86: Line 86:
   -rw-rw-rw- ​ 1 nobody nobody ​ 5341184 2007-01-23 13:37 bayes_toks   -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)
 +  ​
 No i to tyle. No i to tyle.
 Teraz tylko: Teraz tylko:
Line 117: Line 126:
  
 Jeśli używasz [[http://​spamassassin.apache.org/​|SA]] w wersji 3.2.x lub nowszej możesz użyć **sa-compile** w celu przyspieszenia przetwarzania reguł przez SA. Zobacz też [[http://​wiki.apache.org/​spamassassin/​FasterPerformance|to]]. Jeśli używasz [[http://​spamassassin.apache.org/​|SA]] w wersji 3.2.x lub nowszej możesz użyć **sa-compile** w celu przyspieszenia przetwarzania reguł przez SA. Zobacz też [[http://​wiki.apache.org/​spamassassin/​FasterPerformance|to]].
 +
 +
 +====== Greylisting ======
 +
 +O tym co to w ogóle jest **greylisting** możesz przeczytać np. [[http://​pl.wikipedia.org/​wiki/​Greylisting|tu]].
 +
 +Jak to zwykle w PLD sprawa jest prosta ;-)
 +Ponieważ w repozytorium nie ma gotowej paczki musimy 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. [[http://​baseciq.org/​linux/​slac2pld|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:
 +
 +  temporarily rejected RCPT adres@odbiorcy.pl:​ greylisted.
 +
 +To znaczy, że ACL-ka działa jak należy :-)
 +
 +Ogólnie jak wysyłać maile wykorzystując telnet możesz przeczytać [[http://​pl.wikipedia.org/​wiki/​Simple_Mail_Transfer_Protocol#​Przyk.C5.82ad_sesji_SMTP|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).
 +Starujemy 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
 +  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:​
 +
 +Jeśli Twoim zdaniem opis jest niepełny lub zawiera błędy to daj znać.
 +
 +--- //​[[duddits@7pk.pl|Paweł Długosz]] 2007/11/13 09:28//
pl/przewodniki/exim-spamassasin-globalnie.1189245242.txt.gz · Last modified: 2007/09/08 11:54 by paszczus
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 Powered by Lighttpd - fly light