@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

(未解決)空き容量が0のとき、Mewでメール受信に失敗すると以降そのメールを受信できない

最近OS Xでkernel_taskが頑張っていて、定期的に数GBのディスク空き容量を持って行かれる。

空き容量が0バイトのときにMewで新着メールを受信しようとすると、下記エラーで失敗する。 (サマリーでiキー or M-x mew-summary-retrieve を実施)

Opening output file: no space left on device, /Users/username/Mail/.mew-uidl

そこまではいいのだけど、kernel_taskが落ち着いて空き容量が数GB戻ってきてから再度、 +inboxで新着メールを受信すると未読が0件の扱いになり新着メールを受信できない。

$inboxだとサーバーのメールを見るので新着メールが残っている。

いまは受信出来なかったメールを$inboxからl c(M-x mew-summary-local-copy)で+inboxにコピーしている。

状況

  • 相手はPOPサーバー
  • システムの空き容量が0バイト
  • biffにより新着メールがあることを知る
  • +inboxフォルダでmew-summary-retrieveを実行
  • 上記エラーが発生する
  • プロセスは残っている
  • 空き容量が数GBに戻ったことを確認する
  • 次回受信時に残っているので、C-c C-kで殺す
  • +inboxフォルダでmew-summary-retrieveを実行
  • 未読0件で+inboxフォルダにメールが追加されない

どこまで追いかけたか

  • mew-pop-retrieveの最後に(set-process-sentinel process 'mew-pop-sentinel)が呼ばれ、
  • mew-pop-sentinel(mew-net-uidl-db-set (mew-pop-passtag pnm) uidl)を呼んでいて、
  • mew-net-uidl-db-set(mew-lisp-save mew-net-uidl-file mew-net-uidl-db nil 'unlimit)を呼んでいて、
  • mew-net-uidl-file.mew-uidlに保存しようとして失敗している。
  • 2回目の実行中にmew-pop-sentinel内でrttl((mew-pop-get-rttl pnm)の結果)が0になり、未読なしになっている。
  • mew-pop-get-rttlは、mew-pop-info-listに含まれる"rttl"を使って、(mew-info-defun "mew-pop-" mew-pop-info-list)にて定義されている。
  • mew-pop-get-rttlmew-pop-set-rttlでsetした値を読む。
  • setする場所がいくつかあって、。。