我正在使用 gpg2
和 awk
与 msmtp 一起在 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 Mail\r\n\r\nThis 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}''
我完全不知道这里可能有什么问题。操作系统升级后出现此问题。我也在 .msmtprc 文件上运行了 chmod 600。任何帮助是极大的赞赏。其他信息
msmtp
它没有用 sed
而不是 awk
我得到了一个相同的权限错误(对于 sed)。 使用的版本
GNU Awk 5.0.1,API:2.0(GNU MPFR 4.0.2,GNU MP 6.2.0)
版权所有 (C) 1989, 1991-2019 自由软件基金会。
gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
版权所有 (C) 2019 Free Software Foundation, Inc.
msmtp 版本 1.8.6
平台:x86_64-pc-linux-gnu
TLS/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
关于bash - 通过 msmtp 运行时 awk 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62838673/