Linux jako server/Etch/Pošta/Dokumentace

Tady jsou poznámky, které si člověk dělá při čtení dokumentace. Kdo nemůže číst anglický originál, má aspoň tohle. Originální dokumentaci ale ničím nenahradíš. :o)

Amavisd-new editovat

Toto povídání vychází k dokumentace dostupné na stránkách Amavisu, nebo v /usr/share/doc/ na vašem Debianím systému.

Amavisd-new (dále budu psát Amavis, i když to je název předchůdce Amavisu-new, tudíž nepřesnost) je dispečer, který přebírá e-maily od MTA (Postfix kupř.) a nechává je zkontrolovat AntiSpamovým a AntiVirovým programem. Ve výchozím nastavení žádný AS ani AV filtr nemá zapnutý. Jak to zapnout a nastavit viz Pošta - JakNaTo.

Amavis funguje jako by byl SMTP mail serverem, tudíž skutečně naslouchá na nějakém portu (obvykle 10024) a maily k otestování dostává SMTP protokolem. Už během vyjednávání může mail odmítnout (jako každý jiný mail server) a říct proč (stavový kód). Obvykle ale mail přijme a po otestování ho pošle opět SMTP protokolem skutečnému mail serveru (obvykle na port č. 10025). Mail server (skutečný) musí tedy kromě portu 25 naslouchat a očekávat maily i tady na 10025. Proč to není zpátky na 25? Protože pak by Amavis znovu dostal ten samý mail ke kontrole. Démon naslouchající na 25 má nastaveno, aby mail postoupil Amavisu na port 10024. Démon naslouchající na portu 10025 má nastaveno, aby mail dále zpracoval a připravil k doručení příjemci.

Prováděné testy mailu editovat

  • test platnosti hlavičky mailu
  • test na zakázané názvy a typy
  • virové testy
  • spamové testy
  • test na black či white listing (u spamu)

Pořadí testů je náhodné a nedá se z něj tedy při nastavování akcí vycházet.

Zapínání/vypínání testů se děje pomocí konfiguračních proměnných:

  • @bypass_virus_checks_maps
  • @bypass_banned_checks_maps
  • @bypass_header_checks_maps
  • @bypass_spam_checks_maps

Tyto mapy lze nastavit podle jednotlivých příjemců. Testy ale probíhají vždy na celou zprávu.

Stručně řečeno, je těžké ovlivnit, aby nějaký test neprobíhal (např. z důvodů zátěže systému), pokud je někde aspoň trochu (podmíněně) použit.

Výsledky testů jsou kešovány. To má tím větší význam, čím víc se váš server podobá mailserveru ISP.

Chování po otestování mailu editovat

Jsou-li některé testy vypnuty, předpokládá se jako výsledek, že mail je čistý, bez viru či není spam.

Nyní probíhají tato rozhodování:

  • zda a jak má být mail uložen do karantény
  • zda a který administrátor by měl obdržet vyrozumění
  • zda by příjemci měli obdržet vyrozumění

A nezávisle na doručení mailu a vyrozuměních:

  • zda má být mail doručen každému příjemci
  • zda má být doručený mail modifikován (úpravy hlaviček, defanging =? zneškodnění, zbezzubnění:-)
  • zda má odesílatel dostat upozornění na (ne)doručení (bounce)
  • jaký by měl být finální stavový kód vrácený mail serveru (reject, pass)1

1 (Amavis pracuje jako nezávislý mail server, tudíž když převezme od skutečného mailserveru zprávu k otestování, musí mu taky říct, jestli jí bere, či ne a proč).

Je-li více testů pozitivních, pak je zprávě dána nálepka (kategorie) v tomto pořadí:

  1. je-li detekován virus - zpráva je považována za infikovanou (infected)
  2. obsahuje zakázané jméno či typ - mail je považován za "banned"
  3. spam level je vyšší než "kill level", nebo odesílatel je na blacklistu - mail je považován za spam
  4. vadné hlavičky - "bad header"

Toto pořadí je natvrdo zadrátované v programu a nedá se měnit žádnou konfigurační direktivou. O konečném osudu zprávy se rozhodnout musí a tento osud může být pro jednu zprávu jen jeden (discard, reject, pass, bounce). V pořadí se vychází z toho, že je-li kupř zpráva zavirovaná, bude nám asi čerta starýho jedno, jestli tam náhodou nebyla nějaká vadná hlavička.

