Solaris 10 の設定: sendmail デーモンを使わずにメール送信

一般的なメールをやり取りするわけではないが、管理上、ログなどをメールを使って管理者に通知したい。
Solaris 10 には、Sendmail がデフォルトで入っているからこれを利用したい。
しかし、Sendmail は 攻撃の標的になりやすいプログラムでもあるため、デーモンとして稼動させ続けるのもいやだ。
要件からメールを受信する必要がないので、デーモン起動させず、送信専用とする。

submit.cf の置き換え

submit.cf を sendmail.cf で置き換える。
Sendmail デーモンがいないので、/var/spool/mqueue/ を誰もが読み書きできるようにする必要がある。
(セキュリティ的にどうなのっていわれそうだけども、ログとかだけだし,,,)

$ sudo cp -a /etc/mail/submit.cf /etc/mail/submit.cf.default
$ sudo cp -a /etc/mail/sendmail.cf /etc/mail/submit.cf
$ sudo chmod 777 /var/spool/mqueue/

root 宛てのメールは、別のアドレス(管理メール受信用アドレス)に転送する。

$ sudo vi /etc/mail/aliases

--- /etc/mail/aliases.old
+++ /etc/mail/aliases
@@ -53,3 +53,4 @@
# Local aliases below #
#######################

+root: root@sub.domain.com

alias は、編集しただけでは反映されない。newaliases の実行が必要。

$ sudo /usr/sbin/newaliases

配送テスト

$ cat /etc/release | mail -s "solaris mail test" user@sub.domain.com

Solaris の /usr/bin/mail は、-s (サブジェクト) オプションを認識してくれないらしい,,,
To:, Subject: が空で届いたよ,,,ウザイメールだなぁ。

/usr/ucb/Mail が Linux に近いんじゃないかな?

$ cat /etc/release | Mail -s "solaris mail test" user@sub.domain.com

To:, Subject: もちゃんと入力されてた。

再送処理

なんらか原因でメールの配送に失敗した際に、キューにメールが残ったままになってしまう。
Sendmail デーモンがいれば、再送処理もやってくれるのだが、そのデーモン君は、もはやいない。
,,,というわけで cron デーモンにこの処理を肩代わりしてもらう。

$ sudo crontab -e root

--- crontab.old
+++ crontab
@@ -12,3 +12,5 @@
#
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
#10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___
+
+0 * * * * /usr/sbin/sendmail -q

1時間に1回、cron からキュー吐き出し処理を行う。

タイトルとURLをコピーしました