postfixのMaildirの仕様とメール送受信の設定について調べました。
最近メールの送受信がうまくいかないことがあり、メールボックスの中身を確認し調査した時のメモです。
Maildir内にはcur、new、tmpというサブディレクトリがあり、そのディレクトリに受信したメールが格納されるようです。
■ Maildirとは
Maildirは、電子メール格納フォーマットの一種で、メッセージは個別のファイルとして一意な名前付きで保持されます。
Maildir内にはcur、new、tmpというサブディレクトリがありそのディレクトリに受信したメールデータが格納されます。
■ Maildir内にあるcur、new、tmpディレクトリの仕様
・既読メール格納ディレクトリ
/home/[ユーザディレクトリ]/Maildir/cur
・未読メール格納ディレクトリ
/home/[ユーザディレクトリ]/Maildir/new
・配送メール格納ディレクトリ
/home/[ユーザディレクトリ]/Maildir/tmp
メールデータの状態に応じてそれぞれのディレクトリに分類されます。
メールデータの流れはtmp→new→curの順番でメールデータが移動します。
今回はメール送受信ができなくなったので、メールデータを調べてみるとMaildir内のcurディレクトリに容量が大きいデータが存在したため、そのデータを削除することで問題なく送受信が可能となりました。
しかし、なぜそのような現象になったかを調べていくとpostfixの設定で1通あたりの受信メールの設定や1人当たりのメールボックスの上限などの設定があり、その値を超えるとメールの送受信ができなくなるということがわかりました。
postfixの設定等を確認した時のメモを下記に記載します。
■ postfixの設定ファイル
vi /etc/postfix/main.cf
上記のファイルにpostfixの設定が記載されております。
■ postfix設定ファイル内のメールデータサイズ設定(main.cf)
・message_size_limit
message_size_limit = 10240000
無制限する場合
message_size_limit = 0
・mailbox_size_limit
mailbox_size_limit = 51200000
サーバによっては上記の設定が記載されていない場合があります。私の場合は記載がありませんでした。
記述がない場合はデフォルトで下記の値が設定されるようです。
mailbox_size_limit = 51200000 message_size_limit = 10240000
※「mailbox_size_limit」は「message_size_limit」より大きい値に設定しないとメールが受信できなくなります。
※メールボックスサイズよりもメールが増えるとメールを受信するスペースがなくなるため受信できなくなります。
■ メールボックスのサイズを調べる方法
postconf | grep size_limit
# postconf | grep size_limit body_checks_size_limit = 51200 bounce_size_limit = 50000 header_size_limit = 102400 mailbox_size_limit = 51200000 message_size_limit = 10240000
■ postfixを再起動
/etc/init.d/postfix reload
メールサイズの設定を変更後、postfixを再起動することでサイズが変更され送受信が可能となります。