web-dev-qa-db-ja.com

procmailまたはmaildropを使用して日付でメールを整理する

すべての受信メールを、メールの日付に基づいて次のディレクトリ構造に整理したいと思います。

ROOT --+-- YYYYMMDD --+-- HH --+-- mm --+-- YYYYMMDD-HHmmSS-000001
       |              |        |        |
       |              |        |        |      ....
       |              |        |        |
       |              |        |        +-- YYYYMMDD-HHmmSS-NNNNNN
       |              |        +-- mm --
       |              +-- HH --+-- mm -- 

各電子メールは個別のファイルとして保存され、ファイルの名前はYYYYMMDD-HHmmss-NNNNNであることに注意してください。ここで、NNNNNは実行番号です。

Procmailまたはmaildropはこれを行うことができますか?そうでない場合、他にどのようなオプションがありますか?

前もって感謝します。

2
kjloh

私はあなたが望むすべてを満足させる答えを持っていませんが、その一部を持っています。メール自体の日付ヘッダーの代わりにメールが到着した日付を使用するだけで十分であり、日付ごとに1つのフォルダーでも十分な場合は、maildropを使用してこれを行うことができます。

DEFAULT="$HOME/Maildir"
MAIL = "$HOME/Maildir"
DAY = `date +%d`
MONTH = `date +%m`
YEAR = `date +%y`
ARCHIVEFOLDER = $YEAR$MONTH$DATE
`test -d $MAIL/.$ARCHIVEFOLDER`
if ( $RETURNCODE != 0 )
{
`maildirmake -f $ARCHIVEFOLDER $MAIL`
}
# logfile "/tmp/maildrop"
# log $MAIL/.$SPAMORDNER
to $MAIL/.$ARCHIVEFOLDER
}

これを積み上げていただければ幸いです。

2
fschmitt

いくつかのPythonを知っているなら、それはかなり些細な練習になるはずです:

Pythonには、標準ライブラリに電子メールパッケージが付属しており、テキストファイルから電子メールを自動的に読み取ることができます 使用可能なオブジェクトに解析します 。それらを解析した後、それに応じて出力することができます(各メッセージには「as_string」メソッドがあります)。

基本的な構造は次のようになります。

  1. ファイルを繰り返し処理します
  2. 各ファイルを開き、電子メールオブジェクトに解析します
  3. 日付を取得し、必要なフィールドに分割します
  4. ターゲットファイルハンドルを開きます(実行番号は最後の番号+1または1です)
  5. msg.as_string()をファイルに書き込みます
1
tante