Difference between revisions of "Email Server - Extended Spam filtering"
Line 5: | Line 5: | ||
</pre> | </pre> | ||
− | + | ||
+ | |||
=== Mi hol van === | === Mi hol van === | ||
Revision as of 20:16, 10 September 2016
Contents
Telepítés
# yum install spamassassin
Mi hol van
- DEF_RULES_DIR=/usr/share/spamassassin,
- LOCAL_RULES_DIR=/etc/mail/spamassassin
- LOCAL_STATE_DIR=/var/lib/spamassassin
Szabályok frissítése
Adatbázis
A Spamassassin szabály adatbázisa a /var/lib/spamassassin/<verziószám> mappában található, az esetünkben itt: /var/lib/spamassassin/3.003001
Ezen belül minden úgynevezett "csatornának" van egy saját almappája, amiben az adott csatorna szabálygyűjteménye található. A csatorna egy "szervezetnek" a saját szabálygyűjteménye. A hivatalos "gyári" csatorna/szabálygyűjteménye az update_spamassassin_org nevet viseli. Ezen felül még rengeteg egyéb nem hivatalos csatorna/szabálygyűjteménye létezik.
A sa-update parancsnak meg kell adni, hogy milyen csatornákat frissítsen ill. töltsön le. Ezt a --channel kapcsoló után tudjuk megadni, ahol a csatorna/szabálygyűjteménye URL-jét várja.
A hivatalos CentOS repository-ból telepített spamassassin esetében a sa-update parancsot a /usr/share/spamassassin/sa-update.cron script hívja meg. A csatornákat a /usr/share/spamassassin/sa-update.cron használata esetén a /etc/mail/spamassassin/channel.d mappában elhelyezett csatorna leíró fájlokból olvassa ki a script, és ezekkel a csatorna URL-ekkel hívja meg a sa-update parancsot.
Gyárilag két csatorna van a /etc/mail/spamassassin/channel.d mappában, a hivatalos updates_spamassassin_org és a széles körben elterjedt sought_rules_yerp_org:
[root@server channel.d]# ll /etc/mail/spamassassin/channel.d total 12 -rw-r--r--. 1 root root 2572 Dec 5 2013 sought.conf -rw-r--r--. 1 root root 4915 Dec 5 2013 spamassassin-official.conf
A csatorna leírók fájl elején található a csatorna URL-je, majd ezt követi az a kulcs amivel a frissítéseket aláírja a kibocsájtó. Pl. a spamassassin-official.conf fájl eleje az alábbi:
# http://wiki.apache.org/spamassassin/RuleUpdates CHANNELURL=updates.spamassassin.org KEYID=5244EC45 # Ignore everything below. return 0 This is the GPG key that updates are signed with (currently, as of Wed Dec 21 19:31:38 PST 2005. Please contact <dev /at/ spamassassin.apache.org> with any questions. -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.2 (SunOS) .....
A /usr/share/spamassassin/sa-update.cron script kiolvassa innen az összes csatorna leíró fájlt, és hozzáfűzi a --channel paraméterhez a leírókból kiolvasott URL-eket.
Minden csatornának van egy saját almappája és egy csatorna leírója a /var/lib/spamassassin/3.003001 szabály adatbázis gyűjtőmappában.
[root@server 3.003001]# ll /var/lib/spamassassin/3.003001 total 16 drwxr-xr-x. 2 root root 4096 Mar 12 2015 sought_rules_yerp_org -rw-r--r--. 1 root root 123 Mar 12 2015 sought_rules_yerp_org.cf drwxr-xr-x. 2 root root 4096 Sep 8 05:53 updates_spamassassin_org -rw-r--r--. 1 root root 2851 Sep 8 05:53 updates_spamassassin_org.cf
Tip
Ezekről a mappákról teljesen felesleges biztonsági mentést csinálni, mivel a sa-update mindig a legfrissebb gyűjteményt hozza le.
Warning
Úgy tűnik, hogy a sought szabályokhoz már jó ideje nem jön frissítés. A sa-update ezt a választ adja manuális update esetén minden nap:
# /usr/bin/sa-update -v --channel sought.rules.yerp.org --gpgkey 6C6191E3 Update finished, no fresh updates were available
Tanítás
https://kb.site5.com/email/how-to-train-spamassassin/ http://www.hostdango.com/train-spamassassin/ https://spamassassin.apache.org/full/3.1.x/doc/sa-learn.html
#!/bin/bash
## Database details
USER=''
PASS=''
HOST=''
DB='postfix'
## Where to log stuff
LOG='/var/log/sa-learn.log'
## How many days to wait before deleting spam
## Comment out to disable
CLEAN=30
echo -e "\n\nRun started `date +%c`" >> $LOG 2>&1
## Spam and ham training for all virtual users
## Delete spam older than $CLEAN days
mysql --skip-column-names -u$USER -p$PASS -h$HOST -D$DB -e "SELECT SUBSTRING(email, 1, LOCATE('@', email) - 1) AS user, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM virtual_users" | while read user domain;
do
## Spam
echo "Spam training for $user@$domain" >> $LOG 2>&1
/usr/bin/sa-learn --no-sync --spam /var/spool/postfix/virtual/$domain/$user/.Junk/{cur,new} >> $LOG 2>&1
## Ham
echo "Ham training for $user@$domain" >> $LOG 2>&1
/usr/bin/sa-learn --no-sync --ham /var/spool/postfix/virtual//$domain/$user/{cur} >> $LOG 2>&1
## Delete
if [ -n $CLEAN ]; then
echo "Deleting spam for $user@$domain older than $CLEAN days" >> $LOG 2>&1
find /var/spool/postfix/virtual/$domain/$user/.Junk/cur/ -type f -mtime +$CLEAN -exec rm {} \;
fi
done
## Sync the SpamAssassin journal and print out stats
echo "Syncing the SpamAssassin journal" >> $LOG 2>&1
/usr/bin/sa-learn --sync >> $LOG 2>&1
echo "Statistics for this run:" >> $LOG 2>&1
/usr/bin/sa-learn --dump magic >> $LOG 2>&1
echo -e "Run finished `date +%c`" >> $LOG 2>&1
exit
Note
Mivel az adatbázis szinkronizálása nagyon időigényes, fontos, hogy ham és spam mappákat átadó futtatások esetében a --no-sync szerepeljen, ami nem frissíti be kapásból a db-be az új szabályokat, hanem egy ideglenes fájlban tárolja őket. Mikor az összes új szabályt hozzáadtuk az ideglenes fájlhoz akkor a végén egyszer meghívjuk a sa-update-et --sync kapcsolóval