Debian Squeeze levelezés2 amavis, clamav, spamassasin és ami kimaradt

Postfix-hez kapcsolódó szolgáltatások, parancsok, eszközök bemutatása következik.

A mailq az átmeneti tároló ahol vannak a várakozó levelek, amik vagy postázásra fognak kerülni vagy csak pár darab próbálkozás után sikertelen lesz az elküldésük. Megnézni, hogy mennyi levél ragadt be, a mailq paranccsal lehet. Kiüríteni: postsuper -d ALL újra küldeni: postqueue -f parancsal lehet.

A leveleket mi a /home mappában tároljuk és azon belül egy Maildir nevezetű mappában. A maildirmake parancsot kiadva a mappában létrejön a könyvtár szerkezet, de a levelező kliensek általában létrehozzák maguknak.
Ami viszont a legfontosabb, hogy mindig is legyen megfelelő jogosultsága a felhasználóknak a saját mappájukra, lehetőleg legyen a saját tulajdonukban. Különben a nemfognak a leveleik se beérkezni és látni se fogják őket.

Ha nem muszáj ne indítsuk újra a konfigurálás során a postfix-et, elég lehet csak a beállításokat újra tölteni:

/etc/init.d/postfix reload

A levélforgalmat elég nehéz sokszor követni, mert a mail.log fájlok eléggé nagyra hízhatnak. Erre van egy egyszerű program ami szép táblázatot rajzol a levélforgalmunkról.
Telepítsük fel a pflogsumm programot.

apt-get install pflogsumm

A következő parancsot kiadva csinál nekünk egy szép összegzést a leveleinkről:

pflogsumm.pl /var/log/mail.log > /akármilyenelérésiút/fajlnév.txt

Előfordulhat, hogy az courier-imap nem hajlandó jól működni, mert hiányol egy összetevőt. Akkor tegyük fel a következőt még neki: apt-get install fam

Telepítsünk vírus és spam szűrést. A clamav egy egyszerű víruskereső, nincs is nagyon mit hozzáfűzni. A spamassassin spam szűrőről annyit érdemes tudni, hogy pontozza a leveleket, a tartalmuk és fejlécük alapján. A pontszámokból kalkulálja majd az amavis, hogy mi legyen a levél további sorsa.

apt-get install amavisd-new spamassassin clamav clamav-daemon

Kezdjük a clamav-al. Két fájlja van ami érdekes, a freshclam.conf és a clamd.conf.
A freshclam.conf a vírusadatbázis frissítéséért felelős. Az alapértelmezett beállítások jók, amiket érdemes ellenőrizni azért az az adatbázis frissítési helye és frissítés gyakorisága:

Checks 24
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net
DatabaseMirror db.hu.clamav.net

A vírusadatbázist manuálisan is frissíthetjük, ha szükséges freshclam paranccsal. A clamd.conf -hoz se igazán muszáj hozzányúlni.

Az amavisd.conf -ban találjuk az amavis konfigurációját. Töltsük ki a domain-ünket:

$mydomain = 'ceg.hu'; # (no useful default)
$myhostname = 'mail.ceg.hu'; # fqdn of this host, default by uname(3)

A conf.d mappán belül érdekes még, hogy a 20-debian_defaults fájlban lehet állítgatni a pontozási értékeit a spameknek. Egy részletet azért beszúrok ide a config fájlból:

[...]
$QUARANTINEDIR = "$MYHOME/virusmails";
$quarantine_subdir_levels = 1; # enable quarantine dir hashing

$log_recip_templ = undef; # disable by-recipient level-0 log entries
$DO_SYSLOG = 1; # log via syslogd (preferred)
$syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages
$syslog_facility = 'mail';
$syslog_priority = 'debug'; # switch to info to drop debug output, etc

$enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny)
$enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1

$inet_socket_port = 10024; # default listening socket

$sa_spam_subject_tag = '***SPAM*** ';
$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.31; # triggers spam evasive actions
$sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
[...]
$final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine)
$final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA
$final_spam_destiny = D_BOUNCE;
$final_bad_header_destiny = D_PASS; # False-positive prone (for spam)
[...]

A 15-content_filter_mode fájlban ez a két bejegyzés szükséges:
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

A többi fájl alapértelmezetten is megfelelő.

Ha nincs akkor hozzuk létre a /var/log/amavis.log fájlt. Adjunk neki jogot: amavis:amavis
A /etc/clamav/freshclam.conf - re clamav:adm jogosultságot adjunk.

