ImapFilter-強力なメール並べ替えツール

仕事では、毎日たくさんの手紙で仕事をしなければなりません。そして、重要な情報を見失うことがないように、それらを分類する必要があります。 最初は、構成されたThunderbirdは稼働中のマシンでこのタスクを完全に処理しましたが、仕事中だけでなく、自宅や他の場所でも、つまり希望と機会があれば便利な場所でメールをチェックしたかったのです。 特定のサーバーソリューションについての考えが現れ始めました。 「すべてが既に私たちに盗まれている」と思われるでしょう(c)-大量のfetchmail + procmail +(exim / postfix / sendmailなど)+ muttは非常に機能しており、十分に証明されていますが、そのような強力な電子メールプログラムのすべての機能は必要ありませんでしたが、ミニマリズム、シンプルさ、機能性が欲しかった。



ご存知の方も多いと思いますが、muttは最初はimapプロトコルを使用してメールサーバーを操作でき、独自のすばらしいメールをチェックします(つまり、fetchmailは不要になります)。また、サードパーティのsmtp-サーバー(MTAも必要ありません)、メールフィルタリングの問題を解決するためだけに残ります。 そして、ここで彼は救助に来ます-imapfilter。



Imapfilterは、その名前が示すように、IMAPを使用してメールサーバーに接続することによりメールをフィルタリングします。 このプログラムの可能性は真に無限であり、その助けによりほぼすべてを行うことができます(フォルダーの作成/削除/変更、文字のフィルター/コピー/移動/削除、さまざまなフラグの設定、文字の並べ替えと検索など)。



プログラムの構成ファイルは、lua言語で書かれたルールのセットです(構成の典型的な例を見て、マニュアルを調べた後、独自のルールを書くのに問題はないはずです)。



だから、少し基本的なセットアップ手順。


debianのようなシステムがあるとします。 imapfilterパッケージを配置します。



$ sudo apt-get install imapfilter
      
      





インストール後、ホームディレクトリに.imapfilterフォルダーを作成し、その中に「config.lua」という構成ファイルを作成します。



 $ mkdir ~/.imapfilter $ touch ~/.imapfilter/config.lua
      
      





それでは設定の編集を始めましょう。 標準のNanoをエディターにします。



 $ nano ~/.imapfilter/config.lua
      
      





構成ファイル内の「-」で始まるものはすべてコメントと見なされるため、処理されません。



 --  ( ),         -- timeout = 120 -- ,         (, imap-) -- options.namespace = false --    -- account_name = IMAP { server = 'mailserver.ru', username = 'your_login', password = 'your_pass', }
      
      





ここで、必要に応じて、フィールド「ssl」と「port」を追加して、必要な値を入力できます。

次に、フォルダのリストを決定し、受信メールがあるディレクトリの現在のステータスを確認します。



 mailboxes, folders = account_name:list_all() account_name:check_status()
      
      





「list_all()」オプションは、メールボックス内の使用可能なすべてのディレクトリとサブディレクトリのリストを返し、 「check_status()」オプションは、メールボックス内のメッセージ数、送信数、未読数に関する情報を提供します(フィルタリングが必要になる前)メールをレイアウトするために必要なすべてのディレクトリが既に作成されていることを確認してください。または、create_mailbox関数を使用して新しいディレクトリを作成できます。

次に、「results」変数を定義します。これは、今後メールをフィルタリングするために使用します。



 results = account_name.INBOX:select_all()
      
      





これで、ルールに直接アクセスできます。 大まかに言えば、一般的なルールは次のようになります。



 res = results:contain_subject('hello') res:move_messages(account_name.folder)
      
      





ここで:



送信者( contains_from )、受信者( contains_to )、件名( contains_subject )、「コピー」フィールド( contains_cc )、サイズ( is_largerおよびis_smaller )、日付( is_olderなど)でメッセージをフィルターできます一定の日数)およびその他のパラメーターの束(ページの下部にあるリンクを参照)。



文字をフィルタリングした後、コピー( copy_messages )、移動( move_messages )、既読/未読/削除などのマークを付け、削除( delete_messages )できます。



たとえば、user @ domain.ruからの手紙が「Inbox」ディレクトリの「user」フォルダーにコピーされ、件名が「Hello、world」の手紙が「spam」フォルダーに移動し、すべての手紙が作業フォルダー内の10日より古いものは削除されます。



 res = results:contain_from('user@domain.ru') res:copy_messages(account_name.user) -- res = results:contain_subject('Hello, world') res:move_messages(account_name.spam) -- old = account_name.work:is_older(10) account_name.work:delete_messages(old)
      
      





フィルタリングプロセスでは、複数の条件を同時に使用できます。これは、論理演算子「+」 (論理「OR」)、 「*」 (論理「AND」)、および「-」 (論理「NOT」)を使用して実装されます。



 res = results:contain_subject('Hello, world')+ results:contain_from('user@domain.ru') res:move_messages(account_name.spam)
      
      





さらなる類推は明らかだと思います。 Imapfilterは、メールボックスのサブディレクトリ(たとえば、Inbox / work / 1またはInbox / work / 2)でも機能します。 この場合、レターに対してアクションを実行すると、このサブディレクトリへのパスの記録はわずかに異なります。



 res:move_messages(account_name['work/1'], results)
      
      





原則として、この知識はすでにほとんどのタスクのメールをソートするのに十分です。 設定が完了したら、それに応じてアクセス権を設定する必要があります。700を.imapfilterディレクトリに、600を構成ファイルに設定します。



 $ chmod 700 ~/.imapfilter $ chmod 600 ~/.imapfilter/config.lua
      
      





すべての設定が完了したら、デバッグモードでimapfilterを実行し、次のキーでログを書き込みます。



 imapfilter -l logfile.log -d
      
      





対応する名前のログファイルと「Debug。*****」という名前のファイルがプログラムのホームフォルダーに表示され、プログラムのアクションに関するすべての情報が含まれます。そこで、どのルールとそれがどのように機能したかを確認できます。



最後に、crontabに行を追加します



 * * * * * imapfilter
      
      





フィルターが毎分実行され、メールを適切なフォルダーにきれいに配置します。



ここでは、構成ファイルで使用可能なすべてのオプションとパラメーターを見つけることができます。



それだけです、ご清聴ありがとうございました。



All Articles