リモートIMAPアカウントでメールをフィルタリングする方法はありますか?


9

状況:IMAPのみのアクセス権を持つメールサーバー。問題:メールをフィルタリングできるようにしたい(いくつかのメールをさまざまなフォルダに入れ、それらを既読としてマークするなど)。

ほとんどの新しい電子メールクライアントにはこの機能がありますが、このサーバーに接続するにはさまざまな電子メールクライアントを使用する必要があるため、スタンドアロンのフィルタリングプログラムが必要です。

一般的に-procmailのようなものですが、IMAPで動作します。

ソフトウェアはLinuxまたはSolarisで実行されます。


回答:


8

簡単なグーグルはそれがあなたが望むことをするように見えるIMAPFilterを投げます:

  • IMAPプロトコルで次のような多くの利用可能な基準を使用してメッセージを検索します。
    • メッセージのステータス(最近、未読など)。
    • メッセージのサイズ。
    • メッセージの時代。
    • ヘッダーまたはメッセージ本文の文字列または正規表現パターンのマッチング。
  • メッセージの検索中に論理演算子(および/または/ではない)を使用する機能。
  • メッセージの処理に使用できるさまざまな機能には、次のものがあります。
    • メッセージを削除しています。
    • 同じサーバーまたは異なるサーバーのメールボックスへのメッセージの移動
    • 同じサーバーまたは異なるサーバーのメールボックスにメッセージをコピーする。
    • メッセージのマークまたはメッセージフラグの変更。
  • IMAP CHILDREN拡張のサポートとともに、使用可能なメールボックスとサブスクライブされたメールボックスのリスト。
  • メールボックスの作成、削除、名前変更、購読、または購読解除
  • 国際化(I18N)サポート。
  • IMAP NAMESPACE拡張を使用したサーバー名前空間のサポート。
  • Secure Socket Layer(SSL)またはTransport Layer Security(TLS)暗号化imap(ポート993)接続。
  • IMAP STARTTLS拡張を使用した暗号化接続。
  • チャレンジ/レスポンス認証メカニズム(CRAM)、特にCRAM-MD5によるユーザー認証。
  • Perl互換正規表現(PCRE)のサポート。

1

IMAPサーバーによっては、単にsieveの実装を使用することもできます。ふるいに対する最高のサポートはcyrusによって提供されると思います。


まあ-私が探しているソリューションは、サーバーに依存することはできません。私は、サーバーが単純なIMAPであり、スマートなものに対するサポートがないと仮定する必要があります。

1

すでに述べたように、procmailはこれを行うための正しい方法であるため、万が一に備えてメールプロバイダーにサポートを依頼することもできます。

それ以外の場合は、おそらく最も簡単な方法は、並べ替えなどを行う電子メールクライアントを常に開くことです。以前は、同じIMAPメールボックスにアクセスする複数のクライアントでロックの問題がありましたが、私は何年も見ていません。


これは答えではありません。フィルタリングはIMAPサーバーで行う必要があり、IMAPサーバーでは制御できません。
reinierpost 2014

1

完全な軽量化のために、Siftを試してみることができます。


私はこれをimapfilterの前に試してみたかったです。
ジョシュアK

これは、imapfilterとは異なり、放棄され維持されていないようです。私が間違っていたら訂正してください。
selurvedu

1

さらに別の方法は、ruby gem imap-filterを使用することです。

https://github.com/flajann2/imap-filter/blob/master/README.org

そしてDSLの例、

https://github.com/flajann2/imap-filter/blob/master/examples/default.imap

DSLはRubyベースですが、DSLを使用するために多くのRubyを知っている必要はありません。著者は近い将来により多くの例を提供することを約束し、機能のリクエストとプルリクエストを受け入れます。


0

LinuxおよびUnixオペレーティングシステムでは、を使用fetchmailしてIMAP電子メールアカウントをポーリングし、新しいメッセージをに渡すことができますprocmail。受信したメッセージの正規表現パターンの一致に基づいてスクリプトを実行するようにprocmailを構成できます。

これを行うには、fetchmailおよびprocmailパッケージをインストールする必要があります。次の構成では、新しい電子メールメッセージが私の電子メールアカウントで受信されるたびにスクリプトを実行できました。Ubuntu 12.04 LTSを使用しました。

~/.fetchmailrc

# .fetchmailrc checks my e-mail account for new messages, sends them to procmail

set logfile /home/myusername/fetchmail.log

poll mail.domain.com protocol IMAP
    user "emailaccountname"
    password 'emailpassword'
    folder 'INBOX'
    keep
    ssl
    mda "/usr/bin/procmail -f %F"

keep上記のディレクティブに注意してください。これにより、メッセージが取得された後にIMAPサーバーから削除されなくなります。

~/.procmailrc

# .procmailrc received e-mails from fetchmail and runs a script
PATH=/usr/bin:/usr/local/bin
LOGFILE=/home/username/procmail.log
SHELL=/bin/sh

# This rule triggers for every e-mail message:
:0
| `/home/username/myscript.sh`

fetchmailとprocmailに関するオンラインのチュートリアルはたくさんあります。また、2つを統合する方法のチュートリアルもあります(そのようにして、上記を思いつきました)。

ここで、実行するfetchmailfetchmail -v/home/username/myscript.sh新しいメッセージごとにスクリプトを1回実行します。私はcronでfetchmailを実行するか、set daemon 600ディレクティブをでデーモンとして実行するようにfetchmailを構成できます.fetchmailrc(600はポーリング間の秒数です)。


これは答えではありません。フィルタリングはIMAPサーバーで行う必要があります。
reinierpost 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.