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

Podobne dokumenty