Spamový filtr pro Postfix
Spam Scanner začne filtrovat server s Postfixem zhruba za pět minut. Běží jako milterMail filter: protokol ze Sendmailu, který používá i Postfix a který samostatnému programu umožňuje prohlédnout každou zprávu během relace SMTP., takže se ho Postfix na každou zprávu ptá během relace SMTP a může spam odmítnout dřív, než ho přijme.
Instalace a spuštění#
npm install --global spamscanner
spamscanner milter --port 7831 --auth --subject-tag "[SPAM]"--auth kontroluje SPFSender Policy Framework: záznam v DNS se seznamem serverů, které smějí za doménu odesílat poštu., DKIMDomainKeys Identified Mail: podpis zprávy ověřovaný veřejným klíčem zveřejněným v DNS odesílatele., DMARCZásada v DNS, která příjemcům říká, co dělat s poštou, jež se hlásí k doméně, ale neprojde zarovnáním SPF a DKIM. a ARCAuthenticated Received Chain: podpisy, které přenášejí výsledky ověření přes přeposílající servery.; --subject-tag označí spam v předmětu. Každá zpráva dostane hlavičky X-Spam-Flag, X-Spam-Score, X-Spam-Status a X-Spam-Action a jakákoli hlavička X-Spam-*, kterou vložil odesílatel, se nejprve odstraní.
Připojení Postfixu#
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_protocol = 6
milter_default_action = acceptsudo postfix reloadmilter_default_action = accept propustí poštu nefiltrovanou, pokud milter neběží; tempfail místo toho požádá odesílatele, aby to zkusili znovu.
Odmítání spamu během relace SMTP#
spamscanner milter --port 7831 --auth --rejectZprávy na prahu odmítnutí (15 bodů) se odmítají s 451 4.7.1 Message rejected as spam. Kód 451 je dočasný: odesílatel si zprávu ponechá a zkusí to znovu, takže špatné rozhodnutí stojí zpoždění, ne ztracenou zprávu. Až budou výsledky vypadat správně, --reject-code 550 udělá z odmítnutí trvalé.
Bez milteru#
Obsahový filtr běží až poté, co Postfix zprávu přijme: Postfix ji rourou předá do spamscanner filter, který přidá hlavičky a vrátí ji zpět. Během relace se nikdy nic neodmítne a selhání vždy doručení odloží, místo aby zprávu vrátilo. Nastavení obsahového filtru
Spam do složky Junk#
S Dovecotem přesune označenou poštu pravidlo Sieve:
require ["fileinto"];
if header :is "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }Otestováno proti skutečnému Postfixu#
Testy end-to-end projektu spouštějí Postfix s milterem i obsahovým filtrem: hamŽádoucí pošta: opak spamu. se doručí s hlavičkami a s odstraněnou podvrženou X-Spam-Flag, spam se označí a GTUBEGeneric Test for Unsolicited Bulk Email: pevný řetězec, který každý spamový filtr považuje za spam, určený k testování. se během relace SMTP odmítne s kódem 550.
Dále: úplný návod pro Postfix a Sendmail s jednotkou systemd a INPUT_MAIL_FILTER pro Sendmail.