[dgg]: dovecot mbox環境でInvalid messageseと出てメールが読めない時の覚え書き
■再発、おさらい
またまた再現しました。あらためてググってみてもめぼしい情報無し。海外のブログでもわざわざウチの上記エントリを翻訳したものにリンクしてるほど情報が乏しいようです。
わかっているのは、
- X-UIDはmbox環境のimapサーバー(dovocot以外も)がキャッシュ用につけるヘッダで、1ずつ増える
- dovecotの0.99.14以前はこの値が一定以上になるとオーバーフローして負の数に解釈されるためエラーになる
- 最後の番号は最後のメールではなく、メールボックスの先頭のメールのX-IMAPbaseヘッダの2番目の数値
- 同時に~(ユーザ名)/imap4/.imap/INBOX/.imap.index*にもキャッシュデータがあるので消すべし
ということ。dovecotの1.0は未だ正式リリースされず。
■番号を振り直す
で、今回はそもそもの数字がもう何年分も積算して(振り分け前の迷惑メールでもカウントアップするし)かなり大きい数字になるので、1から振り直すことにチャレンジ。
上記の海外のエントリによりスマートな方法が載っていました。まず、作業中にメールアクセスが発生しないようdovecotとpostfixを停止し、クライアントも念のため終了しておきます。
cd /var/spool/mail
grep -v ‘^X-UID: ‘ hoge > hoge2
grep -v “^X-IMAPbase: ” hoge2 > hoge
で、hogeのスプールからX-UIDとX-IMAPbaseで始まる行をすべて除去します。
次に前回同様、dovecotがメールボックスのヘッダ情報をキャッシュしているらしいファイルを削除します。
rm ~hoge/imap4/.imap/INBOX/.imap.index*
上記ブログではこれで大丈夫だったようですが、ウチではきっちり元の番号で振り直されてしまいました。どうも、X-IMAPbaseの最初の引数がメールボックスを特定するためのIDのようなので、この数字をエディタで適当にいじってみたところ上手くいきました。
Thunderbirdを立ち上げると、受信箱内の一覧を全て再読込しました。モバイルでも使う人は、パケット代節約のため、自宅LANにつながっている時にいちどつなげておいた方がよいかも知れません。
■番号スキップの犯人を発見
で、前回も不明だった番号が突如ハネあがるトリガなんですが、どうも通販ショップuWorksからの広告メールが原因らしいということをつきとめました。何度か現象が起きている中で、毎回共通して境界にいるのがここのメーリングリストからのメールだったのです。どうも、最初からX-UIDヘッダが大きな数字でついたまま送られてくるらしく、以降のメールのX-UIDがすべて大きく跳ね上がってしまいます。ここのショップのメルマガはお値打ち情報があって重宝してるんですが、とりあえず解除しておきました。