MaildirMaildirは、広く使われている電子メール格納フォーマットの一種で、メッセージを追加・移動・削除する際にメッセージの完全性を保証するためにアプリケーションレベルでファイルロックする必要がない。個々のメッセージは個別のファイルとして一意な名前付きで保持されている。全ての操作はファイルシステムの不可分操作を使うので、ファイルシステム側で並行性制御のためのファイルロックを行う。Maildirはディレクトリであり(通常、その名前も 仕様Maildirは単純さと保守の容易さが優れており、多数のユーザーを扱う場合にも機能性に優れている。 Maildirqmail、djbdns、その他の各種ソフトウェアを開発したダニエル・バーンスタインがMaildirのオリジナルにして唯一の仕様を書いた[1]。その後バーンスタインに追随する動きがなく、Maildirを標準化しようという努力もなされていない。この仕様はバーンスタインのqmail向けに書かれたもので、多くのプログラムに実装するのに十分な汎用性を備えていた。時と共に様々な実装がなされ、数少ない欠点も発見されている[要出典]。 Maildir++Courier Mail Server などのソフトウェアを開発した Sam Varshavchik が、サブフォルダとメールクオータをサポートすべくMaildirの拡張フォーマット Maildir++ を作った[2]。Maildir++ ディレクトリ群には、'.'(ドット)で始まる名前のサブディレクトリがあり、それらもMaildir++のフォルダである。したがってこの拡張はMaildir仕様とは異なるが、MaildirソフトウェアはMaildir++もサポートするものが多い。 Maildirが関わる領域電子メールは以下のような状況で格納される必要がある。
RFC 822 や関連する標準は電子メールメッセージを複数行のテキストであると定義しており、そのテキストの先頭の数行は厳密な規則に従っている。この考え方はファイルとよく一致する。Maildirは個々のメッセージに1つのファイルを対応させる設計であり、SMTPなどのプロトコルを使ってネットワーク上を転送される電子メールと正確に対応している。MTAも電子メールをシーケンシャルアクセス方式でまとめて(バッチ的に)処理するのが一般的であり、これもメッセージとファイルの対応が適している。 ディレクトリにそれぞれ1つのメッセージを含む多数のファイルが置かれているという構造は、電子メールのランダムアクセスが必要とされるような状況では不十分である。このため多くの実装では、検索能力に優れたデータベースを使っている。2007年現在、一般にファイルシステムはデータベースよりもアクセス性能がよいので[要出典]、実装に当たってはインデックス付けの方法、プログラミングの容易さ、性能や効率、既存の技術の再利用、信頼性などを勘案している。最近のメール関連ソフトウェアである Cyrus IMAP server、MH Message Handling System、Dovecot IMAP server、UW IMAP server などは全て相互に非互換なメッセージ毎にファイルを使うフォーマットにインデックス付け手法を組み合わせている(Dovecot と UW IMAP は他のソフトウェアからアクセス可能なフォーマットも実装している)。 技術的詳細電子メールメッセージを配送するプロセスは、その内容を 配送プロセスは、 電子メールクライアントプロセスが ロックしない操作による問題ダニエル・バーンスタインは、たとえNFS上でも、複数のプロセスがロックせずに同時に書き込もうとしても大丈夫なようにMaildirを設計した。大抵の場合、これがうまく機能しているが、バーンスタインはファイルシステムの実装上の制限を考慮していなかった。ディレクトリをプロセスが読み込む場合 macOSのHFS Plus(ZFSではない)では、この問題が起きないように見える[要出典]。Linuxの場合、inotifyでMaildirの変化を監視することで問題を防ぐことができる。例えば、readdirを行った後で、inotifyで新たなファイルが追加されていないかを調べればよい[要出典]。 Maildirを直接サポートしているソフトウェアメールサーバ
配送エージェントメールリーダ
メール検索ツール
間接的にMaildirをサポートするソフトウェアこれらのソフトウェアの連携方式と通信プロトコルの役割を考慮すると、Maildirをサポートするソフトウェアの範囲はもっと広がる。例えば、次のように考えることができる。
WindowsのソフトウェアMaildir標準はファイル名にコロンを使うため、Microsoft Windows 上では修正なしで実装できない。Windows上でコロンの代わりに別の文字(";"、"-" など)を使えない技術的理由はないが、仕様が更新されていないため、代替に使用する文字について全体的な合意がなされていないという問題がある。そのため、Windows上のあるプログラムがMaildirファイルを書いても、別のプログラムが読めないという問題が発生する。PythonやPerlで書かれMaildirをサポートしているプログラムがあるし、Cygwinなどを使ってUNIX上のプログラムをWindows上で動かすこともできるが、コロンの代替をどうするかという問題が解決しないと動作が保証できない。 また、Windows(特に古いバージョン)ではファイル名更新が不可分操作でないという問題もある[4]。 関連項目脚注・出典
外部リンク |
Portal di Ensiklopedia Dunia