Thunderbird

Thunderbird:nsemail 和 nscopy 文件留在 /tmp

  • May 15, 2020

我在 Debian 上使用 Thunderbird 68。

對於我發送的任何電子郵件,Thunderbird 在 /tmp 中創建臨時文件:

/tmp/nsmail.tmp
/tmp/nsmail-1.tmp
/tmp/nsmail-2.tmp
/tmp/nscopy.tmp
/tmp/nscopy-1.tmp

這些文件不僅在電子郵件發送後沒有被刪除,更糟糕的是,它們在 Thunderbird 關閉後仍然存在。

我在UbuntuBugzilla上都發現了一個錯誤報告,但沒有解決方案。

我發現在發送電子郵件後不立即刪除臨時文件是一種非常糟糕的做法。絕對令人髮指的是,即使應用程序退出也不會清理其臨時文件。

作為一種解決方法,我可以更改創建這些臨時文件的位置嗎?例如,使用~/.cache/thunderbird/會更合適。

此錯誤是在 v68.x 中引入的,尚未修復,等待修復是一種解決方法,請注意tmp/ns*TB v68 需要文件才能正常工作。

解決方法一:

正如評論中所建議的,可以使用自定義臨時文件,然後您可以對該特定臨時文件夾應用不同的限制,還請注意,不需要廣泛應用環境變數更改。

通過將行更改為以下命令使用給定命令啟動 Thunderbird來編輯.desktop用於執行 Thunderbird 的文件(通常在 下/usr/share/applications) :Exec=

export TMPDIR=/home/my/new/tmpdir; export TMP=$TMPDIR; thunderbird; rm -rf /home/my/new/tmpdir/ns*

這將設置$TMPDIR$TMP變數為自定義位置,然後執行 Thunderbird,最後當它關閉時rm -rf /home/my/new/tmpdir/ns*將刪除 tmp 剩餘的。

請注意,環境。bash如果從一個或.desktop文件執行變數更改只會影響 Thunderbird 。否則,如果直接從終端執行此命令,則更改為$TMP將影響在此命令之後啟動的命令。

解決方法二:

在使用 Thunderbird 時,我們可以使用腳本手動完成工作;為此,我們將.desktop使用以下內容編輯文件:

Exec=env TMPDIR=/tmp /usr/bin/thunderbird & /path/to/watch-tb-script.sh

會在哪裡cat watch-tb-script.sh

#!/bin/sh

[[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
while [[ "$?" == 0 ]] 
do
 for i in /tmp/ns*; do 
   if [ -f "$i" ]; then 
     rm -rf $i;
     sleep 10s; 
   fi;
 done;
 sleep 60s;
 [[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
done;

打開雷鳥時,此腳本將繼續執行,檢查/tmp/ns*文件並每 10 秒刪除每個文件,然後腳本將在下一次檢查前休眠 60 秒。

此錯誤是在 v68.x 中引入的,尚未修復。經過調查這裡是確切的情況:

漏洞詳情:

Thunderbird~/tmp/ns*在發送電子郵件時確實使用了早期版本,但它也會在使用這些臨時文件後刪除它們,而 tb 仍處於打開狀態。在 v68.xa 編碼錯誤上,Thunderbird 嘗試刪除該位置上的那些臨時文件,/tmp/ns...而不是~/tmp/ns...設置$TMPDIR變數來/tmp解決問題。(等待上游更新)

解決方案:

使用以下命令執行 Thunderbird 將解決問題(類似於其他答案)

export TMPDIR=/tmp; thunderbird;

引用自:https://unix.stackexchange.com/questions/579331