Cerințele dumneavoastră sunt destul de neclare. Procmail se poate potrivi pe orice șir, dar chiar vrei să cauți șirul oriunde în mesaj? Și chiar vrei să spui să ignori mesajele fără? domeniu.com
în ele în sensul acestei reguli?
:0 HB
* ! ()\<bob@domeniu\.com\>
* @domain\.com\>
{
:0fhw
* ^Subiect:\/.+
| formail -I"Subiect: [spam]$MATCH"
}
The \<
și \>
limitele cuvintelor împiedică potrivirea pe subșiruri, cum ar fi tombob
sau subdomain.complete.org
, iar parantezele goale sunt un hack, deoarece Procmail este ciudat despre regexe care încep cu o bară oblică inversă.
Dacă vrei să spui că vrei să te uiți doar în anteturi, aruncă HB
de la prima linie de colon (puteți părăsi H
dar asta este implicit dacă nu pui niciun steag). Dacă doriți să potriviți un anumit antet, scrieți-l. Dacă doriți să examinați destinatarul în mod specific, ^TO_
macro vă permite să faceți asta într-un număr de antete diferite (La:
, Cc:
, etc) cu ușurință.
:0fhw
* ! ^TO_bob@domain\.com\>
* ^TO_[^<>@ ]+@domain\.com\>
* ^Subiect:\/.+
| formail -I"Subiect: [spam]$MATCH"
Pentru că am renunțat la HB
steaguri, putem combina ceea ce era anterior două rețete cu steaguri diferite. Al doilea ^TO_
verifică orice adresă, inclusiv bob
, care însă era deja exclus de condiția anterioară negata.
Aceasta mai are câteva cazuri de colț care ar putea trebui explorate în continuare; dacă vă puteți edita întrebarea pentru a o clarifica, poate că o pot actualiza pentru a acoperi mai mult decât elementele de bază.
Cu toate acestea, SMTP nu necesită ca destinatarul să fie scris în anteturi. Cazul clasic este Bcc:
care este, de asemenea, în esență mecanismul folosit de multe liste de corespondență. Poate că MTA-ul dvs. va preciza destinatarul în Livrat la:
dar corect vorbind, acest tip de filtru este mai bine implementat în MTA.