1. 概要
「cron」からのメールは、デフォルトでは「root」ユーザへ届くようになっています。
2. 状況
「root」ユーザで、メールを開くのは嫌なので。
/var/qmail/alias/.qmail-mailer-daemon
/var/qmail/alias/.qmail-postmaster
/var/qmail/alias/.qmail-root
へ、受信用のメールアドレスを記述して、そちらへ転送するようにしています。
ところが。
「FreeBSD 13.4 RELEASE」で運用したものを、「FreeBSD 14.2 RELEASE」へアップグレードしたら、届かなくなってしまいました。
「root」ユーザでログインすると。
あなたに メールがあります.
と言われまして。
「mail」コマンドで見ると、「cron」のメールが届いています。
特になにも変えてないんだけどなぁ。
元々、「FreeBSD 14.2 RELEASE」で運用していたものは、普通に転送されているのに。
3. 設定1
根本原因がわかっていないので、始末が悪い。
とりあえず、「root」ユーザ権限で。
vi /etc/crontab
# /etc/crontab - root's crontab for FreeBSD
#
#
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
の下に。
MAILTO="...@..."
の行を追加しまして、「...@...」転送先のメールアドレスを記述しました。
すると、いくつかのメールは、転送先へ届くようになったのですが。
daily security run output
daily run output
の2つのみは、まだ「root」へ直接届くのです。
4. 設定2
届いたものを転送するようにしてみます。
「root」ユーザ権限で、「root」のホームディレクトリで。
まず、これは、必要かどうかわかりませんが。
maildirmake Maildir
それから。
vi ~/.qmail
&
を書いて、続けて、転送先のメールアドレスを記述します。
これで、様子を見てみます(2025年5月21日)。
5. 設定3(オチ)
前項は、何の効果もありませんでした。
で、ふと思い出したのであります。
「FreeBSD」をクリーンインストールして、「qmail」をインストールした際に、必ずやるおまじないがあります。
もしやと思い、そのおまじないをかけてみます。
「root」ユーザ権限で。
/var/qmail/scripts/enable-qmail
下記が表示されます。
===> I hope you know what you are doing:
===> You just told your system to not
===> automaticaly start sendmail on your
===> next startup.
===> (i.e., added sendmail_enable="NONE" to rc.conf)
===> Do not forget to choose an appropriate qmail startup
===> script. Go through /var/qmail/boot, choose one
===> and copy the chosen script as /var/qmail/rc
===> For example, "cp /var/qmail/boot/proc+df /var/qmail/rc"
これで、しばらく様子をみてみます。
「/var/qmail/scripts/enable-qmail」は、スクリプトです。
一応、末尾に内容を記述しておきます。
2、3日、様子をみましたが、正常に受信できるようになりました。
前項、前々項の設定は、元に戻します。
6. 備考
本ページは、下記のサイトを参考にさせていただきました。
「.qmail の使い方 -- メール転送の方法ほか」
/var/qmail/scripts/enable-qmail
中身は、下記のように記述されています。
#!/bin/sh
disable_sendmail() {
echo "===> I hope you know what you are doing:"
echo "===> You just told your system to not"
echo "===> automaticaly start sendmail on your"
echo "===> next startup."
echo "===> (i.e., added sendmail_enable=\"NONE\" to rc.conf)"
if [ -f ${RC_CONF_FILE} ]; then
echo sendmail_enable=\"NONE\" >> ${RC_CONF_FILE}
fi
}
enable_qmail() {
if [ -f ${MAILER_CONF_FILE} ]; then
cp ${MAILER_CONF_FILE} ${MAILER_CONF_FILE}.bak && \
cp /var/qmail/doc/mailer.conf.sample ${MAILER_CONF_FILE}
else
echo "===> ERROR: YOU DO NOT HAVE A VALID ${MAILER_CONF_FILE}"
echo "===> FIX this and try again"
echo "===> or, run \"$0 --force\" if you are sure"
echo "===> you want this port replacing some binaries"
echo "===> IF THIS FEELS UNEASY, read /var/qmail/doc/REMOVE.sendmail and do it manually"
echo ""
echo "=======> VERY IMPORTANT <======="
echo "===> One side issue is that if you do replace them,"
echo "===> you really should consider ADDING \"NO_SENDMAIL=true\""
echo "===> to your /etc/make.conf if you do \"make world\"."
echo "===> Otherwise, \"make world\" will \"fix\" your sendmail"
echo "===> installation breaking your qmail one."
echo "===> Read the FreeBSD Handbook section on \"make world\""
echo "===> if you do not know what I am talking about."
echo "===> Check http://www.FreeBSD.org/ for the most"
echo "===> updated copy of the Handbook."
fi
echo "===> Do not forget to choose an appropriate qmail startup"
echo "===> script. Go through /var/qmail/boot, choose one"
echo "===> and copy the chosen script as /var/qmail/rc"
echo "===> For example, \"cp /var/qmail/boot/proc+df /var/qmail/rc\""
}
# taken from mail/postfix idea
force_enable_qmail() {
echo "===> Replacing sendmail"
if [ -e ${SENDMAIL} ]; then
mv -f ${SENDMAIL} ${SENDMAIL}.OFF && \
chmod 0 ${SENDMAIL}.OFF
fi
if [ -e /var/qmail/bin/sendmail ]; then
ln -sf /var/qmail/bin/sendmail ${SENDMAIL}
fi
echo "===> Replacing mailq"
if [ -e ${MAILQ} ]; then
mv -f ${MAILQ} ${MAILQ}.OFF && \
chmod 0 ${MAILQ}.OFF
fi
if [ -e /var/qmail/bin/qmail-qread ]; then
ln -sf /var/qmail/bin/qmail-qread ${MAILQ}
fi
echo "===> Replacing newaliases"
if [ -e ${NEWALIASES} ]; then
mv -f ${NEWALIASES} ${NEWALIASES}.OFF && \
chmod 0 ${NEWALIASES}.OFF
fi
if [ -e /var/qmail/bin/newaliases ]; then
ln -sf /var/qmail/bin/newaliases ${NEWALIASES}
fi
}
# main
RC_CONF_FILE=/etc/rc.conf
MAILER_CONF_FILE=/etc/mail/mailer.conf
SENDMAIL=/usr/sbin/sendmail
MAILQ=/usr/bin/mailq
NEWALIASES=/usr/bin/newaliases
disable_sendmail
if [ "$1" = "--force" ]; then
force_enable_qmail
else
enable_qmail
fi
面倒なので、解析はしていませんが、うまいこと書かれているんだな。