Aceasta este comanda claws-mail-perl-filter care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
cm_perl -- Un plugin Perl pentru Claws Mail
DESCRIERE
Acest plugin oferă un motor de filtrare extins pentru clientul de e-mail Claws Mail. Aceasta
permite utilizarea întregii puteri Perl în filtrele de e-mail.
RAPID START
Pentru a începe, puteți utiliza matchrrc2perlfilter.pl scenariul în Unelte-directorul către
traduceți vechile reguli de filtrare în Perl. Pur și simplu executați scriptul și urmați
instrucțiuni. (rețineți că, cu versiunile recente de Claws Mail, acest script ar putea să nu funcționeze
din cauza modificărilor de sintaxă din amonte. Acest lucru va fi actualizat în viitor. Trimite-mi un email daca
ai probleme la început).
Cu toate acestea, vă recomandăm să citiți restul acestui manual și să vă rescrieți
reguli dacă alegeți să utilizați pluginul, deoarece codul Perl produs de acest script nu este
exact frumos.
Nu vorbești perl? Nicio problemă, „perldoc perlintro” ar trebui să vă ofere suficiente informații de făcut
chestii de lux.
UTILIZARE
Pluginul Perl se așteaptă la un fișier script Perl numit filtru_perl în configurația Claws Mail
directorul (de obicei $HOME/.claws-mail -- încercați `claws-mail --config-dir' dacă nu sunteți sigur).
Dacă acel fișier nu există la pornirea pluginului, este creat unul gol. Acest fișier, care
nu trebuie să înceapă cu un sha-bang (!#/bin/perl), deține instrucțiunile Perl pentru dvs.
filtre de e-mail. Pentru a încuraja unele bune maniere, codul este executat într-o „utilizare strictă”;
mediu. (envrironment)
Filtrarea ambelor Claws Mail Condiții si acțiuni sunt mapate la funcțiile Perl cu
nume corespunzătoare, oriunde este posibil.
FUNCȚIA LISTAREA
Pentru o descriere detaliată a funcției, consultați secțiunea „DESCRIEREA FUNCȚIILOR”, de mai jos.
Condiții standard de filtrare
toate, marcate, necitite, șterse, noi, răspuns,
redirecționat, blocat, ignore_thread, colorlabel,
potrivire, chibrit, expresie regulată, S
dimensiune_mai mare, dimensiune_mai mică, mărime_egale,
score_greater, score_lower, score_equal, age_greater,
age_lower, parțial, etichetat
Acțiuni standard de filtrare
marcare, anulare marcare, ștergere, marcare ca necitită, marcare ca citită,
blocați, deblocați, mutați, copiați, colorați, executați,
ascunde, set_score, change_score, stop, forward,
forward_as_attachment, redirecționare, set_tag, unset_tag,
clear_tags
Chestii distractive
header, body, filepath, extract_addresses,
move_to_trash, abort, addr_in_addressbook,
from_in_addressbook, get_attribute_value, SA_is_spam,
ieșire, manual, make_sure_folder_exists,
filter_log, filter_log_verbosity,
make_sure_tag_exists
FUNCȚIA DESCRIERILE
În general, după filtrarea invocată de scriptul Perl, e-mailul este transmis către
Motorul de filtrare intern al ghearelor, dacă nu a final regula a fost lovită. Regulile finale se opresc nu numai
scriptul de filtrare Perl în momentul apariției lor, dar și împiedică procesarea
acel e-mail de la motorul de filtrare intern al Claws (ar putea să sune confuz, dar tu ești
deja familiarizat cu acel concept din filtrele standard: După ce un e-mail a fost de ex mutad,
următoarele reguli nu se mai aplică).
De asemenea, ai grijă la felul în care citezi. În special, rețineți că semnul @ are a
semnificație specială în Perl și este interpolată între ghilimele duble. Vezi „Citat și Citat-
like Operators" în perlop pentru a afla mai multe despre citare și interpolare.
Standard Filtrare Condiţii
all Returnează o valoare adevărată. Disponibil doar pentru completare.
marked Returnează o valoare adevărată dacă steag-ul marcat este setat, fals în caz contrar.
unread Returnează o valoare adevărată dacă steag-ul necitit este setat, false în caz contrar.
deleted Returnează o valoare adevărată dacă steag-ul șters este setat, fals în caz contrar.
new Returnează o valoare adevărată dacă noul steag este setat, fals în caz contrar.
replied Returnează o valoare adevărată dacă indicatorul răspuns este setat, fals în caz contrar.
transmis
Returnează o valoare adevărată dacă indicatorul redirecționat este setat, fals în caz contrar.
locked Returnează o valoare adevărată dacă steag-ul blocat este setat, fals în caz contrar.
ignore_thread
Returnează o valoare adevărată dacă este setat indicatorul „Ignorați firul”, în caz contrar, fals.
colorlabel CULOARE
etichetă de culoare
Returnează o valoare adevărată dacă mesajul are culoarea COLOR. CULOARE poate fi fie un numeric
valoare intre 0 si 7 (cu culori corespunzatoare filtrarii interne
motor), sau numele culorii în limba engleză, așa cum este introdus în dialogul de filtrare
(adică unul dintre: niciunul, portocaliu, roșu, roz, albastru deschis, albastru, verde sau maro, în timp ce
literele mari și mici nu fac nicio diferență). Dacă COLOR este omisă, 0 (niciunul) este
asumat.
size_greater SIZE
Returnează o valoare adevărată dacă dimensiunea mesajului este mai mare decât SIZE, false în caz contrar.
size_smaller SIZE
Returnează o valoare adevărată dacă dimensiunea mesajului este mai mică decât SIZE, false în caz contrar.
size_equal SIZE
Returnează o valoare adevărată dacă dimensiunea mesajului este egală cu SIZE, false în caz contrar.
scor_mai mare SCORE
Returnează o valoare adevărată dacă scorul mesajului este mai mare decât SCORE, fals în caz contrar.
score_lower SCORE
Returnează o valoare adevărată dacă scorul mesajului este mai mic decât SCORE, fals în caz contrar.
scor_egal SCORE
Returnează o valoare adevărată dacă scorul mesajului este egal cu SCORE, fals în caz contrar.
varsta_mai mare
Returnează o valoare adevărată dacă vârsta mesajului este mai mare decât AGE, false în caz contrar.
age_lower AGE
Returnează o valoare adevărată dacă vârsta mesajului este mai mică decât AGE, fals în caz contrar.
partial Returnează o valoare adevărată dacă mesajul a fost descărcat doar parțial, fals
in caz contrar.
tagged Returnează o valoare adevărată dacă mesajele au una sau mai multe etichete.
test Corespunde regulii de filtrare internă „test”. În special, acceptă același lucru
simboluri, și anume:
%% %
%s Subiect
%f De la
%t Către
%c Cc
%d Data
%i ID-ul mesajului
%n grupuri de știri
%r Referințe
Nume fișier %F -- nu trebuie modificat
meci UNDE CE
cutie de chibrituri UNDE CE
regexp UNDE CE
regexpcase UNDE CE
Funcțiile de potrivire au o sintaxă specială. Primul argument este oricare dintre
to_or_cc, body_part, headers_part, headers_cont, mesaj, către, de la, subiect, cc,
grupuri de știri, răspunsuri la, referințe sau etichete (acele șiruri pot fi sau nu
citat), potrivirea modelului funcționează în zona respectivă. Dacă este orice alt șir (care
trebuie apoi citat), acest șir este considerat numele unui câmp de antet.
Al doilea argument este șirul de căutat. Pentru match, matchcase, regexp și
regexpcase avem potrivire normală sensibilă la majuscule și minuscule, normal insensibilă la majuscule și minuscule
potrivire, potrivire a expresiilor regulate sensibile la majuscule și minuscule obișnuite
potrivirea modelului de expresie, respectiv.
Funcțiile returnează true dacă modelul a fost găsit, false în caz contrar.
La fel ca în cazul motorului de filtrare încorporat, corpul mesajului este căutat și
cu condiția ca atare - nu se face nicio analiză a seturilor de caractere. De asemenea, nu există etichete HTML
dezbrăcat. Ar trebui să fie posibil să se utilizeze module sau programe externe pentru acestea
sarcini insa. Dacă faci asta, trimite-mi un mesaj cu experiențele tale.
Cu Perl având punctele sale forte în potrivirea modelelor, folosind operatorii încorporați ai Perl
sunt de obicei o opțiune mai bună decât utilizarea acestor funcții.
Standard Filtrare Acţiuni
Acțiunile returnează o valoare adevărată la succes și „undef” atunci când a apărut o eroare. Final
sunt indicate regulile mesajului. (Vezi mai sus pentru o schiță ce este o regulă finală)
marcați Marcați mesajul.
demarcare Anulează marcarea mesajului.
dele Ștergeți mesajul. Rețineți că schimbarea numelui „șterge” de la Claws Mail în „șterge”. Acest
se datorează faptului că „ștergerea” este una dintre comenzile încorporate ale Perl care nu poate fi redefinită
(dacă se poate, spune-mi cum).
Aceasta este o final regulă.
marcheaza ca citit
Marcați mesajul ca citit
marcheaza ca necitit
Marcați mesajul ca necitit
blocare Blocați mesajul
deblocare Eliminați blocarea mesajului
muta DESTINATIA
Mutați mesajul în dosarul DESTINATION. Notația folderului este aceeași cu cea a Claws
Utilizări mail. Puteți copia și lipi din caseta de dialog de mutare a filtrării normale,
până când simțiți notația.
Aceasta este o final regulă.
copiați DESTINAȚIA
Copiați mesajul în dosarul DESTINATION. Notația folderului este aceeași cu cea a Claws
Utilizări mail. Puteți copia și lipi din caseta de dialog de mutare a filtrării normale,
până când simțiți notația.
executa COMANDA
Aceasta este aceeași cu testul - regula din secțiunea „Condiții standard de filtrare”
cu excepția faptului că returnează întotdeauna o valoare adevărată.
ascunde Ascunde mesajul
set_score SCORE
Setați scorul mesajului la SCORE
change_score SCORE
Schimbați scorul mesajului după SCORE
opriți scriptul Stop Perl în acest moment. Rețineți că acesta este nu o regulă finală, adică
e-mailul este transmis motorului intern de filtrare. Vezi „avorta” mai jos dacă
nu vrei asta.
redirecționați CONT, EMAIL
Redirecționați mesajul către adresa de e-mail EMAIL, folosind ID-ul contului ACCOUNT ca expeditor
cont. Până acum, trebuie să creați o regulă în motorul de filtrare normal pentru a găsi
scoateți acel număr.
forward_as_attachment, EMAIL CONT
Redirecționați mesajul la adresa de e-mail EMAIL într-un atașament, folosind ID-ul contului
ACCOUNT ca cont de expeditor. Până acum, trebuie să creați o regulă în mod normal
motor de filtrare pentru a afla acel număr.
redirecționează CONT, EMAIL
Redirecționați mesajul către EMAIL, folosind ID-ul contului ACCOUNT ca cont de expeditor. Asa de
departe, trebuie să creați o regulă în motorul de filtrare normal pentru a afla asta
număr.
set_tag TAG
Aplicați eticheta TAG. TAG trebuie să existe.
unset_tag TAG
Anulați eticheta TAG.
clear_tags
Ștergeți toate etichetele.
Distracţie chestii
funcţii
antet ARG
antet Dacă nu este dat ARG, returnează o listă cu toate numele câmpurilor de antet ale e-mailului.
Dacă este dat ARG, returnează „undef” dacă câmpul antet ARG nu există în
e-mail. În caz contrar, se întoarce
în context scalar
Valoarea câmpului antet ARG.
în contextul listei
O listă cu toate valorile câmpurilor de antet disponibile. Acest lucru este util dacă un câmp de antet
apare de mai multe ori într-un e-mail (de exemplu, antetul Primit).
Câmpul antet „Referințe” formează un caz special. Într-un context scalar, ea
returnează prima referință. Într-un context de listă, returnează o listă cu toate
referințe.
body Returnează corpul e-mailului într-un scalar.
filepath
Returnează fișierul și calea e-mailului care este filtrat în prezent (corespunde cu
argumentul %F din regula „test”.
extract_addresses
Extrage adresele de e-mail dintr-un șir și returnează o listă de adrese găsite.
În prezent, o adresă de e-mail este găsită folosind expresia regulată
„[-.+\w]+\@[-.+\w]+”. Aceasta nu va găsi toate adresele de e-mail valide. Simte-te liber sa
trimite-mi o expresie mai bună.
aruncă la gunoi
Mutați mesajul de e-mail în dosarul coș de gunoi implicit.
Aceasta este o final regulă.
abort Stop Perl script în acest moment.
Spre deosebire de „stop”, acesta este un final regulă.
addr_in_addressbook EMAIL, ADRESSBACK
addr_in_addressbook EMAIL
Returnează o valoare adevărată dacă adresa de e-mail EMAIL se află în agenda cu
nume AGENDA. În cazul în care nu este furnizată ADRESSE, returnează true dacă adresa de e-mail
este în orice agendă de adrese.
from_in_addressbook ADRESSBACK
din_în_agendă
Verifică dacă adresa de e-mail găsită în antetul De la se află în agenda de adrese
(sau oricare, dacă este omis). Este implementat ca
my ($de la) = extract_addresses(header("de la"));
returnează 0 dacă nu $de la;
return addr_in_addressbook($de la,@_);
deci se aplică aceleași restricții ca la extract_addresses.
get_attribute_value EMAIL, ATTRIBUTE, ADRESSBACK
get_attribute_value EMAIL, ATRIBUT
Caută prin agenda de adrese (sau în toate agendele, dacă sunt omise) pentru a
contactați cu o adresă de e-mail EMAIL. Dacă este găsită, funcția verifică dacă aceasta
contactul are un atribut de utilizator cu numele ATTRIBUTE. Returnează valoarea acesteia
atribut sau un șir gol dacă nu a fost găsit. Ca de obicei, „undef” este returnat
dacă a apărut o eroare.
SA_este_spam
Este un alias pentru
nu testați „spamc -c < %F > /dev/null”
ieșire A fost redefinit pentru a fi un alias pentru „oprire”. Nu ar trebui să utilizați propria „ieșire” a lui Perl
comandă, deoarece ar ieși din Claws Mail.
manual Returnează o valoare adevărată dacă scriptul de filtru a fost invocat manual, adică prin intermediul
Meniul Instrumente.
make_sure_folder_exists IDENTIFIER
Returnează o valoare adevărată dacă folderul cu ID IDENTIFIER (de ex. #mh/Mail/foo/bar)
există sau ar putea fi creat.
make_sure_tag_exists TAG
Returnează o valoare adevărată dacă eticheta TAG există sau ar putea fi creată.
filter_log SECȚIUNE, TEXT
filter_log TEXT
Scrie TEXT în fișierul jurnal de filtru. SECȚIUNEA poate fi oricare dintre
· „LOG_MANUAL”
· „LOG_MATCH”
· „LOG_ACTION”
Dacă SECȚIUNEA este omisă, se presupune „LOG_MANUAL”.
filter_log_verbosity VERBOSITATE
filter_log_verbosity
Modifică verbozitatea jurnalului de filtrare pentru e-mailul curent. VERBOSITATEA trebuie să fie oricare dintre
0 Taci
1 Jurnal de tip MANUAL
2 Tip de acțiune în jurnal
3 Tip Jurnal MATCH
Pentru semnificația acestor numere, citiți secțiunea „ÎNREGISTRARE”. Dacă VERBOSITATEA este omisă,
verbozitatea fișierului jurnal al filtrului nu este modificată.
Această funcție returnează numărul filter_log_verbosity înainte de modificare (dacă există).
Variabile
$permanent
Acest scalar își păstrează valoarea între mesajele de e-mail filtrate. La pornirea pluginului, este
inițializat la șirul gol.
LOGARE
Pentru a ține evidența a ceea ce s-a făcut cu e-mailurile în timpul filtrării, pluginul acceptă
Logare. Sunt recunoscute trei niveluri de verbozitate:
0 înregistrare dezactivată
1 înregistrează numai mesajele manuale, adică mesajele introduse de comanda „filter_log” în
scripturi de filtrare
2 înregistrați mesajele manuale și acțiunile de filtrare
3 înregistrează mesaje manuale, acțiuni de filtrare și potriviri de filtrare
Mesajele sunt înregistrate în fereastra de jurnal Claws Mail. Nivelul de jurnal implicit este 2. Nivelul de jurnal
3 nu este recomandat, deoarece funcțiile de potrivire înregistrează un mesaj dacă au reușit și
astfel, dacă aveți verificări negative, veți obține intrări confuze. Dacă vrei să ții evidența
de potrivire, faceți-o manual, folosind „filter_log”, sau faceți-o activând temporar potrivirea
înregistrare folosind „filter_log_verbosity”.
Prima dată când descărcați acest plugin (sau închideți Claws Mail), o secțiune numită
[PerlPlugin] va fi creat în fișierul de configurare Claws Mail clawsrc, conținând unul
variabilă:
* filter_log_verbosity
Dacă doriți să schimbați comportamentul implicit, puteți edita această linie. Asigurați-vă că Claws Mail
nu rulează în timp ce faci asta.
Va fi posibil să accesez aceste setări prin GUI, de îndată ce voi găsi timp
scrieți un plugin GTK corespunzător sau altcineva este interesat să contribuie la asta.
EXEMPLU
Această secțiune listează un mic exemplu de fișier script Perl. Sunt sigur că ai înțeles ideea..
#-8<---------------------------------------------- ------
# -*- perl -*-
# funcții locale
# Învățați mesajele ham și mutați-le în folderul specificat. Aceasta este
# util pentru a vă asigura că un filtru Bayes vede și șunca.
sub învață_și_mută {
execute('put command to learn ham here');
mutare(@_);
}
# Filtru de spam în două etape. Fiecare e-mail care are un scor mai mare de 15
# pe SpamAssassin este mutat în dosarul de gunoi implicit.
# Toate e-mailurile mai mici decât atât, dar mai mari decât ale lui SpamAssassin
# „required_hits” intra în #mh/mail/Spam.
sub verificare spam {
my $surly_spam = 15;
my $filepath = filepath;
my $spamc = `spamc -c < $filepath`;
mea ($valoarea,$pragul) = ($spamc =~ m|([-.,0-9]+)/([-.,0-9]+)|);
if($valoare >= $sigur_spam) {
marcheaza ca citit;
aruncă la gunoi;
}
if($valoare >= $prag) {mark_as_read; mutați „#mh/mail/Spam”;}
}
# Execuția scriptului Perl începe aici.
# O anumită sortare
learn_and_move „#mh/mail/MailLists/Claws Mail/user”
if matchcase('emițător','[e-mail protejat]„);
learn_and_move „#mh/mail/MailLists/Sylpheed”
if matchcase('list-id','sylpheed.good-day.net');
# Implementați foldere care apar folosind agenda de adrese
# atribute. Dosarele țintă pentru anumite adrese de e-mail sunt
# stocat direct în agenda. În acest fel, dacă un e-mail
# modificări de adresă, trebuie doar să actualizăm agenda, nu
# regulile de filtrare! Pe lângă asta, putem dezordine foarte mult
# script de filtrare.
# obțineți adresa de e-mail în antetul de la
my $fromheader = antet „de la”;
my ($de la) = extract_addresses $fromheader;
# verificați dacă această adresă de e-mail are un atribut asociat
# numit „incomming_folder”. Dacă are, valoarea acestuia
# atributul ar trebui să fie folderul țintă.
my $value = get_attribute_value $from, "incomming_folder";
învață_și_mută($valoare) dacă $valoare;
# Un exemplu de listă albă: dacă adresa de la de la adresa este în my
# agenda de adrese „birou”, mutați e-mailul în folderul #mh/mail/office
learn_and_move '#mh/mail/office' if from_in_addressbook("birou");
# Dacă adresa de la proveniență se află în orice altă agendă de adrese, mutați
# mail în folderul #mh/mail/inbox/cunoscut
learn_and_move '#mh/mail/inbox/known' if from_in_addressbook;
# Alimentați e-mailurile rămase prin SpamAssassin.
verificare spam;
# de e-mailuri care ajung la sfârșitul scriptului sunt transmise către
# motorul intern de filtrare. Dacă regulamentul intern nu spune
# în caz contrar, e-mailurile ajung în căsuța de e-mail implicită.
#-8<---------------------------------------------- ------
Folosiți online claws-mail-perl-filter folosind serviciile onworks.net