ubuntu自訂mail log rotate設置


在 Ubuntu 系統中,mail.log 文件通常由郵件伺服器(如 Postfix 或 Exim)生成,隨著時間推移,這些日誌文件可能會變得非常大。為了避免佔用過多的磁碟空間,你可以使用 logrotate 來自動管理和輪替這些日誌文件。

1. 檢查現有的 logrotate 配置

通常,郵件伺服器的日誌(如 Postfix 的 mail.log)已經配置在 /etc/logrotate.d/ 目錄下的某個文件中。你可以先檢查是否已經有配置:

cat /etc/logrotate.d/rsyslog

這個文件通常會包含 mail.log 的輪替設置。

2. 自定義 logrotate 配置

如果你想要自定義 mail.log 的輪替配置,可以創建或編輯 /etc/logrotate.d/ 目錄下的配置文件。

創建一個新的 logrotate 配置文件

你可以創建一個新的配置文件來管理 mail.log。例如,創建 /etc/logrotate.d/mail

sudo nano /etc/logrotate.d/mail

然後添加以下內容:

su root adm
/var/log/mail.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 syslog adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
        /bin/systemctl reload rsyslog > /dev/null 2>&1 || true
    endscript
}

3. 配置解釋

  • /var/log/mail.log:指定要輪替的日誌文件。
  • daily:表示日誌文件將每日進行輪替。如果需要每週或每月輪替,可以使用 weeklymonthly
  • missingok:如果日誌文件丟失,不會報錯並繼續下一個文件的輪替。
  • rotate 7:保留最近的 7 個日誌文件。超過這個數量的舊日誌將被刪除。
  • compress:壓縮輪替後的日誌文件,以節省磁碟空間。
  • delaycompress:延遲一輪壓縮日誌,這樣當日的日誌文件仍然是未壓縮的。
  • notifempty:如果日誌文件是空的,則不進行輪替。
  • create 640 syslog adm:以指定的權限和所有者創建新的日誌文件。此處的設置表示新文件的權限為 640,擁有者為 syslog,群組為 adm
  • sharedscripts:指示 logrotate 在所有日誌文件處理完畢後才執行 postrotateendscript 之間的腳本。
  • postrotateendscript:在輪替後執行的腳本。這裡的命令會重啟 rsyslog 服務,以確保它們開始寫入新的日誌文件。

4. 測試配置

你可以使用以下命令來手動測試 logrotate 配置,確保它能正確工作:

sudo logrotate -d /etc/logrotate.d/mail

使用 -d 選項會以 debug 模式運行 logrotate,不會實際執行日誌輪替,但會顯示它將執行的操作。

5. 手動執行日誌輪替

當你確認配置正確後,可以手動執行 logrotate 來立即進行日誌輪替:

sudo logrotate -f /etc/logrotate.d/mail

總結

通過配置 logrotate,你可以有效管理 mail.log 等日誌文件,防止它們佔用過多磁碟空間,並確保系統日誌管理的穩定性。


WordPress Appliance - Powered by TurnKey Linux