Kodama's home / tips.
Postfix のサイズ 制限
postfix 2.3 では,
送付メッセージのサイズ制限を越えた場合, "illegal seek"というエラーになる.
エラーメッセージがサイズを連想させる物ではないので, とまどってしまう.
エンベロープ情報まで含めた メッセージ全体の最大サイズはデフォルトで 10MB(10240000 bytes).
デジカメの解像度が高くなってきたので,
普通の画像を送る場合でも, この制限に抵触することが多くなってきた.
試験用ファイルを作る
$ dd bs=1024 count=20000 if=/dev/urandom of=test20M
読み込んだブロック数は 20000+0
書き込んだブロック数は 20000+0
$ ls -s test20M
20024 test20M
メール送付の試験
$ mailx -s size_test_20M kodama@localhost < test20M
postdrop: warning: uid=10001: Illegal seek
send-mail: fatal: kodama(10001): queue file write error
/var/log/maillog より.
May 29 10:35:57 gar-local postfix/postdrop[13465]: warning: uid=10001: Illegal seek
May 29 10:35:57 gar-local postfix/sendmail[13464]: fatal: kodama(10001): queue file write error
対策
/etc/postfix/main.cf で制限を緩めることにする.
関連するサイズの制限は2箇所ある.
上記の "Illegal Seek" に直接関連するのは message_size_limit で.
postfix が処理するメッセージサイズの最大を決める.
また, 最終的に メール スプール に置かれる場合のサイズ制限が, mailbox_size_limit で,
mailbox 形式の場合はメールの合計サイズ,
maildir形式の場合は個々のファイル1つあたりの上限値となる.
message_size_limit < mailbox_size_limit と設定しないと,
postfix が処理しても受け取れなくなってしまう.
サイズの制限を緩めてしまうと, メール爆弾攻撃に弱くなってしまうので,
ディスクの使用制限(quota)の見直しも必要となるだろう.
# /etc/postfix/main.cf より
message_size_limit = 204800000
# 200M 単位はbyte. 0は無制限
mailbox_size_limit = 0
# 単位はbyte. 0は無制限
postfix を再起動すること.
Kodama's home / tips.