為什麼qmail隊列中滿是文件?
昨天我的伺服器停止正常工作。經過一番探勘,我發現問題是
/dev/sda1
inode 用完了。現在我正在尋找一些要刪除的文件,我發現在 qmail 隊列(todo
,mess
,intd
等)中有無數的小文件(名稱是一個數字),其中只包含一個不存在的電子郵件地址,例如:或者
或者,甚至有一些像
問題是,這些文件是什麼?為什麼有這麼多文件?而且,我必須擔心嗎?
一些(也許)重要資訊:伺服器正在執行 gentoo linux,而 qmail 僅用於我發送電子郵件(沒有更多使用者)。這不是電子郵件“帳戶”,所有發送的郵件都來自網站註冊系統。
如果它們的地址是 root 和匿名的,那麼它們很有可能是狀態消息,實際上並沒有到達任何地方,而是坐在隊列中被推遲到最終死亡。如果您的系統上有很多事情正在發生並生成狀態消息,那麼它們可以很快加起來。如您所見,qmail 將每條消息的儲存拆分為 3 個文件的方式只會加劇問題,並且可能會發生 inode 耗盡。
您可以使用 qmail-qstat 查看隊列中有多少電子郵件
首先,我會為您的地址創建 root 和匿名的別名,以便您可以接收這些狀態消息:
我猜 r33422.ovh.net 不是您正在使用的郵件域,但它是接收和接收郵件的域。如果這是您的 qmail 郵箱的名稱,那麼您將 /var/qmail/defaultdomain 更改為您用於電子郵件的域,並且別名應該剛剛開始工作。如果是不同的主機,您可以更改外發郵件的預設域,或者在 qmail 郵箱上創建一個虛擬域,以便它代表 r33422.ovh.net 接受郵件,然後將其轉發給您。
完成這項工作應該可以解決您眼前的問題,因為您的隊列會很快清空。
接下來,如果您希望這個盒子再次有大量郵件,您應該考慮為您的隊列目錄安裝一個新磁碟或分區,並確保使用較小的 inode 大小對其進行格式化。發生的事情是你有很多很多小文件,每個可能不到 1k,但可能有 4k 或 8k 或 16k inode,每個小文件佔用整個 inode ……所以即使你可以用完可分配的空間您的驅動器上有大量未使用的空間。
最壞的情況是有人劫持了您的郵件表單並代表您發送垃圾郵件,而您隊列中的狀態消息是失敗的退回。您肯定希望親自處理這些消息,以確定是否是這種情況,並在必要時採取進一步措施
祝你好運!