PostfixをMaildir形式に変更する


とりあえずPostfixのインストールを終え、PostgreSQLとの連携もうまくいっている様子。
次なる野望はメールスプールをmbox形式からMaildir形式への変更。

なぜ、mbox形式からMaildir形式に変えるかというと、mbox形式のメールスプールは一人のユーザーのメールを一つのファイルに纏めて書き込んでいるため、たくさん溜め込むとファイルの容量が肥大化してしまうのが一番の問題。
POP3等で受信を始めるとMTAとの競合を避けるためMRAがメールスプールのファイルのコピーを作り、コピーしたファイルからメールを受信させるという動きをする。
この時、コピーするファイルが大きいと時間が掛かり、場合によってはタイムアウトが発生してしまう。
メールソフトの定期受信の時間間隔が短いと、コピーしたファイルの書き戻し(削除されたモノ等の整合性を取ってる)作業が間に合わずデッドロックを起こしたりすることがある。
今どきの添付ファイルが付いていたり、HTML形式で画像が添付されていたりするメルマガが大量に届くメール事情を考えると、一考の余地がある。

Maildir形式にすると何が良いのかというと、まず一番はメールスプールは一通のメールに付き一つのファイルが作成される。
たくさんメールを溜め込んでも溜まったメールの分だけファイルが作成されるだけで、一つのファイルの容量はそんなに大きくはならない。
また、MTAが受け取った新しいメールは新しいファイルで保存させるため競合を気にしなくなるので、変にファイルのコピーを行ったりしなくなり処理が高速で安定してくる。
IMAP4を運用するにあたってもmbox形式よりは親和性が高いので安心して利用できる。
と言うのが私の私見です。

と言うことでメールスプールの形式をMaildir形式へと変換することにする。
まず初めにやることは、現状のmbox形式で貯まっているメールをMaildir形式にコンバートしてやること。
ググってみるといくつか有名な変換スクリプトがあるみたいで、今回はmbox2maildirというのを使うことにした。
まずはmbox2maildirをこちらから入手してサーバーに保存。PerlのスクリプトなのでPerlのパスが自分の環境と違っていれば修正し、実行権を付けてやる。
続いて変換するユーザーアカウントでサーバーへログインして実行してみる。
% /usr/local/src/mbox2maildir/mbox2maildir.pl /var/mail/xxxxx ./Maildir/
ここで注意しなければいけないのが、出来上がったメールスプールファイルのパーミッションが 644 になっていて、他人からも覗けてしまうこと。
なのでパーミッションを変更してやる。
% chmod 600 ./Maildir/new/*
これでコンバートは完了。
後はPostfixの設定ファイルを書き換えてやり、新たに受信したメールもMaildirの方へ保存するようにする。
/etc/postfix/main.cf を以下のように書き換える。
#mail_spool_directory = /var/mail
home_mailbox = Maildir/

そしてPostfixに設定ファイルを読み込ませる。
# /usr/sbin/postfix reload
これで、メールを送ってみて Maildir/new/ にファイルが増えれば設定成功なので試しに送ってみる。
無事メールが届いている様子なので、次なる挑戦はメールをPCで受信することかな。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です