平衡点
2024/10/09
_ Mastodon でのメール通知, というか Exim4 と Apparmor
Mastodon の(ほぼ)お独り様インスタンス(junkhub.org)を運用しているわけですが, 通知メールが飛んで来なくてしばし悩んだり.
これまではサーバで Exim4 を smarthost として起動していて,
.env.production
では
SMTP_SERVER=127.0.0.1
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS= *************************
SMTP_DOMAIN=junkhub.org
SMTP_DELIVERY_METHOD=sendmail
などとしていた.
久々に別件でログを見たら, apparmor にて sendmail コマンドとして動作させていた /use/sbin/exim4 の動作が止められていた. …あれ, apparmor の設定してなかったっけ?
どうしたモンか悩んだが, そもそも smarthost として運用しているので 127.0.0.1:25 が開いているわけで…
.env.production
にて
SMTP_SERVER=127.0.0.1
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_AUTH_METHOD=none
SMTP_PORT=25
SMTP_FROM_ADDRESS= *************************
SMTP_DOMAIN=junkhub.org
SMTP_DELIVERY_METHOD=smtp
とすれば, apparmor の設定を特に弄ることもなく, 通知メールの送信が可能となった.
…サーバ設定した特には疎通確認した筈なんだけれど, 変だなぁ…
それはそれとして, 実態が exim4 である /usr/sbin/sendmail コマンドを他のプログラムから叩ける様にするには AppArmor のプロファイルはどう書いたらエエのかな.
一応
# Last Modified: Wed Oct 9 12:43:38 2024
include <tunables/global>
/usr/sbin/exim4 flags=(complain) {
# These are abstractions, which are sets of rules that can be included in multiple profiles.
include <abstractions/base>
include <abstractions/dovecot-common>
include <abstractions/nameservice>
include <abstractions/postfix-common>
# These are capabilities, which are specific privileges that the Exim4 server is allowed to use.
capability chown,
capability dac_override,
capability dac_read_search,
capability fowner,
# This rule allows the Exim4 server to use UNIX domain sockets.
network unix dgram,
# These rules allow read access to various configuration files and directories.
/etc/exim4/** r,
/var/lib/exim4/** r,
/sys/kernel/mm/transparent_hugepage/enabled r,
/usr/sbin/exim4 Px,
}
こんなんで動いたっぽいけど, 今一自信が無い…