Dies ist der Befehl claws-mail-perl-filter, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
cm_perl -- Ein Perl-Plugin für Claws Mail
BESCHREIBUNG
Dieses Plugin bietet eine erweiterte Filter-Engine für den E-Mail-Client Claws Mail. Es
ermöglicht die Nutzung der vollen Perl-Power in E-Mail-Filtern.
SCHNELL Starte das Spiel
Um zu beginnen, können Sie die matcherrc2perlfilter.pl Skript in der Werkzeuge-Verzeichnis zu
Übersetzen Sie Ihre alten Filterregeln in Perl. Führen Sie einfach das Skript aus und folgen Sie den
Anweisungen. (Beachten Sie, dass dieses Skript bei neueren Versionen von Claws Mail möglicherweise nicht funktioniert
aufgrund von Upstream-Syntaxänderungen. Dies wird in Zukunft aktualisiert. Senden Sie mir eine E-Mail, wenn
Sie haben Startschwierigkeiten).
Sie sollten jedoch in Erwägung ziehen, den Rest dieses Handbuchs zu lesen und Ihre
Regeln, wenn Sie sich für die Verwendung des Plugins entscheiden, da der von diesem Skript erzeugte Perl-Code nicht
genau hübsch.
Sie sprechen kein Perl? Kein Problem, "perldoc perlintro" sollte Ihnen genug Informationen geben
schickes Zeug.
ANWENDUNG
Das Perl-Plugin erwartet eine Perl-Skriptdatei namens perl_filter in der Konfiguration von Claws Mail
Verzeichnis (normalerweise $HOME/.claws-mail -- versuchen Sie es mit `claws-mail --config-dir', wenn Sie sich nicht sicher sind).
Wenn diese Datei beim Start des Plugins nicht existiert, wird eine leere erstellt. Diese Datei, die
muss nicht mit einem sha-bang (!#/bin/perl) beginnen, enthält die Perl-Anweisungen für Ihre
E-Mail-Filter. Um gute Manieren zu fördern, wird der Code in einem "use strict" ausgeführt;
Umwelt.
Filterung von Both Claws Mail Bedingungen und Aktionen werden auf Perl-Funktionen abgebildet mit
entsprechende Namen, wo immer dies möglich ist.
AUFGABE Listing
Eine detaillierte Funktionsbeschreibung finden Sie weiter unten im Abschnitt "FUNKTIONSBESCHREIBUNG".
Standardfilterbedingungen
alle, markiert, ungelesen, gelöscht, neu, geantwortet,
weitergeleitet, gesperrt, ignore_thread, colorlabel,
Übereinstimmung, Streichholzschachtel, Regexp, S
Größe_größer, Größe_kleiner, Größe_gleich,
score_greater, score_lower, score_equal, alter_greater,
age_lower, teilweise, markiert
Standardfilteraktionen
markieren, Markierung aufheben, löschen, mark_as_unread, mark_as_read,
sperren, entsperren, verschieben, kopieren, färben, ausführen,
verstecken, set_score, change_score, stoppen, vorwärts,
forward_as_attachment, umleiten, set_tag, unset_tag,
klare_tags
Lustige Sachen
Header, Body, Dateipfad, Extract_Adressen,
move_to_trash, abbrechen, addr_in_addressbook,
from_in_addressbook, get_attribute_value, SA_is_spam,
beenden, manuell, make_sure_folder_exists,
filter_log, filter_log_ausführlichkeit,
make_sure_tag_exists
AUFGABE BESCHREIBUNGEN
Im Allgemeinen wird die Mail nach der vom Perl-Skript aufgerufenen Filterung an
Claws' interner Filtermotor, es sei denn a Finale Regel getroffen wurde. Endgültige Regeln hören nicht nur auf
das Perl-Filter-Skript zum Zeitpunkt ihres Auftretens, aber auch die Verarbeitung verhindern
diese E-Mail von Claws' interner Filter-Engine (das mag verwirrend klingen, aber Sie sind es
das Konzept bereits von Standardfiltern kennen: Nachdem eine E-Mail z schlauer bewegend,
die folgenden Regeln gelten nicht mehr).
Seien Sie auch vorsichtig mit der Art und Weise, wie Sie zitieren. Denken Sie insbesondere daran, dass das @-Zeichen a . hat
besondere Bedeutung in Perl und wird in doppelte Anführungszeichen interpoliert. Siehe "Angebot und Angebot-
wie Operatoren" in perlop, um mehr über Quotierung und Interpolation zu erfahren.
Standard Filterung Bedingungen
all Gibt einen wahren Wert zurück. Nur zur Vollständigkeit verfügbar.
markiert Gibt einen wahren Wert zurück, wenn das markierte Flag gesetzt ist, andernfalls false.
unread Gibt einen true-Wert zurück, wenn das unread-Flag gesetzt ist, andernfalls false.
delete Gibt einen wahren Wert zurück, wenn das Lösch-Flag gesetzt ist, andernfalls false.
new Gibt einen true-Wert zurück, wenn das new-Flag gesetzt ist, andernfalls false.
responded Gibt einen wahren Wert zurück, wenn das Antwort-Flag gesetzt ist, andernfalls false.
weitergeleitet
Gibt einen wahren Wert zurück, wenn das Weiterleitungs-Flag gesetzt ist, andernfalls falsch.
Locked Gibt einen True-Wert zurück, wenn das Locked-Flag gesetzt ist, andernfalls False.
Ignorieren_Thread
Gibt einen wahren Wert zurück, wenn das Flag "Thread ignorieren" gesetzt ist, andernfalls false.
Farbetikett COLOR
Farbetikett
Gibt einen wahren Wert zurück, wenn die Nachricht die Farbe COLOR hat. FARBE kann entweder eine Zahl sein
Wert zwischen 0 und 7 (mit Farben entsprechend der internen Filterung
engine) oder den englischen Farbnamen, wie er im Filterdialog eingeführt wird
(d. h. eines von: keine, orange, rot, pink, himmelblau, blau, grün oder braun, während
Groß- und Kleinschreibung machen keinen Unterschied). Wenn FARBE weggelassen wird, ist 0 (keine)
angenommen.
size_größer GRÖSSE
Gibt einen wahren Wert zurück, wenn die Nachrichtengröße größer als SIZE ist, andernfalls falsch.
size_smaller GRÖSSE
Gibt den Wert true zurück, wenn die Nachrichtengröße kleiner als SIZE ist, andernfalls false.
size_gleich GRÖSSE
Gibt einen wahren Wert zurück, wenn die Nachrichtengröße gleich SIZE ist, andernfalls falsch.
score_greater SCORE
Gibt einen wahren Wert zurück, wenn die Nachrichtenbewertung größer als SCORE ist, andernfalls falsch.
score_lower SCORE
Gibt einen wahren Wert zurück, wenn die Nachrichtenbewertung niedriger als SCORE ist, andernfalls falsch.
score_equal SCORE
Gibt einen wahren Wert zurück, wenn die Nachrichtenbewertung gleich SCORE ist, andernfalls falsch.
alter_größer ALTER
Gibt den Wert true zurück, wenn das Nachrichtenalter größer als AGE ist, andernfalls false.
age_lower ALTER
Gibt den Wert true zurück, wenn das Nachrichtenalter kleiner als AGE ist, andernfalls false.
partiell Gibt den Wert true zurück, wenn die Nachricht nur teilweise heruntergeladen wurde, false
Andernfalls.
tagged Gibt einen wahren Wert zurück, wenn die Nachricht ein oder mehrere Tags enthält.
test Entspricht der internen Filterregel 'test'. Insbesondere akzeptiert es dasselbe
Symbole, nämlich:
%% %
%s Betreff
%f Von
%t bis
%c CC
%d Datum
%i Nachrichten-ID
%n Newsgroups
%r Referenzen
%F Dateiname -- sollte nicht geändert werden
übereinstimmen WO WAS
Streichholzschachtel WO WAS
regexp WO WAS
regexpcase WO WAS
Die passenden Funktionen haben eine spezielle Syntax. Das erste Argument ist entweder eines von
to_or_cc, body_part, headers_part, headers_cont, Nachricht, an, von, Betreff, cc,
Newsgroups, Inreplyto, Referenzen oder Tags (diese Zeichenfolgen können oder auch nicht sein)
zitiert), funktioniert der Mustervergleich in diesem Bereich. Wenn es sich um eine andere Zeichenfolge handelt (die
muss dann in Anführungszeichen gesetzt werden), wird dieser String als Name eines Header-Felds verwendet.
Das zweite Argument ist die Zeichenfolge, nach der gesucht werden soll. Für Match, Matchcase, Regexp und
regexpcase wir haben Groß-/Kleinschreibung bei normalem Matching, Groß-/Kleinschreibung wird nicht beachtet
Übereinstimmung, Groß-/Kleinschreibung beachtender regulärer Ausdruck und Groß-/Kleinschreibung nicht berücksichtigender regulärer Ausdruck
Ausdrucksmusterabgleich bzw.
Die Funktionen geben true zurück, wenn das Muster gefunden wurde, andernfalls false.
Genau wie bei der eingebauten Filter-Engine wird der Nachrichtentext durchsucht und
bereitgestellt wie es ist - es wird keine Zeichensatzanalyse durchgeführt. Ebenso sind keine HTML-Tags
abgestreift. Dafür sollten externe Module oder Programme genutzt werden können
Aufgaben aber. Wenn Sie das tun, schreiben Sie mir eine Nachricht mit Ihren Erfahrungen.
Da Perl seine Stärken im Mustervergleich hat, verwenden Sie die eingebauten Operatoren von Perl
sind in der Regel eine bessere Option, als diese Funktionen zu verwenden.
Standard Filterung Aktionen
Die Aktionen geben bei Erfolg einen wahren Wert zurück und 'undef', wenn ein Fehler aufgetreten ist. Ende
Nachrichtenregeln angezeigt. (Siehe oben für eine Skizze, was eine endgültige Regel ist)
markieren Nachricht markieren.
unmark Markierung der Nachricht aufheben.
delete Nachricht löschen. Beachten Sie die Namensänderung von "delete" von Claws Mail in "dele". Dies
liegt daran, dass "delete" einer von Perls eingebauten Befehlen ist, der nicht neu definiert werden kann
(Wenn es kann, sagen Sie mir wie).
Dieser Kurs ist ein Finale Regel.
als gelesen markieren
Nachricht als gelesen markieren
als ungelesen markieren
Nachricht als ungelesen markieren
sperren Nachricht sperren
Entsperren Entfernen Sie die Nachrichtensperre
ZIEL verschieben
Verschieben Sie die Nachricht in den Ordner DESTINATION. Die Ordnernotation ist dieselbe wie bei Claws
Mail verwendet. Sie können aus dem Verschieben-Dialog der normalen Filterung kopieren und einfügen,
bis Sie ein Gefühl für die Notation bekommen.
Dieser Kurs ist ein Finale Regel.
ZIEL kopieren
Kopieren Sie die Nachricht in den Ordner DESTINATION. Die Ordnernotation ist dieselbe wie bei Claws
Mail verwendet. Sie können aus dem Verschieben-Dialog der normalen Filterung kopieren und einfügen,
bis Sie ein Gefühl für die Notation bekommen.
Befehl ausführen
Dies entspricht der Test - Regel aus dem Abschnitt "Standard Filterbedingungen"
außer dass es immer einen wahren Wert zurückgibt.
ausblenden Nachricht ausblenden
set_score SCORE
Setzen Sie die Nachrichtenbewertung auf SCORE
change_score SCORE
Nachrichtenbewertung nach SCORE ändern
stop Stoppen Sie das Perl-Skript an dieser Stelle. Beachten Sie, dass dies nicht eine letzte Regel, was bedeutet, dass
die E-Mail wird an die interne Filter-Engine weitergeleitet. Siehe "Abbruch" unten, wenn
das willst du nicht.
weiterleiten KONTO, E-MAIL
Leiten Sie die Nachricht an die E-Mail-Adresse EMAIL weiter, indem Sie die Konto-ID ACCOUNT als Absender verwenden
Konto. Bisher müssen Sie eine Regel in der normalen Filter-Engine erstellen, um zu finden
diese Nummer aus.
forward_as_attachment, KONTO-E-MAIL
Weiterleiten der Nachricht an die E-Mail-Adresse EMAIL in einem Anhang unter Verwendung der Konto-ID
ACCOUNT als Absenderkonto. Bisher müssen Sie im Normalfall eine Regel erstellen
Filter-Engine, um diese Zahl herauszufinden.
KONTO umleiten, E-MAIL
Leiten Sie die Nachricht an EMAIL um, wobei Sie die Konto-ID ACCOUNT als Absenderkonto verwenden. So
Bisher muss man in der normalen Filter-Engine eine Regel erstellen, um das herauszufinden
Anzahl.
set_tag-TAG
Tag-TAG anwenden. TAG muss vorhanden sein.
unset_tag-TAG
Tag-TAG aufheben.
klare_tags
Alle Tags löschen.
Spaß Zeug
Funktionen
Kopfzeile ARG
header Wenn ARG nicht angegeben wird, wird eine Liste aller Header-Feldnamen der Mail zurückgegeben.
Wenn ARG angegeben ist, wird 'undef' zurückgegeben, wenn das Header-Feld ARG nicht im existiert
Email. Andernfalls kehrt es zurück
im skalaren Kontext
Der Wert des Header-Felds ARG.
im Listenkontext
Eine Liste aller verfügbaren Header-Feldwerte. Dies ist nützlich, wenn ein Header-Feld
kommt in einer E-Mail mehrfach vor (zB im Received - Header).
Einen Sonderfall bildet das Header-Feld "Referenzen". In einem skalaren Kontext ist es
gibt die erste Referenz zurück. In einem Listenkontext gibt es eine Liste aller zurück
Verweise.
body Gibt den E-Mail-Text in einem Skalar zurück.
Dateipfad
Gibt Datei und Pfad der aktuell gefilterten E-Mail zurück (entspricht
das %F-Argument in der 'Test'-Regel).
Auszug_Adressen
Extrahiert E-Mail-Adressen aus einer Zeichenfolge und gibt eine Liste der gefundenen Adressen zurück.
Derzeit wird eine E-Mail-Adresse mit dem regulären Ausdruck gefunden
'[-.+\w]+\@[-.+\w]+'. Dadurch werden nicht alle gültigen E-Mail-Adressen gefunden. Fühlen sich frei
Senden Sie mir eine bessere Regexp.
Ab in den Müll
Verschieben Sie die E-Mail-Nachricht in den Standard-Papierkorb.
Dieser Kurs ist ein Finale Regel.
abbrechen Stoppen Sie das Perl-Skript an dieser Stelle.
Im Gegensatz zu 'stop' ist dies a Finale Regel.
addr_in_addressbook E-MAIL, ADRESSBUCH
addr_in_addressbook E-MAIL
Gibt einen wahren Wert zurück, wenn die E-Mail-Adresse EMAIL im Adressbuch mit dem
Name ADRESSBUCH. Wenn ADDRESSBOOK nicht angegeben ist, wird true zurückgegeben, wenn die E-Mail-Adresse
steht in jedem Adressbuch.
from_in_addressbook ADRESSBUCH
from_in_addressbook
Überprüft, ob die im Von-Header gefundene E-Mail-Adresse im Adressbuch ADRESSBUCH ist
(oder beliebig, wenn weggelassen). Es ist implementiert als
my ($from) = Extract_addresses(header("from"));
0 zurückgeben, es sei denn, $from;
return addr_in_addressbook($from,@_);
daher gelten die gleichen Einschränkungen wie für Extract_Addresses.
get_attribute_value E-MAIL, ATTRIBUTE, ADRESSBUCH
get_attribute_value E-MAIL, ATTRIBUT
Durchsucht das Adressbuch ADRESSBUCH (oder alle Adressbücher, falls ausgelassen) nach a
Kontakt mit der E-Mail-Adresse EMAIL. Falls gefunden, prüft die Funktion, ob dies
Kontakt hat ein Benutzerattribut mit dem Namen ATTRIBUTE. Es gibt den Wert von this zurück
-Attribut oder eine leere Zeichenfolge, wenn sie nicht gefunden wurde. Wie üblich wird 'undef' zurückgegeben
wenn ein Fehler aufgetreten ist.
SA_ist_Spam
Ist ein Alias für
'spamc -c < %F > /dev/null' nicht testen
exit Wurde als Alias für 'stop' neu definiert. Sie sollten nicht Perls eigenen 'exit' verwenden
Befehl, da es Claws Mail beenden würde.
manual Gibt einen wahren Wert zurück, wenn das Filterskript manuell aufgerufen wurde, d. h. über den
Menü Extras.
make_sure_folder_exists IDENTIFIER
Gibt einen wahren Wert zurück, wenn der Ordner mit der ID IDENTIFIER (zB #mh/Mail/foo/bar)
existiert oder erstellt werden könnte.
make_sure_tag_exists-TAG
Gibt einen wahren Wert zurück, wenn das Tag TAG existiert oder erstellt werden könnte.
filter_log ABSCHNITT, TEXT
filter_log TEXT
Schreibt TEXT in die Filterprotokolldatei. ABSCHNITT kann beliebig sein
· "LOG_MANUAL"
· "LOG_MATCH"
· "LOG_ACTION"
Wird die SECTION weggelassen, wird "LOG_MANUAL" angenommen.
filter_log_verbosity AUSFÜHRLICHKEIT
filter_log_verbosity
Ändert die Ausführlichkeit des Filterprotokolls für die aktuelle E-Mail. VERBOSITY muss einer von . sein
0 Sei still
1 Log MANUELL Typ
2 Aktionstyp protokollieren
3 Log-MATCH-Typ
Zur Bedeutung dieser Nummern lesen Sie den Abschnitt "LOGGING". Wenn VERBOSITY weggelassen wird,
Die Ausführlichkeit der Filter-Logdatei wird nicht geändert.
Diese Funktion gibt die Zahl filter_log_verbosity vor der Änderung (falls vorhanden) zurück.
Variablen
$dauerhaft
Dieser Skalar behält seinen Wert zwischen gefilterten E-Mail-Nachrichten. Beim Plugin-Start ist es
auf den leeren String initialisiert.
LOGGING
Um beim Filtern zu verfolgen, was mit den Mails gemacht wurde, unterstützt das Plugin
Protokollierung. Drei Ausführlichkeitsstufen werden erkannt:
0 Protokollierung deaktiviert
1 nur manuelle Meldungen protokollieren, d. h. Meldungen, die durch den Befehl "filter_log" in
Filterskripte
2 manuelle Meldungen und Filteraktionen protokollieren
3 manuelle Meldungen, Filteraktionen und Filterübereinstimmungen protokollieren
Die Nachrichten werden im Protokollfenster von Claws Mail protokolliert. Die Standardprotokollebene ist 2. Protokollebene
3 wird nicht empfohlen, da die Matcher-Funktionen eine Nachricht protokollieren, wenn sie erfolgreich waren, und
Daher erhalten Sie bei negativen Überprüfungen verwirrende Einträge. Wenn du den Überblick behalten willst
des Matchings, tun Sie es manuell mit "filter_log" oder tun Sie es, indem Sie den Matcher vorübergehend aktivieren
Protokollierung mit "filter_log_verbosity".
Wenn Sie dieses Plugin zum ersten Mal entladen (oder Claws Mail herunterfahren), wird ein Abschnitt namens
[PerlPlugin] wird in der Konfigurationsdatei von Claws Mail erstellt Klauenrc, enthält eine
Variable:
* filter_log_ausführlichkeit
Wenn Sie das Standardverhalten ändern möchten, können Sie diese Zeile bearbeiten. Stellen Sie sicher, dass Claws Mail
läuft nicht, während Sie dies tun.
Es wird möglich sein, über die GUI auf diese Einstellungen zuzugreifen, sobald ich die Zeit dazu finde
ein entsprechendes GTK-Plugin schreiben, oder jemand anderes ist daran interessiert, dazu beizutragen.
BEISPIEL
Dieser Abschnitt listet ein kleines Beispiel für eine Perl-Skriptdatei auf. Ich bin sicher, Sie haben die Idee..
#-8<---------------------------------------------------------- ------
# -*- Perl -*-
# lokale Funktionen
# Lernen Sie Ham-Nachrichten und verschieben Sie sie in den angegebenen Ordner. Das ist
# nützlich, um sicherzustellen, dass ein Bayes-Filter auch Schinken erkennt.
sub learn_and_move {
execute('Befehl eingeben, um Ham hier zu lernen');
Bewegung(@_);
}
# Zweistufiger Spamfilter. Jede E-Mail mit einer Punktzahl von mehr als 15
# auf SpamAssassin wird in den Standard-Papierkorb verschoben.
# Alle Mails niedriger als die, aber höher als die von SpamAssassin
# 'required_hits' gehe in #mh/mail/Spam.
Unter Spamcheck {
mein $sicher_spam = 15;
mein $Dateipfad = Dateipfad;
mein $spamc = `spamc -c < $Dateipfad`;
my ($value,$threshold) = ($spamc =~ m|([-.,0-9]+)/([-.,0-9]+)|);
if($value >= $surely_spam) {
als gelesen markieren;
Ab in den Müll;
}
if($value >= $threshold) {mark_as_read; '#mh/mail/Spam' verschieben;}
}
# Die Ausführung des Perl-Skripts beginnt hier.
# Einige spezielle Sortierungen
learn_and_move '#mh/mail/MailLists/Claws Mail/Benutzer'
if matchcase('sender','[E-Mail geschützt] ');
learn_and_move '#mh/mail/MailLists/Sylpheed'
if matchcase('list-id','sylpheed.good-day.net');
# Implementieren Sie eingehende Ordner mithilfe des Adressbuchs
# Attribute. Zielordner für bestimmte E-Mail-Adressen sind
# direkt im Adressbuch gespeichert. Auf diese Weise, wenn eine E-Mail
# Adressänderungen, wir müssen nur das Adressbuch aktualisieren, nicht
# die Filterregeln! Außerdem können wir die
# Filterskript.
# die E-Mail-Adresse im Von-Header abrufen
mein $fromheader = header "von";
my ($from) = Extract_addresses $fromheader;
# Überprüfe, ob diese E-Mail-Adresse ein zugehöriges Attribut hat
# heißt "incomming_folder". Wenn wenn hat, der Wert von this
#-Attribut soll der Zielordner sein.
mein $value = get_attribute_value $from, "incomming_folder";
learn_and_move($value) wenn $value;
# Ein Beispiel für eine Whitelist: Wenn die Absenderadresse in meinem
# Adressbuch "office", verschiebe die E-Mail in den Ordner #mh/mail/office
learn_and_move '#mh/mail/office' if from_in_addressbook("office");
# Wenn sich die Von-Adresse in einem anderen Adressbuch befindet, verschieben Sie die
# Mail an Ordner #mh/mail/inbox/known
learn_and_move '#mh/mail/Posteingang/bekannt' if from_in_addressbook;
# Füttern Sie die restlichen Mails durch SpamAssassin.
Spamcheck;
# Mails, die es bis zum Ende des Skripts schaffen, werden weitergeleitet an
# die interne Filtermaschine. Wenn die internen Regeln nicht sagen
# Andernfalls landen die Mails im Standard-Posteingang.
#-8<---------------------------------------------------------- ------
Verwenden Sie den Claws-Mail-Perl-Filter online mit den onworks.net-Diensten