Přidělená kategorie ovlivní další akce: Má být pro tuto kategorii informován administrátor, má být mail dán do karantény, mají být informováni příjemci? Vždy pro onu přidělenou kategorii.

Následuje pokus o doručení mailu. Rozhodnutí závisí na kategorii mailu a na preferencích nastavených pro tuto kategorii - "osud" viz výše.

Obecná nastavení řídí $final_*_destiny; individuální (dle příjemce) @*_lovers_maps. Za * dosaď jméno kategorie.

Je-li zde nastaveno "doručit" (D_PASS), pak je doručení zajištěno, i kdyby vše ostatní bylo proti.

Mail, který se má doručit podstoupí některé modifikace hlaviček. Ty mohou být různé pro různé příjemce, i když jsou všichni příjemci téhož mailu.

V případě, že je osudem D_BOUNCE, bude připraveno upozornění pro odesílatele o nedoručitelnosti zprávy (DSN - delivery status notification) a MTA obdrží stav 2xx (úspěch).

V případě, že je osudem D_REJECT, odešle Amavis do MTA odpověď 5xx (reject) a případné upozornění odesílatele je tak delegováno na MTA. D_REJECT není doporučen, je-li v MTA nastaveno filtrování tak, že zpráva jde do filtru Amavis až po jejím přijetí do fronty k doručení - tj. náš MTA potvrdil odesílajícímu MTA přijetí mailu, takže teď, po testech v Amavisu, už nemůže zprávu odmítnout. To je tzv. post-queue filtrování. Rovněž se D_REJECT nedoporučuje při dual-MTA filtrování (tomu nerozumím;o)

Připravené upozornění na ne-doručení mailu nemusí být odesílateli zasláno v případě že:

  • $final_*_destiny=D_DISCARD;
  • je-li mail infikován a jméno viru se vyskytuje v mapě @viruses_that_fake_sender_maps (což je ve výchozím nastavení vždy).
  • když skóre spamu překročí úroveň v @spam_dsn_cutoff_level_maps pro všechny příjemce
  • když mail přišel z mail-listu

To ale vede obě strany ke zmatku protože mail je tak jednoduše ztracen v černé díře.

tag, tag2 a kill úrovně (SpamAssassin) editovat

Je-li v průběhu testů volán SpamAssassin, vrací Amavisu spamové skóre - číslo které čím je vyšší tím spíš a víc se jedná o spam. Toto skóre je porovnáváno se třemi hodnotami (tag, tag2, kill) a kterou z nich překročí, tak podle toho se postupuje dál (v závorce je výchozí hodnota v Debian Linuxu Etch):

tag
(2,0) jsou přidány hlavičky X-Spam-Status a X-Spam-Level
tag2
(6,31) jsou přidány hlavičky X-Spam-Status, X-Spam-Level, X-Spam-Flag a X-Spam-Report
kill
(=tag2) mail je blokován. Odesílatel obdrží non-delivery upozornění (ale jen pokud skóre není vyšší než dsn_cutoff_level.

Kill level editovat

Určuje co se s mailem dál děje mezi MTA a Amavisem. Dosáhne-li mail kill level aspoň pro jednoho příjemce rozhoduje se o tomto:

  • mail jde do karantény (není-li disabled)
  • spam admin obdrží vyrozumění ( - " - )
  • je zvýšen čítač ContentSpamMsgs
  • odesílatel obdrží upozornění, je-li warnspamsender=true a $final_spam_destiny=D_PASS
  • není-li mail doručen, obdrží odesílatel upozornění (až na pár výjimek)
  • v logu se objeví: Passed/Blocked SPAM

Tag2 level editovat

Pouze mail označkuje:

  • Subject je pozměněn
  • X-Spam-Flags a X-Spam-Status je nastaven na YES
  • address extension for spam gets tacked on the rcpt address (sorry, nerozumím;)
  • mail je zbezzubněn (defanged) - není-li vypnuto
  • v logu se objeví: Passed/Blocked SPAMMY