これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド claws-mail-perl-filter です。
プログラム:
NAME
cm_perl -- Claws Mail 用の Perl プラグイン
DESCRIPTION
このプラグインは、メール クライアント Claws Mail 用の拡張フィルタリング エンジンを提供します。 それ
メール フィルタで Perl の機能をフルに活用できます。
QUICK 開始
開始するには、 matcherrc2perlfilter.pl のスクリプト 豊富なツール群-ディレクトリへ
古いフィルタリング ルールを Perl に変換します。 スクリプトを実行して、
手順。 (最近のバージョンの Claws Mail では、このスクリプトが機能しない可能性があることに注意してください
アップストリームの構文変更によるものです。 これは将来的に更新されます。 場合は私にメールを送ってください
始めるのに問題があります)。
ただし、このマニュアルの残りの部分を読んで、
このスクリプトによって生成される Perl コードは
まさにきれい。
Perlを話さないのですか? 問題ありません。「perldoc perlintro」で十分な情報が得られるはずです。
ファンシーなもの。
USAGE
Perl プラグインは、Perl スクリプト ファイルを想定しています。 perl_filter Claws Mail の設定で
ディレクトリ (通常は $HOME/.claws-mail -- 不明な場合は `claws-mail --config-dir' を試してください)。
プラグインの開始時にそのファイルが存在しない場合は、空のファイルが作成されます。 このファイルは、
sha-bang で始める必要はありません (!#/bin/perl)。
メールフィルター。 マナーを守るために、コードは「use strict;」で実行されます。
環境。
両爪メールのフィルタリング 条件 行動 でPerl関数にマッピングされます
可能な限り、対応する名前。
FUNCTION リスティング
詳細な機能の説明については、以下のセクション「機能の説明」を参照してください。
標準フィルタリング条件
すべて、マーク済み、未読、削除済み、新規、返信済み、
転送、ロック、ignore_thread、colorlabel、
マッチ、マッチケース、正規表現、S
size_greater、size_smaller、size_equal、
score_greater、score_lower、score_equal、age_greater、
age_lower、部分的、タグ付き
標準フィルタリング アクション
マーク、マーク解除、削除、mark_as_unread、mark_as_read、
ロック、ロック解除、移動、コピー、色付け、実行、
非表示、set_score、change_score、停止、転送、
forward_as_attachment、リダイレクト、set_tag、unset_tag、
クリアタグ
楽しいもの
ヘッダー、本文、ファイルパス、extract_addresses、
move_to_trash、中止、addr_in_addressbook、
from_in_addressbook、get_attribute_value、SA_is_spam、
終了、手動、make_sure_folder_exists、
filter_log、filter_log_verbosity、
make_sure_tag_exists
FUNCTION 説明
一般に、Perl スクリプトによって呼び出されたフィルタリングの後、メールは次の場所に渡されます。
Claws の内部フィルタリング エンジン、 ない限り、 a ファイナル ルールがヒットしました。 最終規則は停止するだけでなく、
発生した時点で Perl フィルタリング スクリプトを処理するだけでなく、処理を防止します。
その電子メールは、Claws の内部フィルタリング エンジンによって作成されました (これは混乱を招くように聞こえるかもしれませんが、あなたは
標準フィルターからのその概念にすでに精通しています。 d,
以下の規則は適用されなくなりました)。
また、引用の仕方にも気をつけてください。 特に、@ 記号には
Perl では特別な意味を持ち、二重引用符内で補間されます。 「引用と引用-
クォートと補間についてさらに学ぶには、perlop の Operators のようなものを参照してください。
スタンダード フィルタリング の賃貸条件
すべて真の値を返します。 完全性のためにのみ利用可能です。
マークされたフラグが設定されている場合は true 値を返し、それ以外の場合は false を返します。
unread 未読フラグが設定されている場合は true 値を返し、それ以外の場合は false 値を返します。
削除されたフラグが設定されている場合は true 値を返し、それ以外の場合は false 値を返します。
new new フラグが設定されている場合は true 値を返し、それ以外の場合は false 値を返します。
返信済み 返信済みフラグが設定されている場合は true 値を返し、それ以外の場合は false 値を返します。
転送
forwarded フラグが設定されている場合は true 値を返し、それ以外の場合は false を返します。
locked locked フラグが設定されている場合は true 値を返し、それ以外の場合は false 値を返します。
スレッドを無視
「Ignore Thread」フラグが設定されている場合は true 値を返し、それ以外の場合は false を返します。
カラーラベル COLOR
カラーラベル
メッセージの色が COLOR の場合、真の値を返します。 COLOR は数値のいずれかです
0 ~ 7 の値 (内部フィルタリングに対応する色)
エンジン)、またはフィルタリング ダイアログで導入される英語の色名
(つまり、なし、オレンジ、赤、ピンク、空色、青、緑、または茶色のいずれか、
大文字と小文字は区別されません)。 COLOR を省略した場合は 0 (なし)
想定。
size_大きいサイズ
メッセージ サイズが SIZE より大きい場合は true 値を返し、それ以外の場合は false 値を返します。
サイズ_小さいサイズ
メッセージ サイズが SIZE より小さい場合は true 値を返し、そうでない場合は false 値を返します。
size_equal SIZE
メッセージ サイズが SIZE と等しい場合は true 値を返し、そうでない場合は false 値を返します。
score_greater スコア
メッセージ スコアが SCORE より大きい場合は true 値を返し、それ以外の場合は false 値を返します。
score_lower スコア
メッセージ スコアが SCORE より低い場合は true 値を返し、それ以外の場合は false を返します。
score_equal スコア
メッセージ スコアが SCORE と等しい場合は true 値を返し、そうでない場合は false を返します。
age_大きい年齢
メッセージの経過時間が AGE より大きい場合は true 値を返し、それ以外の場合は false 値を返します。
age_lowerAGE
メッセージの経過時間が AGE よりも低い場合は true 値を返し、それ以外の場合は false を返します。
partial メッセージが部分的にしかダウンロードされていない場合は true、false を返します。
さもないと。
tagged メッセージに XNUMX つ以上のタグがある場合に真の値を返します。
test 'test' 内部フィルタリング ルールに対応します。 特に、それは同じを受け入れます
記号、すなわち:
%%%
%s 件名
%f から
%t 宛先
%c CC
%d 日付
%i メッセージ ID
%n ニュースグループ
%r 参照
%F ファイル名 -- 変更しないでください
どこで何に一致
どこで何を
正規表現 どこ 何
regexpcase どこで 何を
マッチング関数には特別な構文があります。 最初の引数は、次のいずれかです。
to_or_cc、body_part、headers_part、headers_cont、メッセージ、to、from、件名、cc、
ニュースグループ、inreplyto、参照、またはタグ (これらの文字列は、
引用)、パターン マッチングはその領域で動作します。 他の文字列の場合 (
は引用符で囲む必要があります)、この文字列はヘッダー フィールドの名前と見なされます。
XNUMX 番目の引数は、検索する文字列です。 match、matchcase、regexp および
regexpcase 大文字と小文字を区別する通常のマッチング、大文字と小文字を区別しない通常のマッチングがあります
一致、大文字と小文字を区別する正規表現の一致、および大文字と小文字を区別しない正規表現
それぞれ表現パターンマッチング。
関数は、パターンが見つかった場合は true を返し、そうでない場合は false を返します。
組み込みのフィルタリング エンジンと同様に、メッセージ本文が検索され、
そのまま提供 - 文字セット分析は行われません。 同様に、HTML タグはありません。
剥ぎ取られた。 これらのために外部モジュールまたはプログラムを使用できるはずです
タスク。 あなたがそうしているなら、あなたの経験を私にメッセージを送ってください。
Perl はパターン マッチングに強みがあるため、Perl の組み込み演算子を使用します。
通常、これらの関数を使用するよりも優れたオプションです。
スタンダード フィルタリング
アクションは、成功すると真の値を返し、エラーが発生すると「undef」を返します。 終
メッセージルールが表示されます。 (最終的なルールとは何かについては、上記を参照してください)
mark メッセージをマークします。
unmark メッセージのマークを解除します。
dele メッセージを削除します。 Claws Mail の "delete" が "dele" に名前が変更されていることに注意してください。 これ
これは、"delete" が再定義できない Perl の組み込みコマンドの XNUMX つであるためです。
(できる場合は、方法を教えてください)。
これは ファイナル ルール。
既読にする
メッセージを既読にする
未読としてマーク
メッセージを未読にする
ロック メッセージをロックする
ロック解除 メッセージロックを解除します
DESTINATIONを移動
メッセージをフォルダー DESTINATION に移動します。 フォルダ表記はClawsと同じ
メールを使用します。 通常のフィルタリングの移動ダイアログからコピー&ペーストできますが、
表記に慣れるまで。
これは ファイナル ルール。
宛先をコピー
メッセージをフォルダー DESTINATION にコピーします。 フォルダ表記はClawsと同じ
メールを使用します。 通常のフィルタリングの移動ダイアログからコピー&ペーストできますが、
表記に慣れるまで。
コマンドを実行
これは、セクション「標準フィルタリング条件」のテスト - ルールと同じです。
ただし、常に真の値を返します。
hide メッセージを隠す
set_score スコア
メッセージ スコアを SCORE に設定する
change_score スコア
SCORE ごとにメッセージ スコアを変更する
この時点で Perl スクリプトを停止します。 これは 最終的なルール、つまり
電子メールは内部フィルタリング エンジンに渡されます。 以下の「中止」を参照してください。
あなたはそれを望んでいません。
アカウント、メールを転送
アカウント ID ACCOUNT を送信者として使用して、メール アドレス EMAIL にメッセージを転送します
アカウント。 これまでのところ、通常のフィルタリング エンジンでルールを作成して検索する必要があります。
その数を出します。
forward_as_attachment、アカウントの電子メール
アカウント ID を使用して、添付ファイルのメール アドレス EMAIL にメッセージを転送します
送信者アカウントとして ACCOUNT。 これまでのところ、通常のルールを作成する必要があります
その数を見つけるためのフィルタリングエンジン。
アカウント、メールアドレスをリダイレクト
アカウント ID ACCOUNT を送信者アカウントとして使用して、メッセージを EMAIL にリダイレクトします。 それで
これまでのところ、通常のフィルタリング エンジンでルールを作成して、それを確認する必要があります。
数。
set_tag タグ
タグ TAG を適用します。 タグが存在する必要があります。
unset_tag タグ
タグ TAG の設定を解除します。
クリアタグ
すべてのタグをクリアします。
楽しいです スタッフ
機能
ヘッダー ARG
header ARG が指定されていない場合、メールのすべてのヘッダー フィールド名のリストを返します。
ARG が指定されている場合、ヘッダー フィールド ARG が
Eメール。 それ以外の場合は、戻ります
スカラーコンテキストで
ヘッダー フィールド ARG の値。
リストコンテキスト内で
使用可能なすべてのヘッダー フィールド値のリスト。 これは、ヘッダー フィールドが
電子メールで複数回発生します (例: Received - ヘッダー)。
ヘッダー フィールド "References" は特別なケースを形成します。 スカラー コンテキストでは、
最初の参照を返します。 リストコンテキストでは、すべてのリストを返します
参照。
body メール本文をスカラーで返します。
ファイルパス
現在フィルタリングされている電子メールのファイルとパスを返します (に対応します
'test' ルールの %F 引数)。
抽出アドレス
文字列から電子メール アドレスを抽出し、見つかったアドレスのリストを返します。
現在、メールアドレスは正規表現を使用して検索されています
'[-.+\w]+\@[-.+\w]+'. これは、すべての有効な電子メール アドレスを見つけるわけではありません。 お気軽に
より良い正規表現を送ってください。
ゴミ箱に移動
電子メール メッセージを既定のごみ箱フォルダーに移動します。
これは ファイナル ルール。
この時点で Perl スクリプトを停止します。
「停止」とは対照的に、これは ファイナル ルール。
addr_in_addressbook EMAIL、ADDRESSBOOK
addr_in_addressbook 電子メール
電子メール アドレス EMAIL がアドレス帳にある場合、真の値を返します。
アドレス帳に名前を付けます。 ADDRESSBOOK が指定されていない場合、電子メール アドレスの場合は true を返します。
は任意のアドレス帳にあります。
from_in_addressbook アドレスブック
アドレス帳内のアドレス帳から
Fromヘッダーで見つかった電子メールアドレスがアドレス帳ADDRESSBOOKにあるかどうかを確認します
(省略された場合は任意)。 として実装されています
my ($from) = extract_addresses(header("from"));
$from でない限り 0 を返します。
return addr_in_addressbook($from,@_);
したがって、extract_addresses と同じ制限が適用されます。
get_attribute_value EMAIL、ATTRIBUTE、ADDRESSBOOK
get_attribute_value EMAIL、ATTRIBUTE
アドレス帳 ADDRESSBOOK (省略した場合はすべてのアドレス帳) を調べて、
メールアドレスEMAILでご連絡ください。 見つかった場合、関数はこれが
contact には、ATTRIBUTE という名前のユーザー属性があります。 これの値を返します
属性、または見つからない場合は空の文字列。 いつものように、「undef」が返されます
エラーが発生した場合。
SA_is_スパム
のエイリアスです
'spamc -c < %F > /dev/null' をテストしない
exit 'stop' のエイリアスとして再定義されました。 Perl 独自の「exit」を使用しないでください
これは Claws Mail を終了するためです。
manual フィルター スクリプトが手動で、つまり、
ツールメニュー。
make_sure_folder_exists 識別子
IDENTIFIER (例: #mh/Mail/foo/bar) を持つフォルダーの場合、真の値を返します。
存在するか、作成される可能性があります。
make_sure_tag_exists タグ
タグ TAG が存在するか作成できる場合は、真の値を返します。
filter_log セクション、テキスト
filter_log テキスト
TEXT をフィルタ ログ ファイルに書き込みます。 SECTION は次のいずれかです。
・「LOG_MANUAL」
・「LOG_MATCH」
・「LOG_ACTION」
SECTION を省略した場合は「LOG_MANUAL」とみなされます。
filter_log_verbosity 冗長性
filter_log_verbosity
現在のメールのフィルタ ログの冗長性を変更します。 VERBOSITY は次のいずれかでなければなりません
0 黙って
1 ログ MANUAL タイプ
2 ログアクションタイプ
3 ログ MATCH タイプ
これらの数値の意味については、セクション「LOGGING」を参照してください。 VERBOSITY を省略すると、
フィルタ ログ ファイルの冗長性は変更されません。
この関数は、変更前の filter_log_verbosity 番号を返します (存在する場合)。
変数
$永久
このスカラーは、フィルタリングされたメール メッセージ間でその値を保持します。 プラグインの開始時には、
空文字列に初期化されます。
ロギング
フィルタリング中にメールに何が行われたかを追跡するために、プラグインはサポートしています
ロギング。 次の XNUMX つの詳細レベルが認識されます。
0 ロギング無効
1 手動メッセージのみをログに記録します。つまり、「filter_log」コマンドによって導入されたメッセージです。
フィルタ スクリプト
2 手動メッセージをログに記録し、アクションをフィルター処理する
3 ログの手動メッセージ、フィルター アクション、およびフィルター マッチ
メッセージは Claws Mail のログ ウィンドウに記録されます。 デフォルトのログ レベルは 2 です。 ログ レベル
3 は推奨されません。マッチャー関数が成功した場合はメッセージをログに記録するためです。
したがって、否定的なチェックがあると、紛らわしいエントリが表示されます。 追跡したい場合
マッチングは、「filter_log」を使用して手動で行うか、マッチャーを一時的に有効にして行います
「filter_log_verbosity」を使用してログを記録します。
このプラグインを初めてアンロードする (または Claws Mail をシャットダウンする) と、
【Perlプラグイン】 Claws Mail の設定ファイルに作成されます 爪、XNUMX つを含む
変数:
* filter_log_verbosity
デフォルトの動作を変更したい場合は、この行を編集できます。 Claws Mailを確認してください
これを行っている間は実行されていません。
時間ができ次第、GUI からこれらの設定にアクセスできるようになります。
対応する GTK プラグインを作成するか、他の誰かがその貢献に興味を持っています。
実施例
このセクションでは、Perl スクリプト ファイルの小さな例を示します。 私はあなたがその考えを理解すると確信しています..
#-8<---------------------------------------------- ------
# -*- パール -*-
# ローカル関数
# ham メッセージを学習し、指定したフォルダに移動します。 これは
# ベイズ フィルターがハムも認識できるようにするのに役立ちます。
サブlearn_and_move {
execute('ハムを学ぶコマンドをここに入れる');
動く(@_);
}
# 15 段階のスパム フィルター。 スコアが XNUMX を超えるすべてのメール
# on SpamAssassin はデフォルトのごみ箱フォルダに移動されます。
# すべてのメールはそれより低いが、SpamAssassin のメールより高い
# 'required_hits' は #mh/mail/Spam に入ります。
サブスパムチェック {
私の $surely_spam = 15;
私の $filepath = ファイルパス;
my $spamc = `spamc -c < $filepath`;
my ($value,$threshold) = ($spamc =~ m|([-.,0-9]+)/([-.,0-9]+)|);
if($value >= $surely_spam) {
既読にする;
ゴミ箱に移動;
}
if($value >= $threshold) {mark_as_read; move '#mh/mail/Spam';}
}
# Perl スクリプトの実行はここから始まります。
# 特定のソート
learn_and_move '#mh/mail/MailLists/Claws Mail/user'
if matchcase('送信者','[メール保護]');
Learn_and_move '#mh/mail/MailLists/Sylpheed'
if matchcase('list-id','sylpheed.good-day.net');
# アドレス帳を使用して着信フォルダーを実装する
# 属性。 特定の電子メール アドレスのターゲット フォルダは
# アドレス帳に直接保存。 このように、メールの場合
# アドレスが変更された場合、アドレス帳を更新するだけで済みます。
# フィルターのルール! それに加えて、私たちは大幅に整頓することができます
# フィルタ スクリプト。
# fromヘッダでメールアドレス取得
my $fromheader = ヘッダー "from";
my ($from) = extract_addresses $fromheader;
# このメール アドレスに関連付けられた属性があるかどうかを確認します
# "incomming_folder" と呼ばれます。 もしあれば、これの値
# 属性が対象フォルダとなるはずです。
my $value = get_attribute_value $from, "incomming_folder";
Learn_and_move($value) if $value;
# ホワイトリストの例: 差出人アドレスが私の
# "office" アドレス帳、メールをフォルダ #mh/mail/office に移動
Learn_and_move '#mh/mail/office' if from_in_addressbook("office");
# 差出人アドレスが他のアドレス帳にある場合は、
# フォルダーへのメール #mh/mail/inbox/known
Learn_and_move '#mh/mail/inbox/known' if from_in_addressbook;
# 残りのメールを SpamAssassin にフィードします。
スパムチェック;
# スクリプトの最後まで到達したメールは に渡されます
# 内部フィルタリング エンジン。 社内ルールに記載がない場合
# そうしないと、メールはデフォルトの受信トレイに送られます。
#-8<---------------------------------------------- ------
onworks.net サービスを使用してオンラインで claws-mail-perl-filter を使用する