CentOSではcronジョブの実行結果をメールで受け取っていたのですが、AlmaLinuxにはmailコマンドもSendmail(あるいはPostfix)もインストールされていません。これではあまりにも不便なので環境を整備します*1。
s-nail のインストール
AlmaLinux 9 から MUA は s-nail になっているとのことなのでインストールします。
$ sudo dnf install -y s-nail
ひょっとしたらこれだけでメールのローカル配信(同一マシン内での配信)はできるのではないかと期待したのですが、そんなに甘くはありませんでした。
$ echo test|mail -s test koba s-nail: Cannot start /usr/sbin/sendmail: executable not found (adjust *mta* variable) /home/koba/dead.letter 8/131 s-nail: ... message not sent
/usr/sbin/sendmail がないと怒られます*2。やはり MTA が必要ですね。
Postfix のインストール
Postfix をインストールします。
$ sudo dnf install -y postfix
設定ファイル /etc/postfix/main.cf の inet_interfaces に 127.0.0.1 を設定します。
inet_interfaces = 127.0.0.1
設定にエラーがないかチェックします。
$ sudo postfix check
Postfix を起動します。
$ sudo systemctl start postfix.service
ローカル送信を試します。
$ echo test | mail -s test koba
メールが届きました。
$ mail s-nail version v14.9.22. Type `?' for help /var/spool/mail/koba: 1 message 1 new ▸N 1 koba@tk2-211-15046.v 2024-11-06 11:09 15/549 "test "
cronからのメールを受信する
crondを再起動すれば、cronからの出力がメールで届くようになります。
$ sudo systemctl restart crond.service
外部にメール転送する
cronからの出力はメールで受け取れるようになりましたが、わざわざサーバに見に行くのは面倒です。~/.forward に以下のように記述し、普段使っているメールアドレスに転送します。
\koba, koba@example.com
私の使っているメールサービスではこれで転送されました。Gmailの場合は追加の設定が必要なようです。
Postfixを常駐させる
サーバを再起動してもPostfixが起動するように設定します。
$ sudo systemctl enable postfix.service