Ubuntu 20.04でAsteriskからmsmtpでメールを送信できない

echo test | sudo -u asterisk strace sendmail hogehoge@hogehoge.com

上記のようなコマンドを実行したら、次のような結果になった。

newfstatat(AT_FDCWD, “/var/lib/asterisk/.msmtprc”, {st_mode=S_IFREG|0600, st_size=170, …}, 0) = 0
geteuid() = 112
openat(AT_FDCWD, “/var/lib/asterisk/.msmtprc”, O_RDONLY) = -1 EACCES (Permission denied)

しかし、パーミッションは600で何も問題がない。

SELinuxは入っていないっぽいし、何故だと思いつつ、調べてみたら、UbuntuにはAppArmorというものが入っているらしい。

/etc/apparmor.d/usr.bin.msmtpを開いてみたら、owner @{HOME}/.msmtp*, rという行があった。これを参考にして owner /owner/var/lib/asterisk/.msmtp*, r を追加した。

追加されたら、sudo apparmor_parser -r /etc/apparmor.d/usr.bin.msmtpを実行して反映させる。

これで、Asteriskだけ別のアカウントを使ってメールが送信できるようになった。