Levélszűrő átjáró

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Mailfiltering Gateway and the translation is 100% complete.
Other languages:
This article has been flagged for not conforming to the wiki guidelines (Use of 2nd person pronouns). Please help Gentoo out by starting fixing things.
Some of the information in this article may have drifted out of sync with current practices. Please help out by checking over the content (how to get started).

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.
Note
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.).

Note
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.
Warning
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
Note
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

Note
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.

CODE DNS beállítása
(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


Note
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.

CODE A master.cf fájl módosítása
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=
Note
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.
Note
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.
Warning
A Before-Queue (proxy) módszer még mindig nincs megfelelően tesztelve.
Note
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.

FILE /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.

FILE /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.

Note
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.

FILE /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)
Note
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
Note
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.

FILE /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
Note
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.

FILE /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.

FILE /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.

FILE /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$/ ],
Warning
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.

FILE /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


Note
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.
Note
Ihletet meríthet a local.cf fájlhoz, ha kipróbálja a SpamAssassin Configuration Generator eszközt.
Note
É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.

FILE amavisd.confdo sitewide scoring
read_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.

FILE whitelist_senderPé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


Note
További példákért tekintse meg a /etc/amavisd.conf fájlt.
Note
Ezeknek a címeknek a amavisd.conf fájlon kívüli elhelyezése tisztább és biztonságosabb megoldás.
Note
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.
Note
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.

CODE Spam szűrők elküldése minden postmaster és abuse e-mail esetében
map { $bypass_spam_checks{lc($_)}=1 } (qw(
        postmaster@
        abuse@
));
Important
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
Note
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.

Note
A Netcat alkalmazható fejlett alternatívaként a telnet helyett. Telepítse az emerge netcat parancs használatával.
Note
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


Note
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
Note
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.
Note
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.
Important
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

FILE /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
*
./
Warning
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.
Note
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.

FILE /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/
Warning
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
Note
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.

FILE crontabAz 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
Note
Az amavis-nak a cron csoport tagjának kell lennie ahhoz, hogy cront futtasson.
Note
Ú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.

FILE /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.

FILE crontabroot 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.

Note
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.

Note
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

Note
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
Warning
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:

CODE A master.cf fájl módosítása a szürke listázás használatához
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:

FILE main.cfSzürke listázás használata
policy-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
Warning
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.
Note
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:

CODE A sender_access formátuma
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.

Warning
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.

FILE main.cfSzü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
Note
A Postfix SMTPD_POLICY_README dokumentáció csak a restriction_classes-t használja, de úgy tűnik, hogy ez nem működik.
Note
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
Note
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.

Note
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:

CODE Példa SPF bejegyzés
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.

Note
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.

Note
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/
Note
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.

FILE master.cfSPF használata
policy-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:

FILE main.cfSPF használata
# (Under smtpd_recipient_restrictions add:)
check_policy_service unix:private/policy-spf
Note
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

Note
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:

CODE MySQL táblázat elrendezése
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)
  );
Note
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.
Note
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 .
Note
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:

CODE Tesztfelhasználó és tesztszabályzat létrehozása
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;
Note
Másolja ezt máshová, és igazítsa a saját környezetéhez.
Note
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:

FILE amavisd.confFrissí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:

CODE MySQL táblázat elrendezés
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;
Important
Az INSERT sor szükséges, különben a Spamassassin nem fog működni.
Note
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
Note
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:

FILE /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
Note
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.

Note
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:

CODE Példa bashrc kódrészlet a megemlített chown parancs futtatásához
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

Általános források


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.