Adjuk ki a következő parancsot: adduser clamav amavis különben nem fog működni a rendszerünk.

A spamassassin konfigurálása nem túl nehéz. Az /etc/spamassassin/local.cf fájlban állítsuk be a következőket:

use_bayes 1
use_bayes_rules 1
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor

#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf

A razor és a pyzor kiegészítés a spamassasinhoz, hogy hatékonyabb legyen a levél szemét felismerése és szűrése. Telepítsük fel őket:
apt-get install pyzor razor

A levelek mellékletébe, hogy beletudjon nézni a clamav és a spamassassin ezért szükséges feltelepíteni a tömörítőket is:
apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip zip

A spamassassint meglehet tanítani a spam-os levelek felismerésére vagyis javítani a hatékonyságán. Ehhez csak annyit kell tennünk, hogy gyűjtünk pár száz / vagy ezer spamos és nem spam-os levelet, majd megtanítjuk neki, hogy melyikkel mit kezdjen:

sa-learn --spam ~/Maildir/.Junk
sa-learn --ham ~/Maildir/.Ham
sa-learn --forget ~/Maildir/.Forget

Ha a levelezéshez szükséges valamelyik folyamatot/okat szeretnénk újra indítani, a következőkből lehet válogatni:

/etc/init.d/amavis clamav-daemon clamav-freshclam
courier-authdaemon courier-imap courier-imap-ssl courier-ldap
courier-pop courier-pop-ssl postfix spamassassin restart

A karantén a /var/lib/amavis/virusmails mappában található, bár én onnan semmit se szednék vissza :)

A levelezés tesztelése nagyon egyszerű, küldj a belső hálón levelet, majd küldj valami külső levelező szerverre és küldj külső levelező szerverről befelé levelet, ha minden megérkezik akkor lehet örülni :)

Ha szeretnénk a spambotokat kiszűrni egy kicsit, hogy ne fárasszák magukat feleslegesen, az olyan levelek küldözgetésével amiket úgy se kapunk meg, akkor a legjobb dolog tiltani őket legalább egy napra vagy többre. Erre jó a fail2ban. Ami elemzi a mail.log-unkat és ha látja, hogy egy ip címről több eldobott levél jön, akkor szépen az iptablesbe felvesz automatikusan egy szabályt, amivel blokkolja a nem kedves emberek ipjét, majd feloldja őket, amikor lejárt a ban. Miközben nekünk semmi dolgunk :) Telepítsük fel:

apt-get install fail2ban python-gamin

Az /etc/fail2ban/jail.conf fájlban állítsuk be a következőket:
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
bantime = 600
maxretry = 2

A /etc/fail2ban/filter.d/postfix.conf fájlba pedig ezt a sort véssük be:
failregex = reject: RCPT from (.*)\[<HOST>\]: 554

Adjuk ki /etc/init.d/fail2ban restart ha szükség van rá.

Kitudjuk listázni a sorszámait a szabályoknak:
# iptables -n -L --line-numbers

Törölhetünk egy szabályt:
#iptables -D fail2ban-jailname <linenumber>

Példa mysql szerver tiltásra:
/etc/fail2ban/filter.d/mysql.conf

# Fail2Ban configuration file
#
# Author: Andy Lear
#
# $Revision$
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#
#failregex = Access denied for user .*@''.*$.
#failregex = ^%(__prefix_line)s(?:\d+ |\d{6} \s?\d{1,2}:\d{2}:\d{2} )?\[\w+\] Access denied for user '[^']+'@'<HOST>' (to database '[^']*'|\(using password: (YES|NO)\))*
#failregex = Access denied for user .*@*$
failregex = Access denied for user .*@'<HOST>'

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

/etc/fail2ban/jail.conf

...
[mysql]
enabled = true
port = 3306
filter = mysql
logpath = /var/log/mysql/error.log
maxretry = 5
bantime = 172800
...

 

Nálunk jelenleg nincs beállítva a postgrey, de ha nagyon elszaporodnának a spam-ok akkor érdemes lehet még bevetni. postgrey, spam postgrey, postgrey debiantutorials

levélszűrés ubuntu
postfix clamav dspam couier hogyan
Spamassassin
spamassassin
fail2ban exim
fail2ban courier
Levélszűrés ellenőrzés

2013.03.07.