Puncte:0

procmail rescrie linia de subiect dacă utilizatorul destinatar e-mailului nu reuşeşte testul de potrivire

drapel in

Am un utilizator procmail local „bob”.

Dacă sosește un e-mail și se potrivește cu [email protected], atunci nu trebuie luată nicio măsură.

Cu toate acestea, dacă sosește un e-mail și este [orice_altfel]@domeniu.com, aș dori să rescriu linia de subiect pentru a insera „[spam]” în fața liniei de subiect.

Deci este o potrivire inversă pe „bob@” (potrivire pe orice altceva decât bob@) și păstrăm linia de subiect originală, adăugând doar „[spam]” în fața acesteia.

Cum pot face asta cu Procmail?

Puncte:1
drapel ar

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.

user227963 avatar
drapel in
Nu, nu vreau să caut șirul oriunde în mesaj - doar în câmpul TO... așa că dacă TO se potrivește cu [email protected], nu a fost luată nicio măsură. DAR, dacă câmpul TO este altceva, atunci aș dori să rescriu subiectul cu [SPAM] la început. Are sens ?
tripleee avatar
drapel ar
Ceva sau orice alt destinatar din acest domeniu specific, așa cum spune întrebarea dvs.? Al doilea exemplu vă arată deja exact cum să faceți acest lucru.
user227963 avatar
drapel in
Am testat cel de-al doilea exemplu și funcționează foarte bine - deși există un lucru... dacă subiectul este complet gol, rămâne gol - nu se rescrie...
tripleee avatar
drapel ar
Puteți schimba ultimul `.+` din condiția Subiect: la `.*` pentru a captura și liniile Subiect: goale. (Totuși, nimeni nu ar trebui să trimită mesaje cu subiecte goale.)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.