Maildir調査

Maildir概要

Maildirとは,メール受信用のファイル・ディレクトリ構造.ファイルロックの必要がない事が大きな特徴.qmailで初めてサポートされた.

サブディレクト

  • tmp
  • new
  • cur

ファイルの内容は,RFC822に従う.">From" 行などのような特別考慮しなければならないエンコード方式はない.

ファイルの構造

ファイル名の構造

time.pid.host

各要素は,以下の通り.

time
UNIX Time
pid
Process ID
host
FQDN
ファイル属性

そのメッセージの到着日時は,mtimeで識別する.

ディレクトリの構造

tmp

メールの配送を受ける際,最初にファイルが作成されるディレクトリ.メールの配送を受ける際,メール送信プログラムは2秒ごとにtmp/time.pid.hostファイルの作成を試み,成功したらnew/time.pid.hostからリンクを張る.これによりファイルロックを使用することなく安全にメールの配送を行う.
メールの配送処理が終わったら,tmp/time.pid.hostファイルはunlinkする.

new

新着メールが保存されているディレクトリ.メールリーダは,このディレクトリ以下を監視することで新着メールの着信をチェックする.

メールリーダは,このディレクトリ以下のファイル(メールそのもの)を,別ディレクトリにrenameや削除などを自由に行ってよい.

Courier-IMAPDによるMaildirの拡張(フォルダ)

Courier-IMAPDはオリジナルのMaildirに対しいくつか拡張を行っている.フォルダ機能はそのひとつ.詳細はCourier-IMAPDに付属するmaildirmake(1)のニュアルを参照のこと.

たとえば,/some/imapd/folderという階層のIMAPフォルダを作成したい場合,以下のようにすればよい.

# maildirmake -f some.imapd.folder ${HOME}/Maildir

このコマンドを発行することで,${HOME}/Maildir/some.imapd.folder以下に,cur, new, tmpといったディレクトリが作成される.

入れ子構造になっているフォルダを作成するには "." (ピリオド)で区切って指定すればよい.作成されるディレクトリ自体は入れ子構造にはならない.