Log-Files

使用 sendmail 將郵件記錄為附件

  • December 11, 2011

我正在使用 logrotate 來旋轉我的日誌文件。

我已將其設置為每週創建新的日誌文件。

但是,我希望它首先將日誌文件作為附件郵寄給我。

/var/log/httpd文件目前包含:

/var/log/httpd/*log {
   missingok
   notifempty
   sharedscripts
   firstaction
       {I think I need to mail the logfiles here???}
   postrotate
       /sbin/service httpd reload > /dev/null 2>/dev/null || true
   endscript
}

有可能做我想做的事嗎?

如果是這樣:我需要添加firstaction什麼才能:

  • 使用 sendmail將日誌文件 ( /var/log/httpd/*log) 作為附件郵寄給我
  • 在郵件中添加一些主題,例如:HTTPD logfiles {week #}

如果我正確理解了您的問題,則有一個 logrotate 選項可以滿足您的要求。只需添加mail user@yourdomain.com為配置選項之一,如下所示:

/var/log/httpd/*log {
   mail user@yourdomain.com
   ...

這會將即將輪換的日誌文件郵寄給您。

也許您已經嘗試過了,但它並沒有完全滿足您的需求。在這種情況下,我認為您在大多數情況下都走在了正確的軌道上。但是,當您嘗試發送帶有附件的消息時,直接呼叫 sendmail 不是正確的方法。引用sendmail 常見問題解答

如何使用 sendmail 創建附件?

你沒有。Sendmail 是一個郵​​件傳輸代理 (MTA)。創建電子郵件消息,包括添加附件或簽名,是郵件使用者代理 (MUA) 的功能。一些流行的 MUA 包括 mutt、elm、exmh、Netscape、Eudora 和 Pine。一些專門的包(元郵件、一些 Perl 模組等)也可用於創建帶有附件的消息。

如果你有郵件使用者代理mutt(或者可以安裝它),它應該能夠做你想做的事。嘗試這樣的事情:

/var/log/httpd/*log {
   firstaction
      echo | mutt -s "Log files for `date`" user@yourdomain.com -a /var/log/httpd/*log
   endscript
   ...

另請注意,在您的範例配置文件中,您缺少endscriptfor 您的firstaction命令。

引用自:https://serverfault.com/questions/339924