运行msmtp时拒绝了Awk权限



我正在与msmtp一起使用gpg2awk在emacs中发送电子邮件。这是我的.msmtprc文件的相关部分

account gmail
host smtp.gmail.com
from myusername@gmail.com
auth on
port 465
user myusername@gmail.com
passwordeval gpg2 -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine smtp.gmail.com login myusername@gmail.com/ {print $NF}'

这就是我的.authinfo.gpg文件看起来像的样子

machine smtp.gmail.com login myusername@gmail.com port 465 password myverysecretpassword
machine imap.gmail.com login myusername@gmail.com port 993 password myverysecretpassword

出于某种原因,上面passwordeval字段中的命令在终端中运行良好,即它输出密码,但当我使用msmtp 运行它时

echo -e "Subject: Test MailrnrnThis is a test mail" |msmtp --debug --from=default -t myusername@gmail.com

awk返回一个权限错误。

loaded user configuration file /home/myusername/.msmtprc
falling back to default account
sh: 1: awk: Permission denied
msmtp: cannot read output of 'gpg2 -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine smtp.gmail.com login myusername@gmail.com/ {print $NF}''

我完全不知道这里可能出了什么问题。此问题出现在操作系统升级之后。我也在.mstprc文件上运行了chmod 600。非常感谢您的帮助。

其他信息

  • 我暂时尝试使用普通密码,它有效
  • 我试图暂时授予.mstprc 777权限,但没有成功
  • 我尝试重新安装msmtp,但没有成功
  • 我尝试使用sed而不是awk,但我得到了一个相同的权限错误(对于sed(
  • 其他帖子可能有关联?这有点暗示.msmtprc的所有者可能是相关的。就我而言,我是文件的所有者

使用的版本

GNU Awk 5.0.1,API:2.0(GNU MPFR 4.0.2,GNU MP 6.2.0(版权所有(C(1989191991-2019自由软件基金会。

gpg(GnuPG(2.2.19libgcrypt 1.8.5版权所有(C(2019自由软件基金会,股份有限公司

msmtp 1.8.6版平台:x86_64-pc-linux-gnuTLS/SSL库:GnuTLS

感谢marlam的建议,我发现这个问题是由于msmtp的AppArmor配置文件限制过大。我认为我的新操作系统版本在msmtp的使用方面更严格(我想这是好事(。不幸的是,这种情况经常发生在Debian和Ubuntu上,这让许多用户感到困惑。我用来解决这个问题的命令是

sudo ln -s /etc/apparmor.d/usr.bin.msmtp /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.bin.msmtp 

移除AppArmor保护是一种解决方案。将AppArmor配置文件扩充为包含awk是一个更好的解决方案。

/etc/apparmor.d/usr.bin.msmtp中添加以下行:

*** usr.bin.msmtp.old   2022-01-13 08:22:33.301883304 +0100
--- usr.bin.msmtp       2022-01-13 08:23:41.550280850 +0100
***************
*** 50,55 ****
--- 50,57 ----
/tmp/            rw,
owner /tmp/*     rw,

+     /usr/bin/awk         PUx,
/usr/bin/secret-tool PUx,
/usr/bin/gpg{,2}     PUx,
/usr/bin/pass        PUx,

使得helpers部分看起来像这样:

# secret helpers
/{,usr/}bin/bash Cx -> helpers,
/{,usr/}bin/dash Cx -> helpers,
profile helpers {
#include <abstractions/base>
/{,usr/}bin/bash mr,
/{,usr/}bin/dash mr,
/tmp/            rw,
owner /tmp/*     rw,
/usr/bin/awk         PUx,
/usr/bin/secret-tool PUx,
/usr/bin/gpg{,2}     PUx,
/usr/bin/pass        PUx,
/usr/bin/head        PUx,
/usr/bin/keyring     PUx,
/{,usr/}bin/cat      PUx,
}

之后运行

# Mind the small r (reload), do not use capital R (remove)
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.msmtp 

相关内容

  • 没有找到相关文章

最新更新