ThunderbirdでDovecotのIMAPに接続すると「サーバとの接続が切断されました」と表示される

サーバが最近よく落ちていたせいで、とあるときからThunderbirdでメールを受信できなくなりました。
でも受信できないのは、2つのユーザのうち1つだけで、もう一方は正常に受信できます。
できない方は、サーバとの接続が切断されました、と表示されてメールを受信することができなくなりました。

しばらく放置していたのですが、さすがにメールが読めないのは問題だと思い対処法を調べたところ、意外と簡単に解決したのでした。

ログを見る

まぁ正常に動作しないときはログを見なければなりません。
ログを見たところ、こんな内容のログが残されていました。

Oct 15 00:27:37 yui dovecot: IMAP(username): Panic: file mail-transaction-log-view.c: line 290 (mail_transaction_log_view_set): assertion failed: (min_file_seq != max_file_seq || max_file_seq != view->head->hdr.file_seq || max_file_offset != (uoff_t)-1 || min_file_offset <= view->head->sync_offset)
Oct 15 00:27:37 yui dovecot: IMAP(username): Raw backtrace: imap() [0x4a518a] -> imap() [0x4a51f3] -> imap() [0x4a48f6] -> imap(mail_transaction_log_view_set+0x5b1) [0x48cdd1] -> imap(mail_index_sync_map+0xc6) [0x483966] -> imap(mail_index_map+0x89) [0x479b69] -> imap() [0x476509] -> imap(mail_index_open+0x238) [0x476958] -> imap(index_storage_mailbox_open+0x7c) [0x462e6c] -> imap(maildir_storage_sync_init+0x195) [0x440ec5] -> imap(mailbox_sync+0x2e) [0x46c55e] -> imap(imap_status_get+0x83) [0x42a6e3] -> imap(cmd_status+0x13a) [0x421d5a] -> imap() [0x423a6d] -> imap() [0x423b4d] -> imap(client_handle_input+0x135) [0x423d75] -> imap(client_input+0x5c) [0x42462c] -> imap(io_loop_handler_run+0xbd) [0x4ad22d] -> imap(io_loop_run+0x18) [0x4ac6a8] -> imap(main+0x531) [0x42c371] -> /lib/libc.so.6(__libc_start_main+0xfd) [0x7fc544e7dc4d] -> imap() [0x41c709]

うーん、ここから分かることはPanicを起こしているということだけのようですね。
ちなみに、uesrnameさんの方にしかログは残っていないところからして、やはりユーザ固有の問題のようです。

いろいろ試してみる

最初、原因が分からなかったので、メールサーバ用の証明書を更新してみたり、NFS用の設定をDovecotに設定したりしました。
まぁ当然結果は変わらず。

ググる

「Panic: file mail-transaction-log-view.c:」でググりました。

答えはここに→http://comments.gmane.org/gmane.mail.imap.dovecot/56171

要は、Maildirのdovecot.index*を消せよってことです。
きっとサーバが落ちたときに、メールのインデックスとかのファイルが壊れてしまったんでは無いでしょうか。

とりあえずこれらのファイルを消して、正常にメールが見られるようになりました。

おすすめ

2件のフィードバック

  1. Sakai より:

    なんか難しいことやってるなw

    それにしても、トップの時計ガジェットいいね!

コメントを残す

Amazon プライム対象