我/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