msmtp 无法写入 /var/log/msmtp/msmtp.log

msmtp 无法写入 /var/log/msmtp/msmtp.log

/etc/msmtprc添加了 Gmail 帐户的凭据,并指定了要使用的日志文件/var/log/msmtp/msmtp.log

我还在/var/log/msmtp/msmtp.log

当我使用以下方法测试它时:echo "This is a test e-mail from my server using msmtp!" | msmtp ******@gmail.com

我收到了一封电子邮件,但在终端中我也看到一条错误消息,如下所示:msmtp: cannot log to /var/log/msmtp/msmtp.log: cannot open: Permission denied

当前的权限为/var/log/msmtp

drwxr-xr-x  2 root      root        4096 Jan 29 20:19 msmtp

我做错了什么?日志文件需要什么权限才能让 msmtp 写入文件?

答案1

我遇到了同样的错误消息,最终更改权限、创建日志文件等都不起作用。我遇到的问题是由 AppArmor 引起的:在我的系统中,该文件/etc/apparmor.d/usr.bin.msmtp/var/log/msmtp在中列为写入权限/var/log,因此解决方案可以是:

  • /var/log/msmtp在配置中用作日志,而不是/var/log/msmtp.log
  • 修改配置文件中的规则msmtp apparmor,以允许添加和锁定我们想要的文件。

答案2

安装 msmtp 后,会出现邮件传输协议用户和组。如果您将日志文件的所有权更改为 msmtp,并将用户和组的权限更改为读/写,则日志记录可以正常工作。

groups msmtp
sudo touch /var/log/msmtp
sudo chown msmtp:msmtp /var/log/msmtp
sudo chmod 660 /var/log/msmtp

我还没有测试过,但我想如果您正确设置文件夹的权限,这也适用于 /var/log/msmtp/msmtp.log。

答案3

我更喜欢使用我的电子邮件登录,/var/log/mail.log因为这是默认设置/etc/rsyslog.d/50-default.conf,并且我想尽可能避免修改 apparmor 配置,因此我删除logfile并将其添加到/etc/msmtprc

# The logs will appear in /var/log/mail.log because of the rules in /etc/rsyslog.d/50-default.conf
syslog LOG_MAIL

答案4

我尝试使用 0640,但没有用,只有使用 0770 才有效(我使用用户 msmtp + 0640 更改了所有者,但也没有用)

# mkdir /var/log/msmtp
# chmod -R 0770 /var/log/msmtp
# [nano|vim] /etc/apparmor.d/usr.bin.msmtp
  owner /var/log/msmtp/msmtp.log wk,

# service apparmor restart
$ echo 'message test mail backup' | msmtp the.email

相关内容