SpamAssasin to ostatnia broń w naszym arsenale przygotowanym na wszelki spam jaki może się pojawić na naszym serwerze poczty.
Zainstalujmy więc wymagane paczki:
apt-get install spamassassin spamc
Dodajmy użytkownika, który będzie uruchamiał spammassassin-a
groupadd spamd useradd -g spamd -s /bin/false spamd chown spamd:spamd -R /etc/spamassassin/
Użytkownika już mamy, teraz czas skonfigurować SA:
#vim /etc/default/spamassassin # If you're using systemd (default for jessie), the ENABLED setting is # not used. Instead, enable spamd by issuing: # systemctl enable spamassassin.service # Change to "1" to enable spamd on systems using sysvinit: ENABLED=1 SPAMD_HOME="/home/spamd/" OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir /home/spamd/ -s /home/spamd/spamd.log" PIDFILE="/home/spamd/spamd.pid" CRON=1
Uruchommy SA:
service spamassassin start
Dodajmy SpamAssassin-a do postfixa:
#vim /etc/postfix/master.cf #na dole pliku dodajmy: spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} #w każdym protokole, z którego korzystamy (np. smtps, submission) dodajmy opcję kierowania poczty do spamassassina: -o content_filter=spamassassin
Zrestartujmy postfix-a:
service postfix restart
Musimy jeszcze utworzyć reguły filtrowania:
#/etc/spamassassin/local.cf rewrite_header Subject ***** SPAM _SCORE_ ***** report_safe 0 required_score 5.0 use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 skip_rbl_checks 0 use_razor2 0 use_dcc 0 use_pyzor 0 #Adjust scores for SPF FAIL score SPF_FAIL 4.0 score SPF_HELO_FAIL 4.0 score SPF_HELO_SOFTFAIL 3.0 score SPF_SOFTFAIL 3.0 #adjust DKIM scores score DKIM_ADSP_ALL 3.0 score DKIM_ADSP_DISCARD 10.0 score DKIM_ADSP_NXDOMAIN 3.0
Restart SA dla pewności, że korzysta z naszych nowych reguł:
service spamassassin restart
Aby przetestować SpamAssassin-a można z obcego serwera wysłać maila na swoją skrzynkę w postfix-ie i przeglądnąć nagłówek wiadomości.
Aktualizacja 11/05/2016:
Zauważyłem, że spamassassin informuje o błędzie
warn: config: failed to parse line, skipping, in "/etc/spamassassin/local.cf": use_dcc 0
Można to łatwo naprawić komentując use_dcc lub instalując paczkę z dcc i nie używać tego modułu (bezcelowe).
spamassassin --lint
Pozostałe wpisy dotyczące tego cyklu:
Posftix i Dovecot – Idealny duet tworzący serwer poczty
Walka ze spamem cz.1 – Postfix SPF
Walka ze spamem cz.2 – Postfix DKIM
Cześć,
Mam duży problem z potokiem w Postfixie. Otóż w master.cf skonfigurowałem
smtp inet n – – – – smtpd
-o content_filter=spamassassin
spamassassin unix – n n – – pipe
user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
w potoku dałem również ścieżkę do skryptu sh:
#!/bin/sh
# —————————————————————–
# File: spamchk
#
# Purpose: SPAMASSASIN shell-based filter
#
# Location: /usr/local/bin
#
# Usage: Call this script from master.cf (Postfix)
#
# Certified: GENTOO Linux, Spamassassin 3.0, Postfix
# —————————————————————–
# Variables
SENDMAIL=”/usr/sbin/sendmail -i”
EGREP=/bin/egrep
# Exit codes from
EX_UNAVAILABLE=69
# Number of *’s in X-Spam-level header needed to sideline message:
# (Eg. Score of 5.5 = „*****” )
SPAMLIMIT=10
# Clean up when done or when aborting.
### [zakomentowałem] trap „rm -f /tmp/out.$$” 0 1 2 3 15
# Pipe message to spamc
cat | /usr/bin/spamc -u filter | sed 's/^\.$/../’ > /tmp/out.$$
# Are there more than $SPAMLIMIT stars in X-Spam-Level header? :
if $EGREP -q „^X-Spam-Level: \*{$SPAMLIMIT,}” < /tmp/out.$$
then
# Option 1: Move high scoring messages to sideline dir so
# a human can look at them later:
# mv out.$$ $SIDELINE_DIR/`date +%Y-%m-%d_%R`-$$
# Option 2: Divert to an alternate e-mail address:
$SENDMAIL support@domain.pl < /tmp/out.$$
# Option 3: Delete the message
# rm -f /tmp/out.$$
else
$SENDMAIL "$@" < /tmp/out.$$
fi
# Postfix returns the exit status of the Postfix sendmail command.
exit $?
W powyższym skrypcie skierowałem maile do katalogu /tmp i odczytałem w nim dopisane nagłówki przez spamd ale oznaczeniem, że to nie spam… Myślałem, że ten skrypt zadziała ale niestety nie… Czyli wychodzi, że nic nie działa i nie wiem dlaczego…. Czy nowy postfix ma jakaś inną konfigurację potoków?
W logach to co zauważyłem, kiedy mail przechodzi przez postfixa:
Sun Nov 20 13:01:25 2022 [382267] info: spamd: connection from ::1 [::1]:35776 to port 783, fd 5
Sun Nov 20 13:01:25 2022 [382267] info: spamd: processing message for spamd:1008
Sun Nov 20 13:01:25 2022 [387909] info: util: setuid: ruid=1008 euid=1008 rgid=1008 1008 1008 egid=1008 1008 1008
Sun Nov 20 13:01:25 2022 [382267] info: spamd: clean message (-0.2/5.0) for spamd:1008 in 0.5 seconds, 3297 bytes.
Sun Nov 20 13:01:25 2022 [382267] info: spamd: result: . 0 – DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS scantime=0.5,size=3297,user=spamd,uid=1008,required_score=5.0,rhost=::1,raddr=::1,rport=35776,mid=,autolearn=ham autolearn_force=no
Kiedy wykonuję z linii poleceń:
/usr/bin/spamc -e /usr/sbin/sendmail -oi -f sender@mail.pl recipient@mail.pl
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBETEST-EMAIL*C.34X
CTRL+D
wtedy idzie to do spamd i mam taki wynik w logach:
Sun Nov 20 13:14:26 2022 [382267] info: spamd: connection from ::1 [::1]:44746 to port 783, fd 5
Sun Nov 20 13:14:26 2022 [382267] info: spamd: processing message (unknown) for spamd:1008
Sun Nov 20 13:14:26 2022 [388068] info: util: setuid: ruid=1008 euid=1008 rgid=1008 1008 1008 egid=1008 1008 1008
Sun Nov 20 13:14:27 2022 [382267] info: spamd: identified spam (7.9/5.0) for spamd:1008 in 0.2 seconds, 79 bytes.
Sun Nov 20 13:14:27 2022 [382267] info: spamd: result: Y 7 – EMPTY_MESSAGE,MISSING_DATE,MISSING_FROM,MISSING_HEADERS,MISSING_MID,MISSING_SUBJECT,NO_HEADERS_MESSAGE,NO_RECEIVED,NO_RELAYS scantime=0.2,size=79,user=spamd,uid=1008,required_score=5.0,rhost=::1,raddr=::1,rport=44746,mid=(unknown),autolearn=no autolearn_force=no
Ewidentnie problem w master.cf. Co w takim razie trzeba zrobić by w potoku było wszystko jak być powinno. Może spamd nie widzi maila – ale w takim razie na jakiej podstawie oznacza nagłówki w mailu, patrzyłem i są nagłówki w mailu:
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on cybos.pl
X-Spam-Level:
X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,
RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
trochę do okoła działanie moim zdaniem, od przenoszenia zatagowanych jako spam wiadomości jest np. SIEVE od DOVECOTa, chyba że z jakiegoś powodu nie wykorzystujesz dovecot-a, pewnie temat już rozwiązałeś ale jeżeli nie, wbijaj coś wymyślimy
potrzebuję pomocy z konfiguracją markowania wiadomości i przenoszeniem do folderu spam automatycznie, pomoże kto ?
Potrzebujesz do tego skonfigurować sieve po stronie dovcot-a