web-dev-qa-db-ja.com

procmail mdaを使用して、mhが読み取るファイルを配信するにはどうすればよいですか?

私はfetchmailを使用して電子メールをダウンロードし、配信にprocmailをmdaとして使用しています。 mhで使用するために配信したいのですが、procmailはmhが理解できない方法で配信しているようです。サブディレクトリnew/cur /とtmp /を取得し、ファイルはnew /に1484079635.67044_0のような名前が付けられています。ホスト名

これらのファイルの名前を整数に変更して1つのディレクトリに移動すると、mhはそれらを正常に取得します。これを自動的に実行できるようにし、最後のfetchmailの実行からのシーケンスを維持したいと思います。

fetchmail config:

set logfile /path/to/fetchmail.log
set no bouncemail

poll "imap.gmail.com"
protocol imap
username "USER"
password "PASSWORD"
fetchall
keep
ssl
mda "/path/to/procmail -m /path/to/.procmailrc"

procmail config:

LOGFILE=$HOME/procmail.log
VERBOSE=on
DELIVERED=yes
MAILDIR=$HOME/Mail/.
DEFAULT=inbox/
1
Angelo

あなたの_DEFAULT=inbox/_は、メールをMaildirメールボックス(サブディレクトリcurnew、およびtmp)に配信する必要があると言っています。このメールボックスは、MAILDIR変数に従って_$HOME/Mail/._にあります。

代わりにMHメールボックスに配信するには、DEFAULTを_inbox/._に設定する必要があります(末尾のドットに注意してください)。 MAILDIRは_$HOME/Mail_に設定できます。

要するに:

  • 最終的なメールボックスパスの最後には_/_があります:Maildirメールボックス
  • ...最後に_/._があります:MHメールボックス
  • ...上記のいずれもありません:通常のUnixmboxメールボックス。

procmailrc(5)マニュアルを参照してください。

3
Kusalananda

受け入れられた答えは正しいですが、私はいくつかのコメントと増幅を追加したいと思います。

あなたの質問は、MHとMaildirが1つの同じフォーマットであると信じていることを示唆しているようです。ではない; MHは従来、フォルダごとに1つのディレクトリを使用していましたが、ご存知のとおり、Maildirは3つのサブディレクトリを使用しています。最初はnewに配信され、次にtmpに移動し、最後にcurに移動します。

Procmailは、両方への配信をネイティブにサポートしています。ただし、MHの場合、ターゲットディレクトリに直接配信するだけでは、MHのいくつかの便利な機能がバイパスされます。代わりに、rcvstoreプログラムにパイプすることができます。これにより、MHシステムとの全体的な統合が向上します(関連する制御ファイルとキャッシュファイルが更新されます)。

これを実現するためにDEFAULTを直接設定することはできません。次のような単純な.procmailrcが必要です。

:0:foldername.lock
| rcvstore +foldername   # from memory it wants a plus, is that right?

これは、名前付きロックファイルをロックする無条件の配信アクションです。

このアプローチは、他の多くのフォルダー形式に一般化されます。 ProcmailはMBX、Dovecotのdbox、およびその他のさまざまな形式をネイティブにサポートしていませんが、メッセージをパイプできるその形式の配信プログラムがあれば、それらに配信できます。

この回答は基本的に http://www.iki.fi/era/procmail/mini-faq.html#appendix-folders からの情報を繰り返します。

1
tripleee