web-dev-qa-db-ja.com

メールボックスファイルからのメールの処理/ソート?

getmailによって作成されたメールボックスファイル( "Mboxrd")を取得しました。さまざまな(グループの)送信者からのメールを並べ替えて「処理」し、それらを別々のメールボックスファイルに移動したいと思います(今のところ3-5だと思います)。理想的には、このように移動されたメールメッセージは、元のメールボックスファイルから削除する必要があります。

私はおそらくメールを送信者アドレスで分類したいと思うでしょう-それを件名(つまり特定の単語/フレーズ)で分類できることも素晴らしいでしょう...

さて、これが私のコンピューターMTAで受信したばかりのメッセージだった場合、またはMTAにメールを配信するようにgetmailを設定した場合、通常の方法でprocmailを使用できると思います。 ..しかし、私が得たのは、すでにメールメッセージが保存されている「デッド」ファイルであるため、それはオプションではありません。 MTAを介してメールを送信できると思いますが、(ファイル内で)メールをそのまま処理する方法は確かにあるはずですか?

それで、送信者に基づいて、メールボックスファイル内のメールを他のいくつかのメールボックスファイルに「ソート」できるプログラムまたはコマンド(またはprocmailまたは同様のコマンドに対するいくつかの特別なオプション)はありますか?メッセージの件名?小さな例(設定ファイルなど)もありがたいです...

1
Baard Kopperud

formail -sメソッドは、デモスクリプトで procmail manページ ;に記載されています。このフレーズを探してください:

Procmailを呼び出して、すでにいっぱいになっているシステムメールボックスを後処理することもできます。

これは http://www.iki.fi/era/procmail/mini-faq.html#split にもあります。

メールボックスがBerkeleymboxの単一ファイルでない場合は、各ファイルが個別のメッセージであるディレクトリがある可能性があります。この場合、あなたはそれを簡単に処理することができます

for f in folder/*; do
    procmail -options <"$f"
    # maybe rm "$f" to remove the original after processing completes
done

送信者でフィルタリングする方法の例として、簡単なレシピは次のようになります。

# If your mailbox destination is maildir, no locking is required
:0:  # so you could lose the second colon here, and in subsequent examples
* ^From:.*\<alice@example\.com\>
alice

:0:
* ^From:.*\<bob@example\.net\>
bob

など。これは、通常「送信者」が意味する「From:」ヘッダーを調べますが、一般的に使用されている他の2つのフィールド(通常はReturn-Path:にあるエンベロープ送信者と実際のSender:ヘッダーはオプションですが、From:ヘッダーが実際の送信者ではない場合、送信ソフトウェアによって頻繁に入力されます)。

同様に、Subject:で分類するには、キャプチャするサブジェクトに一致する正規表現を指定するだけです。

:0:
* ^Subject: *((Fwd?|Re): *)*\[gunk]
gunk-list

ラベル[gunk]を含み、オプションで空白および/またはRe:および/またはFw:および/またはFwd:が前に付いた件名ヘッダーを持つメッセージを検索します。

3
tripleee

メールボックスファイルがmbox形式であると仮定すると、procmailに付属のformailユーティリティを使用して、各メールに対してコマンドを実行できます。-sオプションを使用すると、入力がメールボックスだけでなく、単一のメール。 procmailルールを適用する場合、そのコマンドはprocmailにすることができます。または、標準入力でメールを受信し、それを使ってやりたいことを実行する他のコマンドにすることもできます。

formail -s procmail <Mboxrd && mv Mboxrd Mboxrd.done

別のアプローチは、メールボックスをmuttにロードし、いくつかのマクロを適用することです。これには、メールボックス形式に依存しないという利点がありますが、muttマクロが不可知論的である可能性があるという欠点があります(ただし、procmailルールよりも不可知論的である必要はありません)。 muttを使用するもう1つの利点は、一度に1つのメールを移動できるため、途中で中断された場合でも、中断したところから再開できることです。