メールサーバ(postfix)- トラブルシュート - cron メールがスパムに


クラウディア 


1. 概要
2. 状況
3. 対策
4. 参考サイト

1. 概要

 「cron」からのメールが、スパム扱いされちゃったのです。

2. 状況

 現象は、まさに概要のとおりなのですが。  状況として、対象となった「cron」の処理は、自前のスクリプトを実行したときのものです。  かつ、「cron」の処理を実行しているのは、「nt.sing.ne.jp」、メールを受信してスパム判定するのは「ns.sing.ne.jp」なのです。  自分の中であれば、スパム判定することもなかったのかな?  「cron」の処理は、下記のようなものです。

#minute hour    mday    month   wday    who     	command
30      2       *       *       *       hogehoge    /home/hogehoge/sh/update.sh
 「Rspamd」のチェック結果の、主な個所は。

R_BAD_CTE_7BIT(3.50)[unknown];
BROKEN_CONTENT_TYPE(1.50)[];
R_MISSING_CHARSET(0.50)[];
DMARC_POLICY_ALLOW_WITH_FAILURES(-0.50)[];
ONCE_RECEIVED(0.20)[];
 とまあ、文字コード関係が主な個所を占めています。  「ChatGPT」くんに相談しましたらば。
FreeBSD の cron ではデフォルトだとメールに MIME ヘッダや charset が付かず、Rspamd の R_BAD_CTE_7BIT や BROKEN_CONTENT_TYPE がスコアを上げる原因になっています。

3. 対策

 「ChatGPT」くん提案の対策として、「cron 出力を自動的に正しい MIME 付きで送信する方法」をあげてくれたので、その対策をとります。  「root」ユーザ権限で。

vi /usr/local/bin/cron-mail-wrapper.sh
 以下を記述します。

#!/bin/sh
# cron-mail-wrapper.sh
# 引数: 宛先メールアドレス、件名
# 使用例: cron-mail-wrapper.sh root@sing.ne.jp "Cron Output"

TO="$1"
SUBJECT="$2"

# 標準入力を本文として取得
BODY=$(cat)

# MIME ヘッダ付きで sendmail 送信
{
    echo "From: cron@hogehoge.ne.jp"
    echo "To: $TO"
    echo "Subject: $SUBJECT"
    echo "MIME-Version: 1.0"
    echo "Content-Type: text/plain; charset=UTF-8"
    echo "Content-Transfer-Encoding: 7bit"
    echo ""
    echo "$BODY"
} | /usr/sbin/sendmail -t
 メールヘッダをつけて、「Content-Type」「Content-Transfer-Encoding」等をつけています。  編集したら、実行権限をつけておきます。

chmod +x /usr/local/bin/cron-mail-wrapper.sh
 「crontab」の内容を次のように変更します。

#minute hour    mday    month   wday    who     	command
30      2       *       *       *       hogehoge    /home/hogehoge/sh/update.sh 2>&1 | /usr/local/bin/cron-mail-wrapper.sh root@sing.ne.jp "Cron  /home/hogehoge/sh/update.sh"
 これで、メールのスコアが「4.8」から「0.65」になりました。

4. 参考サイト

 本ページは、「ChatGPT」くんを参考にさせていただきました。

AbemaTV 無料体験