(未解決)空き容量が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する場所がいくつかあって、。。