差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
imapfilter [2021/05/27 22:20] – 作成 skk | imapfilter [2021/05/27 22:27] (現在) – skk | ||
---|---|---|---|
行 1: | 行 1: | ||
= [[imapfilter]] | = [[imapfilter]] | ||
+ | ====== imapfilter ====== | ||
+ | imapfilter は,imap サーバに対して imap コマンドを発行することで振り分けを行うプログラム.上述の通り,lua というプログラミング言語を利用して,フィルタリングを行う. | ||
+ | |||
+ | 記述を間違った場合,実行の時点でエラーが吐かれるので,メール紛失の危険が少ない. | ||
+ | |||
+ | ===== 初期設定 ===== | ||
+ | |||
+ | $HOME/ | ||
+ | |||
+ | <file lua> | ||
+ | options.timeout = 300 | ||
+ | options.create = true | ||
+ | options.subscribe = false | ||
+ | options.expunge = true | ||
+ | options.namespace = false | ||
+ | |||
+ | mail2 = IMAP { | ||
+ | server = " | ||
+ | username = " | ||
+ | password = " | ||
+ | ssl = " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | options.create を指定しておくと,フィルターで存在しないフォルダが指定されている場合に,新規作成してくれる. | ||
+ | |||
+ | ===== ルール記述 ===== | ||
+ | |||
+ | フィルタルールに引っかかるメッセージの検索は,以下のように行う. | ||
+ | |||
+ | <code lua> | ||
+ | m = mail2[" | ||
+ | m: | ||
+ | </ | ||
+ | |||
+ | contain_to の部分が,メソッドのようなもので,色々な命令が存在する.現在,実際に利用したのは,以下. | ||
+ | |||
+ | | contain_to(" | ||
+ | | contain_cc(" | ||
+ | | contain_field(" | ||
+ | | match_from(" | ||
+ | | match_field(" | ||
+ | |||
+ | また,複数の命令を and / or で繋げることもできる.and で繋げる場合は * ,or で繋げる場合は + を使う.以下の例は,X-Redmine-Project と X-Redmine-Host の両方がマッチした場合に,メールを移動させる例になる. | ||
+ | |||
+ | <code lua> | ||
+ | m = mail2[" | ||
+ | * mail2[" | ||
+ | m: | ||
+ | </ | ||
+ | |||
+ | ===== 参考情報 ===== | ||
+ | |||
+ | * man imapfilter_config | ||
+ | * man ページ | ||
+ | * contain_to のような命令が大量に列挙されている. | ||
+ | * / | ||
+ | * daemon 化,関数,などについてのサンプル記述が大量に. | ||
+ | * [[https:// | ||
+ | * Cassiano Aquino という人のブログ. | ||
+ | * lua 言語の,変数,配列,ループ,などについての記述もあるので,もう少し複雑なことを行いたい時は,ここを参照するのが良さそう. | ||
+ | |