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だけ別のアカウントを使ってメールが送信できるようになった。