メールサーバ - トラブルシュート - cron メールが届かない


 クラウディア


1. 概要
2. 状況
3. 設定1
4. 設定2
5. 設定3(オチ)
6. 備考

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
 面倒なので、解析はしていませんが、うまいこと書かれているんだな。

earthcar(アースカー)
健康サポート特集
【usus ウズウズ】
ネットオークションの相場、統計、価格比較といえばオークファン
マイニングベース