使用 sendmail 将文件记录为邮件附件

使用 sendmail 将文件记录为邮件附件

我正在使用 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 #}

答案1

如果我理解正确的话,有一个 logrotate 选项可以满足您的要求。只需将其添加为配置选项之一,如下所示:mail [email protected]

/var/log/httpd/*log {
    mail [email protected]
    ...

这将通过邮件向您发送即将轮换的日志文件。

也许您尝试过这种方法,但并没有达到您的预期效果。在这种情况下,我认为您大部分情况下都走在正确的轨道上。但是,当您尝试发送带有附件的邮件时,直接调用 sendmail 并不是正确的方法。引用sendmail 常见问题解答

如何使用 sendmail 创建附件?

您不需要。Sendmail 是邮件传输代理 (MTA)。创建电子邮件消息(包括添加附件或签名)是邮件用户代理 (MUA) 的功能。一些流行的 MUA 包括 mutt、elm、exmh、Netscape、Eudora 和 Pine。一些专用软件包(metamail、一些 Perl 模块等)也可用于创建带附件的消息。

如果您有邮件用户代理杂种狗(或者可以安装它),它应该能够做你想做的事。尝试这样做:

/var/log/httpd/*log {
    firstaction
       echo | mutt -s "Log files for `date`" [email protected] -a /var/log/httpd/*log
    endscript
    ...

还请注意,在示例配置文件中您缺少endscript命令firstaction

相关内容