Levélszűrő átjáró
Ez az útmutató lépésről lépésre bemutatja a kéretlen levelek elleni technológiák telepítését a Postfix számára. Ezek között szerepel az Amavisd-new használata Spamassassin-nal és ClamAV-val, a szürkelistázás, valamint az SPF.
Tekintse meg a Teljes virtuális levelezőszerver című cikket, amely átfogó útmutatót nyújt egy jól felszerelt levelezőszerver beállításához.
Bevezetés
Ez az útmutató lépésről lépésre bemutatja, hogy miként lehet telepíteni egy kéretlen levelek és vírusok szűrésére szolgáló levelezési átjárót. Ezt viszonylag egyszerű alkalmazni egyetlen szerveres megoldásra.
A teljes kép
Ez a dokumentum leírja, hogyan lehet beállítani egy több doménnel rendelkező kéretlen levelek szűrésére szolgáló levelezési átjárót. Ez a szerver arra van szánva, hogy a ténylegesen levelezési fiókokat tartalmazó levelezőszerverek, például a Microsoft Exchange vagy a Lotus Notes előtt működjön.
Ebben az összeállításban olyan alkalmazások vannak választva, amelyek jó biztonsági eredményekkel és átlátható beállításfájlokkal rendelkeznek. Az e-mail MTA a Postfix, amely jó biztonsági eredményekkel bír, és viszonylag könnyen helyesen beállítható. A Postfix általában a 25-ös porton fogadja a bejövő leveleket. A fogadás után továbbítja azokat az Amavisd-new felé a 10024-es porton. Az Amavisd-new ezt követően különböző szűrőkön keresztül megvizsgálja a leveleket, mielőtt visszaküldené azokat a Postfixhez a 10025-ös porton, amely aztán továbbítja a leveleket a következő levelezőszerver felé.
Az Amavisd-new egy tartalomszűrési keretrendszer, amely segédalkalmazásokat használ a vírusok és a kéretlen levelek szűrésére. Ebben az összeállításban két segédalkalmazást fogunk használni: A ClamAV-t a vírusos e-mailek szűrésére, és a Spamassassin-t a kéretlen levelek szűrésére. Maga a Spamassassin egy további tartalomszűrési rétegként is működhet, és felhasználhatja a Vipul's Razor2 és DCC segédalkalmazásokat.
Ellentétben sok más kéretlen levél elleni technológiával, mint például az RBL-ek és mások, a Spamassassin nem csak egyszerűen elfogadja vagy elutasítja a kapott e-mailt egyetlen teszt alapján. Számos belső tesztet és külső segédalkalmazást használ annak érdekében, hogy minden áthaladó e-mailhez kéretlen levél pontszámot számítson ki. Ez a pontszám az alábbi teszteken alapul:
- Bayesian filtering
- Static rules based on regular expressions
- Distributed and collaborative networks:
- RBLs
- Razor2
- Pyzor
- DCC
Az útmutató első része (1-től 4-ig tartó fejezetek) a levelezési szűrő átjáró alapvető beállításait ismerteti. A következő fejezetek egyenként, egymástól függetlenül valósíthatók meg. Ezek a fejezetek leírják:
- Speciális IMAP mappák beállítása a Bayes-szűrő tanításához és a téves pozitív eredmények kézbesítéséhez.
- Szürkelistázás beállítása a Postfix segítségével.
- Amavisd-new konfigurálása MySQL háttéradatbázis használatára a felhasználói preferenciákhoz.
- Spamassassin beállítása MySQL háttéradatbázis használatára az AWL és Bayes adatokhoz.
Az IMAP könyvtárak a maildir formátumot fogják használni. Az, hogy minden levél külön fájlban található, jelentősen leegyszerűsíti a kezelést. Ha mbox formátumot használ, javaslom, hogy próbálja ki a maildir-t. Ha még nem használja a maildir-t, akkor telepítse a szükséges eszközöket az
emerge courier-imap
parancs segítségével.Egy tervezett ötödik rész különféle tippeket fog tartalmazni a teljesítménnyel kapcsolatban, valamint olyan dolgokat, amelyeket érdemes tudnia (chrootolt futtatás, Postfix-korlátozások stb.).
A felelősség harmadik felekre történő átruházása nem kockázatmentes. Ismernie és bíznia kell ezekben a harmadik felekben. Ebben az összeállításban kizárólag a vírusos e-mailek karanténba helyezésére vonatkozó döntés alapul egyetlen harmadik félen. A Spamassassin pontozási rendszerének használatával a kéretlen levelek leállítására vonatkozó döntést nem egyetlen hatóság hozza meg, kivéve esetleg magát a Spamassassin saját statikus szabályait.
A kéretlen levelek elutasításakor az MTA szinten nagyon körültekintően kell eljárni az RBL-ek kiválasztásakor, amelyeket használni szeretne, például a SpamCop nem jó RBL az MTA szinten való használatra, mivel előfordulhatnak téves pozitív eredmények, mert néha a listázásuk túlságosan agresszív. További információk találhatók az alábbi oldalon: Realtime Blackhole Lists Are Bad és The Spam Problem: Moving Beyond RBLs.
Előkészületek
Mielőtt elkezdené, győződjön meg arról, hogy van egy működő Postfix telepítése, amely lehetővé teszi az e-mailek küldését és fogadását, valamint szüksége lesz egy háttér levelezőszerverre. Ha nincs tapasztalata a Postfix beállításában, akkor gyorsan túlságosan bonyolulttá válhat, ha mindent egyszerre próbál meg beállítani. Ha segítségre van szüksége, akkor a kiváló Teljes virtuális levelezőszerver útmutató elérhető a Gentoo Wikiben.
Szükséges programok telepítése
Először telepítjük a legfontosabb programokat: Amavisd-new, Spamassassin és ClamAV.
root #
echo "mail-filter/amavisd-new spamassassin clamav" >> /etc/portage/package.use
root #
emerge amavisd-new
root #
freshclam
Ahogy korábban említettük, már rendelkeznie kell egy működő
postfix
példánnyal az adott rendszeren. Alapvetően ez nem igényel többet, mint az emerge postfix
parancs végrehajtását, valamint egy alapvető megértést arról, hogy miként működik a Postfix.DNS beállítása
Ha nem átjárószervert (gateway) állít be, hanem a postafiókok ugyanazon a szerveren vannak, akkor csak az MX-rekordot kell létrehozni.
Amíg a programok települnek, addig indítson el egy másik parancssori ablakot, és hozza létre a szükséges DNS-rekordokat.
Először hozzon létre egy MX
rekordot a levelezési átjáró (mail gateway) számára, valamint hozzon létre egy A
rekordot a következő célállomás számára.
(MX rekord létrehozása az átjárószerverhez.)
MX 10 mailgateway.mydomain.tld.
(Egy A rekord létrehozása az átjárószerverhez.)
mailgateway A mgw.ip.add.here
(Egy A rekord létrehozása a következő ugrási levelezőszerverhez.)
mail A ms.ip.add.here
Egyes ADSL-szolgáltatók blokkolhatják a 25-ös portot, és arra kényszeríthetnek, hogy a leveleket az ő szerverükön keresztül továbbítsa. Ilyen esetben általában létre kell hoznia egy másodlagos MX-rekordot, például
MX 20 backup-mx.some-isp.tld
.
Tűzfal megnyitása
A normál levelezési forgalom engedélyezése mellett néhány szolgáltatást át kell engedni a tűzfalon, hogy a hálózati ellenőrzések kommunikálni tudjanak a szerverekkel.
Alkalmazás | Protokoll | Port |
---|---|---|
DCC | UDP | 6277 |
Razor(kimenő ping) | TCP | 7 |
Razor | TCP | 2703 |
A Razor ping-eket használ arra, hogy felfedezze, mely szerverek találhatóak hozzá a legközelebb.
Postfix beállítása
Először be kell állítanunk a postfix
-et, hogy a 10025-ös porton figyeljen, és eltávolítjuk a legtöbb korlátozást, mivel ezeket már alkalmazta a 25-ös porton figyelő postfix
példány. Emellett biztosítjuk, hogy csak helyi kapcsolatokra figyeljen a 10025-ös porton. Ezt úgy érhetjük el, hogy a következőket adjuk hozzá a /etc/postfix/master.cf fájl végéhez.
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
#Equivalently when using lmtp:
#lmtp-amavis unix - - n - 2 lmtp
# -o lmtp_data_done_timeout=1200
# -o lmtp_send_xforward_command=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
#If you want to use proxy filtering instead
#smtp inet n - n - 8 smtpd
# -o smtpd_proxy_filter=127.0.0.1:10024
# -o smtpd_client_connection_count_limit=4
#If you don't want to scan outgoing mail use this
#10.0.0.2:smtp inet n - n - - smtpd
#-o content_filter=
A
smtp-amavis
sor meghatározza, hogy ezekből a folyamatokból egyszerre legfeljebb kettő futhat. Ha nagyobb párhuzamosságra van szüksége, akkor állítsa be ezt a számot az Ön igényeihez mérten. Ne feledje, hogy ezt a számot össze kell hangolni a amavisd.conf fájlban található $max_servers
értékkel. Tartsa szem előtt, hogy az amavisd-new
elég memóriaigényes, és ha túl magasra emeli az amavisd-new
folyamatok számát, akkor az könnyen memóriahiányhoz és jelentős lapozáshoz vezethet, ami drasztikusan csökkenti a teljesítményt.Ha már a folyamat elején szeretné elutasítani a kéretlen leveleket, akkor a szűrőmódszer helyett használhatja a Before-Queue (proxy) módszert. Ha kiveszi a kommentet a három sorból, akkor be kell állítania a
content_filter=
értéket a main.cf fájlban. Ez azonban nem ajánlott nagy forgalmú szerverek esetén, mivel az egyidejű kapcsolatok száma korlátozott az amavisd példányok számára.A Before-Queue (proxy) módszer még mindig nincs megfelelően tesztelve.
Ha bármilyen okból ezzel a dobozzal szeretne e-mailt küldeni, és nem akarja, hogy az át legyen vizsgálva, akkor adjon hozzá egy másik postfix példányt úgy, hogy kiveszi a kommentet az utolsó két sorból, és helyettesíti azokat egy megfelelő IP-vel.
A master.cf fájl megadja a postfix master programnak, hogy miként futtassa az egyes postfix folyamatokat. További információt a man 8 master
parancsnál találhat.
Ezután szükség van arra, hogy a fő postfix
példány, amely a 25-ös porton figyel, a leveleket a 10024-es porton figyelő amavisd-new
segítségével szűrje.
Be kell állítanunk a következő ugrási célállomást a levelek számára. Mondja meg a Postfixnek, hogy az összes levelet egy külső tartalomszűrőn keresztül szűrje, és engedélyezze az explicit útvonalmegadást, hogy a Postfix tudja, hogy hová továbbítsa a levelet.
/etc/postfix/main.cf
biff = no
empty_address_recipient = MAILER-DAEMON
queue_minfree = 120000000
content_filter = smtp-amavis:[127.0.0.1]:10024
#Equivalently when using lmtp:
#content_filter = lmtp-amavis:[127.0.0.1]:10024
# TRANSPORT MAP
#
# Insert text from sample-transport.cf if you need explicit routing.
transport_maps = hash:/etc/postfix/transport
relay_domains = $transport_maps
A Postfix számos beállítási lehetőséget tartalmaz a main.cf fájlban. A fájl részletesebb magyarázatáért kérjük, hogy tekintse meg a man 5 postconf
parancsot, vagy ugyanazt online a Postfix Configuration Parameters weboldalon.
A transport fájl formátuma a szokásos Postfix hash fájl. Az e-maileket a bal oldalon lévő doménre küldik tovább a jobb oldalon megadott célállomásra.
/etc/postfix/transport
mydomain.tld smtp:mail.mydomain.tld
Miután szerkesztettük a fájlt, futtatnunk kell a postmap
parancsot. A Postfix valójában közvetlen nem olvassa ezt a fájlt, ezért megfelelő formátumba kell átalakítanunk a postmap /etc/postfix/transport
parancs segítségével. Ez létrehozza a /etc/postfix/transport.db fájlt. Nincs szükség a Postfix újratöltésére, mivel az automatikusan érzékeli a változtatásokat.
Ha a következő ugrási célként szolgáló levelezőszerver nem a standard SMTP 25-ös porton figyel, akkor megadhat egy konkrét portszámot a Postfix számára, például
smtp:mail.mydomain.tld:25000
.Ha az első próbálkozásai során a levelek visszapattannak, akkor valószínűleg valahol beállításhibát követett el. Próbálja meg ideiglenesen engedélyezni a soft_bounce
funkciót, miközben megoldja a beállításproblémákat. Ez megakadályozza, hogy a Postfix kézbesítési hibák esetén visszadobja a leveleket, azokat ideiglenes hibaként kezelve. A levelek a levélsorban maradnak, amíg a soft_bounce
funkciót nem tiltják le vagy nem távolítják el.
root #
postconf -e "soft_bounce = yes"
root #
/etc/init.d/postfix reload
Miután létrehozott egy működő beállítást, mindenképpen tiltsa le vagy távolítsa el a soft_bounce
funkciót, és töltse újra a Postfix-et.
Amavisd-new beállítása
Az Amavisd-new az összes szűrés kezelésére szolgál, és lehetővé teszi, hogy könnyedén összekapcsoljon több különböző technológiát. Egy e-mail üzenet fogadásakor az Amavisd-new kibontja az üzenetet, egyedi szűrőkön keresztül szűri, kezeli a fehér- és fekete listákat, különböző víruskeresőkön keresztül szűri az üzenetet, majd végül a SpamAssassin segítségével szűri le az e-mailt.
Az Amavisd-new maga is számos extra funkcióval rendelkezik:
- Azonosítja a veszélyes fájlmellékleteket, és rendelkezik azok kezelésére vonatkozó irányelvekkel.
- Felhasználó-, domén- és rendszer szintű irányelvek a következőkre:
- Fehérlisták.
- Feketelisták.
- Spam pontszámküszöbök.
- Vírus irányelvek és spam irányelvek.
A postfix
és a freshclam
kivételével minden alkalmazást az amavis
felhasználóként fogunk futtatni.
Szerkessze a következő sorokat a /etc/amavisd.conf fájlban.
/etc/amavisd.conf
# (Insert the domains to be scanned)
$mydomain = 'example.com';
# (Bind only to loopback interface)
$inet_socket_bind = '127.0.0.1';
# (Forward to Postfix on port 10025)
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
# (Define the account to send virus alert emails)
$virus_admin = "virusalert\@$mydomain";
# (Always add spam headers)
$sa_tag_level_deflt = -100;
# (Add spam detected header aka X-Spam-Status: Yes)
$sa_tag2_level_deflt = 5;
# (Trigger evasive action at this spam level)
$sa_kill_level_deflt = $sa_tag2_level_deflt;
# (Do not send delivery status notification to sender. It does not affect
# delivery of spam to recipient. To do that, use the kill_level)
$sa_dsn_cutoff_level = 10;
# Don't bounce messages left and right, quarantine
# instead
$final_virus_destiny = D_DISCARD; # (defaults to D_DISCARD)
$final_banned_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_spam_destiny = D_DISCARD; # (defaults to D_BOUNCE)
Ezzel a sorral
$sa_tag2_level_deflt = 5;
a SpamAssassin spam pontszámát 5-re állítja. Ez lehet, hogy kicsit alacsony. Ahogyan észrevehette, az Amavisd-new alapértelmezett értéke 6.3
. Ha nem szeretne egyetlen spam e-mailt sem látni a levelezési mappájában, akkor válassza az 5
értéket, de ha nem szeretne hamis pozitívumokkal foglalkozni, akkor válassza a 6.3
értéket.Hozzon létre egy karanténkönyvtárat a vírusos e-mailek számára, mivel ezeket nem szeretnénk eljuttatni a felhasználóinkhoz.
root #
mkdir /var/amavis/virusmails
root #
chown amavis:amavis /var/amavis/virusmails
root #
chmod 750 /var/amavis/virusmails
Az Amavisd-new finomabb szabályozási hangolást kínál a policy bankok használatával.
ClamAV beállítása
Víruskeresőként a ClamAV antivírus szoftvert használjuk, mivel ennek a felismerési aránya összehasonlítható a kereskedelmi ajánlatokéval, nagyon gyors, és nyílt forráskódú szoftver. Szeretjük a naplófájlokat, ezért állítsa be, hogy a clamd
a syslog
-ot használja naplózásra, és kapcsolja be a részletes naplózást. Továbbá, ne futtassa a clamd
-t root
felhasználóként. Most szerkessze a /etc/clamd.conf fájlt.
/etc/clamd.conf
# (Verbose logging with syslog)
LogSyslog
LogVerbose
LogFacility LOG_MAIL
# (Change pid file location)
PidFile /var/run/amavis/clamd.pid
# (Set the clamav socket)
LocalSocket /var/amavis/clamd
# (Close the connection when this limit is exceeded)
StreamMaxLength 10M
# (Don't run clamd as root)
User amavis
# (Newer versions require you to uncomment this)
ScanMail
ScanArchive
Emlékezzen arra is, hogy távolítsa el az Example direktívát, hogy a ClamAV működjön.
A ClamAV tartalmazza a freshclam
szolgáltatást, amely az antivírus aláírások frissítésének időszakos ellenőrzésére szolgál. Az antivírus aláírások napi kétszeri frissítése helyett a freshclam
-ot úgy állítjuk be, hogy kétóránként frissítse az aláírásokat.
/etc/freshclam.conf
# (Syslog logging)
LogSyslog
# (Verbose logging)
LogVerbose
# (Explicitly drop root privileges)
DatabaseOwner clamav
# (Check for updates every two hours. That is the official recommendation)
Checks 12
# (Use the mirror closest to you. Replace XY with your country code
DatabaseMirror db.XY.clamav.net
Indítsa el a clamd
-ot a freshclam
-mal az init szkriptek használatával, a /etc/conf.d/clamd módosításával.
/etc/conf.d/clamd
START_CLAMD=yes
START_FRESHCLAM=yes
CLAMD_NICELEVEL=3
FRESHCLAM_NICELEVEL=19
IONICE_LEVEL=2
Végül módosítsa a amavisd.conf fájlt az új socket helyének megfelelően.
/etc/amavisd.conf
# (Uncomment the clamav scanner and modify socket location)
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/amavis/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
Ne módosítsa a
$unix_socketname
-t, hacsak nem biztos benne, hogy mit csinál.Vipul Razor beállítása
A Razor2 egy együttműködésen alapuló és elosztott spam ellenőrző-hálózat. Telepítse a emerge razor
parancs segítségével, és hozza létre a szükséges beállításfájlokat. Ezt az amavis
felhasználóként végezze el, a su - amavis
parancsot követve, majd futtassa a razor-admin -create
parancsot.
root #
emerge razor
root #
su - amavis -s /bin/bash
user $
razor-admin -create
user $
exit
Distributed Checksum Clearinghouse (dcc) beállítása
A Razor2-höz hasonlóan a dcc egy együttműködésen alapuló és elosztott spam ellenőrző-hálózat. Filozófiája az, hogy megszámolja az adott e-mail címzettjeinek számát, az egyes e-maileket homályos ellenőrzőösszeggel azonosítva.
root #
emerge dcc
Spamassassin beállítása
Az Amavis közvetlenül használja a Spamassassin Perl könyvtárait, ezért nincs szükség a szolgáltatás elindítására. Ez azonban némi zavart okoz a beállítással kapcsolatban, mivel bizonyos Spamassassin beállítások a /etc/mail/spamassassin/local.cf fájlban vannak beállítva, de felülírásra kerülnek a /etc/amavisd.conf fájl opcióival.
/etc/mail/spamassassin/local.cf
# Enable the Bayes system
use_bayes 1
# Enable all network checks
skip_rbl_checks 0
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
# - danish english norwegian swedish
ok_languages da en no sv
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales en
# Use a sensible bayes path
bayes_path /var/amavis/.spamassassin/bayes
A Spamassassin 3.1-es verziójában engedélyezni kell a DCC-t és a Razor2-t úgy, hogy kiveszi a megjegyzéseket a megfelelő sorokból a v310.pre fájlban.
Ihletet meríthet a local.cf fájlhoz, ha kipróbálja a SpamAssassin Configuration Generator eszközt.
Érdemes lehet módosítani az
ok_languages
és az ok_locales
beállításokat is.Minden jó szabályhoz jó kivételek is tartoznak
Amikor az e-mailek valóban elkezdenek áthaladni ezen az e-mail átjárón (gateway), valószínűleg felfedezi, hogy a fentebb leírt beállítás nem tökéletes. Lehet, hogy néhány ügyfele szívesen fogad olyan e-maileket, amelyeket mások nem. Az envelope küldők feketelistára vagy fehérlistára helyezése viszonylag egyszerű. Vegye ki a megjegyzést a következő sorból a amavisd.conf fájlban.
amavisd.conf
do sitewide scoringread_hash("/var/amavis/sender_scores_sitewide"),
A sender_scores_sitewide fájlban teljes e-mail címeket vagy csak a domén részeket helyezhet el, majd jegyezzen fel egy pozitív/negatív pontszámot, amely hozzáadódik a spam pontszámhoz.
whitelist_sender
Példa# (Whitelist all emails from the specific email address)
postmaster@example.net -3.0
# (Whitelist all emails from the example.net excluding subdomains)
.example.net 1.0
További példákért tekintse meg a /etc/amavisd.conf fájlt.
Ezeknek a címeknek a amavisd.conf fájlon kívüli elhelyezése tisztább és biztonságosabb megoldás.
Alternatív megoldásként elvégezheti ezt a Spamassassin beállításfájljában, /etc/mail/spamassassin/local.cf, de szerintünk tisztább, ha a /etc/amavisd.conf fájlban végzi el.
Egy későbbi fejezetben megmutatjuk, hogy miként lehet megvalósítani a felhasználónkénti szabályokat MySQL használatával.
Amíg egy jobb módszerre vár, addig hozzáadhatja a következőt a amavisd.conf fájlhoz, hogy kihagyja a spam ellenőrzéseket a postmaster
és abuse
postafiókok esetében.
map { $bypass_spam_checks{lc($_)}=1 } (qw(
postmaster@
abuse@
));
Egyébként soha ne dobja automatikusan a
postmaster
vagy abuse
fiókokba küldött e-maileket. Tekintse meg a RFC 2142 MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS leírást. Ellenkező esetben előfordulhat, hogy a domének szerepelni fognak a rfc-ignorant.org oldalon található rossz listák egyikében.További szabályok hozzáadása
Ha több szabályt szeretne használni, amelyeket a SARE Ninjas kínál a SpamAssassin Rules Emporium-nál, akkor könnyen hozzáadhatja és frissítheti őket a Spamassassinba beépített sa-update
mechanizmus segítségével.
Egy rövid útmutató a SARE szabálykészletek sa-update
-val történő használatához itt található.
Tesztelés és befejezés
Összeállítás tesztelése
Mielőtt elindítja a freshclam
parancsot, manuálisan ellenőrizheti, hogy megfelelően működik-e.
root #
freshclam
ClamAV update process started at Sun May 2 09:13:41 2004 Reading CVD header (main.cvd): OK Downloading main.cvd [*] main.cvd updated (version: 22, sigs: 20229, f-level: 1, builder: tkojm) Reading CVD header (daily.cvd): OK Downloading daily.cvd [*] daily.cvd updated (version: 298, sigs: 1141, f-level: 2, builder: diego) Database updated (21370 signatures) from database.clamav.net (193.1.219.100).
Most már frissítette a vírusdefiníciókat, és tudja, hogy a freshclam.conf megfelelően működik.
Tesztelje a freshclam és az amavisd működését a parancssorból, valamint az amavisd tesztüzenetekkel. Indítsa el a clamd
és amavis
alkalmazásokat a következő parancsok segítségével:
root #
/etc/init.d/clamd start
root #
/etc/init.d/amavisd start
root #
/etc/init.d/postfix reload
Ha minden rendben ment, akkor a postfix
mostantól a 25-ös porton hallgatja az e-maileket, és a 10024-es porton az újrainjektált e-maileket. Ennek ellenőrzéséhez nézze meg a naplófájlját.
root #
tail -f /var/log/mail.log
A naplóbeállításaitól függően a megfelelő útvonal lehet /var/log/messages .
Ha nem jelennek meg furcsa üzenetek a naplófájlban, akkor itt az ideje egy új teszt elvégzésének.
Használja a netcat
alkalmazást, hogy manuálisan csatlakozzon az amavisd
szolgáltatáshoz a 10024-es porton és a postfix
szolgáltatáshoz a 10025-ös porton.
A Netcat alkalmazható fejlett alternatívaként a
telnet
helyett. Telepítse az emerge netcat
parancs használatával.Valamilyen ismeretlen okból nem tudja végrehajtani a manuális e-mail injekciót az
amavisd
alkalmazásba netcat használatával. Használja helyette a telnet
parancsot.root #
nc localhost 10024
220 [127.0.0.1] ESMTP amavisd-new service ready
root #
nc localhost 10025
220 example.com ESMTP Postfix
Ha teljes kimenetet szeretne látni az amavisd-new alkalmazásból, akkor indítsa el az
amavisd debug-sa
parancsot az amavis
felhasználóként, majd küldjön egy e-mailt. Ennek működéséhez előfordulhat, hogy módosítania kell az alapértelmezett shell beállítását a /etc/passwd fájlban.Adja hozzá az amavisd
és clamd
szolgáltatásokat az default
futási szinthez.
root #
rc-update add clamd default
root #
rc-update add amavisd default
Nem adjuk hozzá a
spamd
szolgáltatást az default
futási szinthez, mivel az amavisd
közvetlenül használja a Spamassassin Perl könyvtárakat.Előfordulhat, hogy a naplóban megjelennek a
Net::Server: Couldn't POSIX::setuid to ... []
sorok. A amavis chroot README dokumentáció szerint, ha a folyamat azonosítója (UID) 0 (root
) marad, akkor a program leáll, ellenkező esetben az üzenetet csak tájékoztató jellegűnek tekintheti. Ennek oka, hogy a POSIX::setuid()
egy 0 but true
sztringet ad vissza.Ha engedélyezte az amavis bejelentkezését, akkor ne feledje el visszaállítani a bejelentkezési shellt a /etc/passwd fájlban
/bin/false
értékre.Automatikus tanulás és e-mailek mellőzése
A spamtrap felhasználó létrehozása
Hozza létre a spamtrap fiókot és a hozzá tartozó könyvtárakat.
root #
useradd -m spamtrap
root #
maildirmake /home/spamtrap/.maildir
root #
chown -R spamtrap:spamtrap /home/spamtrap/.maildir
Adjon a spamtrap felhasználónak egy észszerű jelszót.
root #
passwd spamtrap
Ha manuálisan szeretné ellenőrizni néhány e-mailt, hogy megbizonyosodjon arról, nincsenek téves pozitív találatok, akkor használhatja az alábbi procmail
receptet, hogy az észlelt spameket különböző e-mail könyvtárakba helyezze.
A .procmailrc létrehozása
/home/spamtrap/.procmailrc
#Set some default variables
MAILDIR=$HOME/.maildir
SPAM_FOLDER=$MAILDIR/.spam-found/
LIKELY_SPAM_FOLDER=$MAILDIR/.likely-spam-found/
#Sort mails with a spamscore of 7+ to the spamfolder
:0:
* ^X-Spam-Status: Yes
* ^X-Spam-Level: \*\*\*\*\*\*\*
$SPAM_FOLDER
#Sort mail with a spamscore between 5-7 to the likely spam folder
:0:
* ^X-Spam-Status: Yes
$LIKELY_SPAM_FOLDER
#Sort all other mails to the inbox
:0
*
./
Ha a levelezőszervere nagy mennyiségű e-mailt fogad, akkor NE használja a likely-spam receptet. Ehelyett állítsa be a
$sa_tag2_level_deflt
értéket elég magasra a téves pozitív találatok elkerülése érdekében, és szűrje közvetlenül a $SPAM_FOLDER
könyvtárba.Ha még nem telepítette a
procmail
alkalmazást, akkor tegye meg a következő parancs segítségével: emerge procmail
.Most arról is győződjön meg, hogy a Postfix a procmail
segítségével kézbesíti az e-maileket.
/etc/postfix/main.cf
mailbox_command = /usr/bin/procmail -a "DOMAIN"
Levelezési könyvtárak létrehozása
Most közösen használt könyvtárakat hozunk létre a ham és spam e-mailek számára.
root #
maildirmake /var/amavis/.maildir
root #
maildirmake -S /var/amavis/.maildir/Bayes
root #
maildirmake -s write -f spam /var/amavis/.maildir/Bayes
root #
maildirmake -s write -f ham /var/amavis/.maildir/Bayes
root #
maildirmake -s write -f redeliver /var/amavis/.maildir/Bayes
Az amavisd-new szolgáltatásnak képesnek kell lennie ezeknek a fájloknak az olvasására, csakúgy, mint az összes levelezési felhasználónak. Ezért hozzáadjuk az összes érintett felhasználót a mailuser csoporthoz az amavis felhasználóval együtt.
root #
groupadd mailusers
root #
usermod -G mailusers spamtrap
root #
chown -R amavis:mailusers /var/amavis/.maildir/
root #
chown amavis:mailusers /var/amavis/
root #
chmod -R 1733 /var/amavis/.maildir/Bayes/
root #
chmod g+rx /var/amavis/.maildir/
root #
chmod g+rx /var/amavis/.maildir/Bayes/
Ezáltal a
mailusers
csoport tagjai hozzáférést kapnak az amavis
e-mailekhez. Ez biztosítja, hogy az összes megfelelő felhasználó kezelni tudja az üzeneteket.Ez lehetővé teszi, hogy a spam és ham könyvtárakba írhassanak a felhasználók, de olvasni ne tudják azokat. Így a felhasználók biztonságosan küldhetik be a ham leveleiket, anélkül hogy bárki más elolvashatná azokat.
Ezután futtassa a következő parancsot a spamtrap
felhasználóként:
user $
maildirmake --add Bayes=/var/amavis/.maildir/Bayes $HOME/.maildir
A csoportnak olvasási jogosultságot kell adnunk a Bayes könyvtárhoz, hogy a levelezőkliens hozzáférhessen az IMAP által használt alkönyvtárakhoz.
Cron feladatok hozzáadása
Most lefuttassa le a crontab -u amavis -e
parancsot, hogy szerkessze az amavis crontabot az Bayes szűrő automatikus tanulásának engedélyezéséhez minden órában.
crontab
Az amavis felhasználó számára#Auto learn
0 * * * * /usr/bin/sa-learn --spam /var/amavis/.maildir/Bayes/.spam/{cur,new} \
> /dev/null 2>&1
0 * * * * /usr/bin/sa-learn --ham /var/amavis/.maildir/Bayes/.ham/{cur,new} > \
/dev/null 2>&1
Az
amavis
-nak a cron
csoport tagjának kell lennie ahhoz, hogy cront futtasson.Úgy tűnik, hogy a megosztott maildir könyvtárak miatt a
sa-learn
kétszer vizsgálja meg az összes üzenetet. Ez nem okoz problémát. Az eredmény azt is megmutatja majd, hogy a megtanult üzenetek maximális száma fele vagy kevesebb, mint a megvizsgált üzenetek száma.Az amavisd.conf fájl módosítása
Most szerkessze az amavis-t úgy, hogy a kéretlen e-maileket a spamtrap
fiókba irányítsa át, és tartsa meg a spamfejléceket.
/etc/amavisd.conf
# (Define the account to send virus spam emails)
$spam_quarantine_to = "spamtrap\@$myhostname";
Takarítás
Nem akarjuk az e-maileket örökre megőrizni, ezért a rendszeres takarításhoz a tmpwatch
eszközt használjuk. Telepítse a emerge tmpwatch
paranccsal. Kizárólag a root
képes futtatni a tmpwatch
parancsot, ezért szerkesztenünk kell a root
crontabot.
crontab
root felhasználó# Clean up
# Keep virusmails for a week (24*7 hours)
15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/virusmails/
# Delete spam and ham learned after a week
15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/.maildir/Bayes/
Szürke lista
Bevezetés
A szürke listázás a kéretlen levelek elleni harc egyik újabb fegyvere. Ahogy a neve is utal rá, nagyon hasonló a fehér listázáshoz és a fekete listázáshoz. Minden alkalommal, amikor egy ismeretlen levelezőszerver megpróbál levelet küldeni, a levelet egy próbálja meg később üzenettel elutasítják. Ez azt jelenti, hogy a levelek késlekednek, ugyanakkor az olyan buta spam botok, amelyek nem valósítják meg az RFC protokollt, leállítják a spam kézbesítési kísérletét, és soha nem próbálkoznak újra. Idővel a spam botok valószínűleg alkalmazkodnak, azonban ez több időt ad más technológiáknak a spam azonosítására.
Ha az internetszolgáltatója blokkolja a bejövő forgalmat a 25-ös porton, és az összes levelet a saját levelezőszerverén keresztül továbbítja Önnek, akkor a szürke listázás nem fog működni.
A Postfix 2.1 egyszerű Perl szürke listázási házirend szerverrel érkezik, amely megvalósít egy ilyen rendszert. Azonban ez kiszámíthatatlan eredményekhez vezethet, ha a szürke listázási adatbázist tároló partíció megtelik. Létezik egy továbbfejlesztett verzió, amely nem szenved ettől a problémától. Először bemutatjuk, hogy miként lehet telepíteni a Postfix beépített szürke listázási támogatását, majd megmutatjuk, hogy miként kell beállítani a robusztusabb helyettesítőt.
Léteznek más szürke listázási házirend szerverek is a Postfixhez (például Gld, amely elérhető a Portage szoftvercsomag kezelőben, és a SQLgrey weboldalon). Néhányuk támogatja az adatbázis háttereket, az automatikus fehér listázást és más praktikus funkciókat.
Egyszerű szürke listázás
Ha inkább a továbbfejlesztett szürke listázást szeretné használni a postgrey segítségével, akkor nyugodtan kihagyhatja ezt a részt.
Szükségünk van a greylist.pl fájlra, de sajnos az ebuild alapértelmezés szerint nem telepíti azt.
root #
cp /var/cache/distfiles/postfix-your-version-here.tar.gz /root/
root #
tar xzf postfix-your-version-here.tar.gz
root #
cp postfix-2.1.0/examples/smtpd-policy/greylist.pl /usr/bin/
Most, hogy a fájl a helyére került, létre kell hoznunk a szürke listázási adatbázist tároló könyvtárat.
root #
mkdir /var/mta
root #
chown nobody /var/mta
Ne hozza létre a szürke listázási adatbázis könyvtárat egy olyan partíción, amelynél fennáll a helyhiány lehetősége. Míg a postfix képes helyreállni a levelezési várólista és a postafiók esetében előforduló helyhiányos helyzetekből, ez nem igaz a szürke listázási adatbázisra. Ha a fájl megsérül, akkor előfordulhat, hogy egyáltalán nem fog tudni e-maileket fogadni, amíg kézzel nem törli a fájlt.
Szürke listázás beállítása
Most, hogy minden készen áll, nincs más hátra, mint hozzáadni ezt a postfix beállításhoz. Először adjuk hozzá a szükséges információkat a master.cf fájlhoz:
policy-greylist unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/bin/greylist.pl
A postfix spawn szolgáltatás általában 1000 másodperc után megöli a gyermekfolyamatait, azonban ez túl rövid idő a szürke listázási folyamathoz, ezért növelnünk kell az időkorlátot a main.cf fájlban:
main.cf
Szürke listázás használatapolicy-greylist_time_limit = 3600
# (Under smtpd_recipient_restrictions add:)
check_sender_access hash:/etc/postfix/sender_access
# (Later on add:)
restriction_classes = greylist
greylist = check_policy_service unix:private/policy-greylist
Győződjön meg arról, hogy a
check_sender_access
értéket a reject_unauth_destination
után adja meg, különben a rendszere nyitott levél-továbbítóvá válhat.A szürke listázási adatbázis gyorsan szennyeződik hamis címekkel. Segít, ha a szürke listás lekérdezéseket más korlátozásokkal védjük, amelyek elutasítják az ismeretlen küldőket és/vagy címzetteket.
Nem szeretnénk a szürke listázást minden doménre alkalmazni, csak azokra, amelyekkel a spammerek gyakran visszaélnek. Végül is ez késlelteti az e-mail kézbesítést. A gyakran hamisított MAIL FROM domének listája megtalálható online. Adja hozzá azokat a doméneket, amelyekről sok kéretlen levelet kap, a /etc/postfix/sender_access fájlba:
aol.com greylist
hotmail.com greylist
bigfoot.com greylist
Ha egy kiterjedtebb listát szeretne:
root #
cat sender-domain-validate.in | sort | awk {'print $1 "\t\t greylist"'} > /etc/postfix/sender_access
Most már csak inicializálnunk kell a sender_access adatbázist:
root #
postmap /etc/postfix/sender_access
Most a szimpla szürke listázás beállítása befejeződött.
Ezt mi kipróbáltuk egy olyan szerveren, amely naponta ezer számra kezelte az e-maileket, és az eredmények szinte teljes katasztrófát jelentettek. Négy nap elteltével a szerver több száz régi
greylist.pl
folyamattal volt túlterhelve.Javított szürke listázás beállítása a postgrey használatával
Az erősített szürke listázási szabályzatszervert egyszerűen telepítheti egy emerge
parancs segítségével:
root #
emerge postgrey
Miután telepítette a postgrey
szoftvercsomagot, szerkeszteni kell a main.cf fájlt. A módosítások szinte teljesen megegyeznek a beépített szürke listázáséival.
main.cf
Szürke listázás használata# (Under smtpd_recipient_restrictions add:)
check_sender_access hash:/etc/postfix/sender_access
# (Later on add:)
smtpd_restriction_classes = greylist
greylist = check_policy_service inet:127.0.0.1:10030
A Postfix SMTPD_POLICY_README dokumentáció csak a
restriction_classes
-t használja, de úgy tűnik, hogy ez nem működik.Ha mindent szürke listázni szeretne, akkor adja hozzá
check_policy_service inet:127.0.0.1:10030
sort.Végül indítsa el a szervert, és adja hozzá a megfelelő futási szinthez.
root #
/etc/init.d/postgrey start
root #
rc-update add postgrey default
Egyesek szeretik, ha gyorsan megkapják a leveleiket, ezért a szürkelistázás számukra értéktelen. Azonban, ha használ egy tartalék levelezőszervert, akkor azon biztonságosan beállíthatja a szürkelistázást. Korlátozott tapasztalataink alapján ez akár az érkező spamek egyharmadát is megállíthatja.
SPF (Sender Policy Framework)
Bevezetés
Az SPF lehetővé teszi a domén tulajdonosok számára, hogy DNS rekordjaikban megadják, mely IP-címek küldhetnek e-maileket a doménjük nevében. Ez megakadályozza, hogy a spammerek hamisítsák a Return-Path
-ot.
Ha az internetszolgáltatója blokkolja a bejövő forgalmat a 25-ös porton, és az összes e-mailt a saját levelezőszerverén keresztül továbbítja Önnek, akkor az SPF nem fog működni.
Először a domén tulajdonosoknak létre kell hozniuk egy speciális TXT
DNS rekordot. Ezután egy SPF-kompatibilis MTA elolvashatja ezt, és ha az e-mail egy olyan szerverről származik, amelyet nem ír le az SPF rekord, az e-mail elutasítható. Egy példa bejegyzés így nézhet ki:
example.com. IN TXT "v=spf1 a mx ptr -all"
A -all
jelentése az, hogy alapértelmezés szerint minden e-mailt elutasít, de engedélyezi az e-mailek küldését a A
( a
), MX
( mx
) és PTR
( ptr
) DNS rekordokból. További információért tekintse meg az alábbi erőforrásokat.
Ha az internetszolgáltatóján keresztül továbbítja a kimenő e-maileket, akkor hozzá kell adnia a következőt:
include:yourisp.com
.A Spamassassin 3.0 támogatja az SPF-et, azonban ez alapértelmezés szerint nincs engedélyezve, és a Postfix új szabályzati szolgáltatása is támogatja az SPF-et, így telepítsük az SPF támogatást a Postfixhez.
Ha az SPF-et a Spamassassinnal szeretné használni, akkor egyszerűen futtassa a
emerge dev-perl/Mail-SPF-Query
parancsot, majd indítsa újra az Amavisd-new-t.Előkészületek
Először telepítenie kell a Postfix 2.1-et, ahogy fentebb leírtuk. Miután letöltötte a forrást, szerezze be a spf.pl fájlt a következővel:
root #
cp postfix-<version>/examples/smtpd-policy/spf.pl /usr/local/bin/
A spf.pl fájl, amely a Postfixhez tartozik, kissé hibás, ezért keresse meg és vonja ki a következő sort megjegyzésből:
push @HANDLERS, "sender_permitted_from"; use Mail::SPF::Query;
. Továbbá, körülbelül a 199. sorban cserélje ki a comemnt
szót comment
-re. Alternatívaként letölthet egy fejlesztési verziót.Ez a Perl szkript néhány Perl könyvtárat igényel, amelyek nem szerepelnek a portage szoftvercsomag-tárolóban, azonban ezek telepítése még mindig egészen egyszerű:
root #
emerge Mail-SPF-Query Net-CIDR-Lite Sys-Hostname-Long
Most hogy minden készen áll, már csak be kell állítani a Postfixet, hogy használja ezt az új szabályzatot.
master.cf
SPF használatapolicy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/local/bin/spf.pl
Most adja hozzá az SPF ellenőrzést a main.cf fájlba. A megfelelően beállított SPF nem okoz problémát, ezért ellenőrizhetjük az SPF-et az összes doménre:
main.cf
SPF használata# (Under smtpd_recipient_restrictions add:)
check_policy_service unix:private/policy-spf
Ha problémái adódnak az SPF-fel, például a
fetchmail
használata során, akkor érdemes lehet az SPF-et csak bizonyos domének esetében engedélyezni.Az amavisd-new beállítása a MySQL használatához
MySQL beállítása
Ezt nem lett tesztelve a 2.2-nél magasabb verziókon. Visszajelzéseket szívesen fogadunk :)
Nagy domének esetében az alapértelmezett értékek, amelyeket a amavisd.conf fájlban beállíthat, nem biztos, hogy minden felhasználónak megfelelnek. Ha az amavisd-new-t MySQL támogatással állítja be, akkor egyéni beállításokat állíthat be felhasználók vagy felhasználói csoportok számára.
user $
mysql -u root -p mysql
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 78 to server version: 4.0.18-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
create database maildb;
mysql>
GRANT INSERT,UPDATE,DELETE,SELECT ON maildb.* TO 'mail'@'localhost' IDENTIFIED BY 'very_secret_password';
mysql>
use maildb;
Most hogy az adatbázis elkészült, létre kell hozni a szükséges táblázatokat. Az alábbiakat másolja és illessze be a mysql parancssorba:
CREATE TABLE users (
id int unsigned NOT NULL auto_increment,
priority int NOT NULL DEFAULT '7', -- 0 is low priority
policy_id int unsigned NOT NULL DEFAULT '1',
email varchar(255) NOT NULL,
fullname varchar(255) DEFAULT NULL, -- not used by amavisd-new
local char(1), -- Y/N (optional field, see note further down)
PRIMARY KEY (id),
KEY email (email)
);
CREATE UNIQUE INDEX users_idx_email ON users(email);
# (any e-mail address, external or local, used as senders in wblist)
CREATE TABLE mailaddr (
id int unsigned NOT NULL auto_increment,
priority int NOT NULL DEFAULT '7', -- 0 is low priority
email varchar(255) NOT NULL,
PRIMARY KEY (id),
KEY email (email)
);
CREATE UNIQUE INDEX mailaddr_idx_email ON mailaddr(email);
# (-- per-recipient whitelist and/or blacklist,
# -- puts sender and recipient in relation wb)
# (white or blacklisted sender)
CREATE TABLE wblist (
rid int unsigned NOT NULL, -- recipient: users.id
sid int unsigned NOT NULL, -- sender: mailaddr.id
wb char(1) NOT NULL, -- W or Y / B or N / space=neutral
PRIMARY KEY (rid,sid)
);
CREATE TABLE policy (
id int unsigned NOT NULL auto_increment,
policy_name varchar(32), -- not used by amavisd-new
virus_lover char(1), -- Y/N
spam_lover char(1), -- Y/N (optional field)
banned_files_lover char(1), -- Y/N (optional field)
bad_header_lover char(1), -- Y/N (optional field)
bypass_virus_checks char(1), -- Y/N
bypass_spam_checks char(1), -- Y/N
bypass_banned_checks char(1), -- Y/N (optional field)
bypass_header_checks char(1), -- Y/N (optional field)
spam_modifies_subj char(1), -- Y/N (optional field)
spam_quarantine_to varchar(64) DEFAULT NULL, -- (optional field)
spam_tag_level float, -- higher score inserts spam info headers
spam_tag2_level float DEFAULT NULL, -- higher score inserts
-- 'declared spam' info header fields
spam_kill_level float, -- higher score activates evasive actions, e.g.
-- reject/drop, quarantine, ...
-- (subject to final_spam_destiny setting)
PRIMARY KEY (id)
);
Ha problémái adódnak a másolás/beillesztés használatával, akkor előfordulhat, hogy máshová kell másolnia ezt, és ki kell tisztítania a felesleges karaktereket.
Az e-mail keresések nyers (rfc2821 szerint nem idézőjelezett és nem zárójelbe tett) címekkel történnek kulcsként, például:
John "Funny" Smith@example.com
.A keresések a következő sorrendben történnek:
SQL
, LDAP
, hash
, ACL
, regexp
, constant
. Az első, amely végleges választ ad (nem undef/NULL
), leállítja a keresést.Ha fehér- vagy feketelistázást szeretne használni, akkor hozzá kell adnia a feladót és a címzettet a mailadr
-hoz, majd létre kell hoznia a kapcsolatot a két e-mail cím között a wblist
-ben, és meg kell jelölnie, hogy ez fehérlistázás (W
) vagy feketelistázás (B
).
Most hogy létrehoztuk a táblázatokat, adjunk hozzá egy tesztfelhasználót és egy teszt szabályzatot. Íme egy példa, amit beilleszthet a MySQL parancssorba:
INSERT INTO users
SET
id =1,
priority =9,
policy_id =1,
email ="johndoe@example.com",
fullname ="John Doe",
local ="Y";
INSERT INTO policy
SET
id =1,
policy_name ="Test policy 1",
virus_lover ="N",
spam_lover ="N",
banned_files_lover ="N",
bad_header_lover ="N",
bypass_virus_checks ="N",
bypass_spam_checks ="N",
bypass_banned_checks ="N",
bypass_header_checks ="N",
spam_modifies_subj ="N",
spam_quarantine_to =NULL,
spam_tag_level =-50.0,
spam_tag2_level =7.0,
spam_kill_level =10.0;
Másolja ezt máshová, és igazítsa a saját környezetéhez.
A
local
értékét Y
-ra kell állítani, különben a levelek nem lesznek spam szűrésen átesni.Ez egy tesztfelhasználót és egy tesztszabályzatot illeszt be. Igazítsa ezeket a példákat a saját igényeihez. A beállításnevek további magyarázata megtalálható a amavisd.conf fájlban.
Az amavisd beállítása MySQL használatára
Most, hogy a MySQL készen áll, be kell állítanunk az amavist, hogy használja azt:
amavisd.conf
Frissítés MySQL használatára@lookup_sql_dsn =
( ['DBI:mysql:maildb:host1', 'mail', 'very_secret_password'] );
# (For clarity uncomment the default)
$sql_select_policy = 'SELECT *,users.id FROM users,policy'.
' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
' ORDER BY users.priority DESC';
# (If you want sender white/blacklisting)
$sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
' WHERE (wblist.rid=?) AND (wblist.sid=mailaddr.id)'.
' AND (mailaddr.email IN (%k))'.
' ORDER BY mailaddr.priority DESC';
</pre>
Spamassassin beállítása MySQL használatára
A Spamassassin 3.0 verziójától kezdve lehetőség van a Bayes és AWL adatok MySQL adatbázisban való tárolására. MySQL-t fogunk használni háttérként, mivel ez általában jobb teljesítményt nyújt más adatbázisokhoz képest. Továbbá, ha mindkét adattípust MySQL-ben tároljuk, akkor az jelentősen leegyszerűsíti a rendszer kezelését. Az alábbiakban bemutatjuk, hogy miként érheti ezt el könnyedén.
Kezdje azzal, hogy létrehozza az új MySQL felhasználót, majd hozza létre a szükséges táblázatokat.
root #
mysql -u root -p mysql
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 78 to server version: 4.0.18-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
create database dbname;
mysql>
GRANT INSERT,UPDATE,DELETE,SELECT ON dbname.* TO 'dbuser'@'localhost' IDENTIFIED BY 'another_very_secret_password';
mysql>
use dbname;
Most, hogy az adatbázis létrejött, hozzuk létre a szükséges táblázatokat. Az alábbi kódrészletet bemásolhatja a MySQL promptba:
CREATE TABLE bayes_expire (
id int(11) NOT NULL default '0',
runtime int(11) NOT NULL default '0',
KEY bayes_expire_idx1 (id)
) TYPE=MyISAM;
CREATE TABLE bayes_global_vars (
variable varchar(30) NOT NULL default '',
value varchar(200) NOT NULL default '',
PRIMARY KEY (variable)
) TYPE=MyISAM;
INSERT INTO bayes_global_vars VALUES ('VERSION','3');
CREATE TABLE bayes_seen (
id int(11) NOT NULL default '0',
msgid varchar(200) binary NOT NULL default '',
flag char(1) NOT NULL default '',
PRIMARY KEY (id,msgid)
) TYPE=MyISAM;
CREATE TABLE bayes_token (
id int(11) NOT NULL default '0',
token char(5) NOT NULL default '',
spam_count int(11) NOT NULL default '0',
ham_count int(11) NOT NULL default '0',
atime int(11) NOT NULL default '0',
PRIMARY KEY (id, token),
INDEX (id, atime)
) TYPE=MyISAM;
CREATE TABLE bayes_vars (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(200) NOT NULL default '',
spam_count int(11) NOT NULL default '0',
ham_count int(11) NOT NULL default '0',
token_count int(11) NOT NULL default '0',
last_expire int(11) NOT NULL default '0',
last_atime_delta int(11) NOT NULL default '0',
last_expire_reduce int(11) NOT NULL default '0',
oldest_token_age int(11) NOT NULL default '2147483647',
newest_token_age int(11) NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE bayes_vars_idx1 (username)
) TYPE=MyISAM;
CREATE TABLE awl (
username varchar(100) NOT NULL default '',
email varchar(200) NOT NULL default '',
ip varchar(10) NOT NULL default '',
count int(11) default '0',
totscore float default '0',
PRIMARY KEY (username,email,ip)
) TYPE=MyISAM;
Az
INSERT
sor szükséges, különben a Spamassassin nem fog működni.Ez a forrás tömörített fájlban is elérhető a awl_mysql.sql és bayes_mysql.sql fájlokban.
Spamassassin beállítása a MySQL háttér használatára
Ha van egy régi Bayes adatbázisa a DBM adatbázisban, és meg szeretné tartani, akkor kövesse az alábbi utasításokat:
root #
su - amavis
user $
sa-learn --sync
user $
sa-learn --backup > backup.txt
user $
sa-learn --restore backup.txt
Vegye figyelembe, hogy az utolsó lépést csak akkor szabad végrehajtani, miután a MySQL adatbázis és a secrets.cf frissítve lett.
Most adja meg a Spamassassin számára a szükséges információkat:
/etc/mail/spamassassin/secrets.cf
# (Tell Spamassassin to use MySQL for bayes data
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:sa_bayes:localhost:3306
bayes_sql_username db_name
bayes_sql_password another_very_secret_password
# (Tell Spamassassin to use MySQL for AWL data
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:sa_bayes:localhost:3306
user_awl_sql_username db_name
user_awl_sql_password another_very_secret_password
Ezután változtassa meg a jogosultságokat a megfelelő biztonság érdekében.
root #
chmod 400 /etc/mail/spamassassin/secrets.cf
Titkos jelszó létrehozásához használja az
emerge app-admin/makepasswd
és az makepasswd -chars=8
parancsokat.Most már csak annyit kell tennie, hogy futtatja az /etc/init.d/amavisd restart
parancsot.
Hibaelhárítás
Amavisd-new
Amavisd-new hibaelhárításához kezdje azzal, hogy leállítja az /etc/init.d/amavisd stop
parancs segítségével, majd manuálisan indítsa el az előtérben az amavisd debug
parancs használatával, és figyelje az esetleges rendellenességeket a kimenetben.
Spamassassin
A Spamassassin hibaelhárításához egy e-mailt szűrhet át rajta az spamassassin -D < mail
parancs segítségével. Annak érdekében, hogy a fejléc sértetlen maradjon, egy másik gépről IMAP segítségével helyezheti át.
Ha hibaelhárításra van szükség, akkor engedélyezze a
amavis
felhasználó bejelentkezését úgy, hogy a /etc/passwd fájlban megváltoztatja a bejelentkezési shellt /bin/bash értékre.Ha szeretné, akkor ugyanazt az információt és még többet is megszerezhet az Amavisd-new segítségével az amavisd debug-sa
parancs használatával.
Feladatok ismétlése a telepítés után
A kézikönyvben említett tevékenységek közül néhányat frissítések után meg kell ismételni. Például a chown -R amavis:mailusers
parancsot minden amavisd-new frissítés után újra el kell végezni.
Szerencsére a Gentoo lehetőséget biztosít ezeknek a lépéseknek az automatikus végrehajtására. A Hooking in the Emerge Process részben a Gentoo kézikönyv bemutatja, hogyan lehet feladatokat végrehajtani egy adott szoftvercsomag telepítése után, például így:
if [ "${PN}" == "amavisd-new" ] &&
[ "${EBUILD_PHASE}" == "postinst" ];
then
chown -R amavis:mailusers /var/amavis/.maildir
fi
Segítség kérése
Ha segítségre van szüksége, akkor jó kiindulópont lehet az amavis-user levelezőlista. Mielőtt kérdést tenne fel, próbáljon meg keresni az Amavis User levelezőlista archívumban. Ha itt nem talál választ, feliratkozhat az Amavis User levelezőlistára.
Ha a kérdése kifejezetten a SpamAssassin, DCC, Razor vagy Postfix programokra vonatkozik, akkor keresse fel a megfelelő weboldalakat az alábbiakban felsoroltak szerint.
Források
További információkért
- Amavisd-new INSTALL
- Amavisd-new Postfix README
- Amavisd-new Policy bank documentation
- Spamassassin SQL README
- Greylisting
- Postfix SMTPD_POLICY_README
- Blocking spammers with Postfix HELO controls
- SPF Overview
- Jim Seymour's Postfix Anti-UCE Cheat Sheet
Általános források
- Spamassassin
- Amavisd-new
- Amavisd-new documentation bits and pieces
- Vipuls's Razor
- Pyzor
- Distributed Checksum Clearinghouse
- Maia Mailguard
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Sune Kloppenborg Jeppesen, Jens Hilligs, Joshua Saddler
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.