Maildir形式でpostfix
を使用しています。 maildirに保存されているメッセージのファイル名は次のようになります。
1386021659.27745_1.alpha:2,S
最初の部分はエポック時間であると理解していますが、残りの部分についてはよくわかりません。しかし、私は次のような人間に優しい名前を付けたいと思います
2013-12-18__120502.sender_or_subject_of_the_message:2,S
個々のメッセージ/ファイルを頻繁に操作する必要があります(これが、最初にmaildirを使用している理由です)。より説明的なファイル名があると役立ちます。
これをpostfix
に設定できますか?
いいえ、Postfixには これを構成する方法はありません があります。 @HBruijnが言ったように、Maildir形式は仕様であり、LDAとMUAの両方を異なる形式で合意させるのは かなりの努力 です。そうは言っても、maildir内のファイル名が好きではない場合は、それらを検索するときに少し美しくすることができます。 :
$ ls |ヘッド-1 1325471944.27745_1.beta、S = 10662:2、S $ ls |ヘッド-1 | Perl -pe's /(\ d +)/ localtime($ 1)/ e ' Mon Jan 2 03:39:04 2012.27745_1.beta、S = 10662:2、S
Maildir形式の 元の仕様 は、質問に答えるのに良いスタートです。
要件は、新しいメッセージがそれぞれ一意の名前で保存されることです。
Maildirにメッセージを書き込んでいない限り、一意の名前の形式はあなたの仕事ではありません。
一意の名前は、コロン(またはスラッシュ)を含まず、ドットで始まらないものであれば何でもかまいません。 一意の名前から情報を抽出しようとしないでください。
さて、あなたはメッセージを書いています。一意の名前には、ドットで区切られた3つの部分があります。左側は、time()またはgettimeofday()の2番目のカウンターの結果です。右側はgethostname()の結果です。 (無効なホスト名を処理するには、/を\ 057に、:を\ 072に置き換えます。)中央には、以下で説明する配信IDがあります。
.。
昔ながらの配信IDは、配信IDに次の形式を使用します。
n
、ここでnはプロセスIDであり、このプロセスは1回の配信を行うためにフォークされています。残念ながら、一部の愚かなオペレーティングシステムは、プロセスIDをすばやく繰り返し、標準のtime + pidの組み合わせを破ります。n_m
、ここで、nはプロセスID、mはこのプロセスによって行われた配信の数です。質問の2番目の部分ですが、ローカルの配信エージェントのソースコードを変更しない限り、一意のファイル名を設定するだけでは構成できません。
回避策は.forwardであり、メールをスクリプトにパイプして、メッセージをファイル名とともに好みに合わせて保存し、基本的に独自のローカル配信エージェントを作成します。それはかなり些細なことです。