(未解決)空き容量が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-rttlはmew-pop-set-rttlでsetした値を読む。- setする場所がいくつかあって、。。