Portál AbcLinuxu, 15. července 2025 10:10
v postfix main.cf
pcre:/etc/postfix/header_checks
v
/etc/postfix/header_checks
/^Subject: .*Možnost výdělku*./i DISCARD
Na straně klienta to filtrovat nechci a sieve filtry nemám.
1) *. → .*
2) DISCARD → REJECT (když je budeš v tichosti zahazovat, může se ztratit legitimní e-mail – takhle se o tom aspoň odesílatel dozví)
postfix
se nevyznám, ale problém bude asi v nepodpoře utf8
viz
perl -CS -nE 'say $_ if /^Subject: .*Možnost výdělku.*/i' <<EOF Subject: Možnost výdělku EOFvs
perl -CS -Mutf8 -nE 'say $_ if /^Subject: .*Možnost výdělku.*/i' <<EOF Subject: Možnost výdělku EOFpokud
postfix
používa balíček pcre
, tak by se podpora utf8 měla dát zjistit pomocí pcretest -C
.
řešením je použít pcre
s podporou utf8 nebo používat místo ne ASCII znaků \x{...}
, popř. \N{...}
Ps. možná může pro váš případ stačit místo Možnost výdělku
psát Mo.nost v.d.lku
:)
Subject: Fwd: =?UTF-8?B?TW/Fvm5vc3QgdsO9ZMSbbGt1IHZlIHTFmWVjaCBqZWRub2R1Yw==?=Přece to musí jít nějak přeložit, když to dokáže klient.
Ten regulární výraz se bohužel vyhodnocuje nad zakódovanými hlavičkami – viz header_checks:
If text in the message body is encoded (RFC 2045) then the rules need to be specified for the encoded form.
Likewise, when message headers are encoded (RFC 2047) then the rules need to be specified for the encoded form.
Jedna tečka místo písmena s diakritikou tedy nestačí, protože ta hlavička bude vypadat třeba takhle:
Subject: [Admini] =?utf-8?q?N=C3=A1vrh_na_anketu?=
Tohle řešení má prostě určitá omezení, ale zase má výhodu, že se vyhodnocuje už během SMTP relace, takže můžeš zprávu odmítnout a server odesílatele se o tom hned dozví. Nebudou ti zprávy v tichosti mizet v /dev/null
.
Takže musíš to potenciální kódování zahrnout do regulárního výrazu nebo použít jiné řešení (typicky nějaký milter), které regulární výraz aplikuje až na dekódovaný text (při správně dimenzovaném HW by ani tohle neměl být problém dělat hned během SMTP relace).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.