スパムメールチェックの設定



●SpamAssassinの設定

 参考URL:メールサーバでスパムチェック(Postfix+SpamAssassin+milter-manager+spamass-milter)
 参考URL:CentOS 7.0 - メールサーバ Postfix でウィルス&スパムチェック!

 まず、SpamAssassin・spamass-milterをインストールし、起動します。
# dnf -y install --enablerepo=epel spamassassin spamass-milter-postfix
# systemctl enable --now spamassassin

or

# yum -y install --enablerepo=epel spamassassin spamass-milter-postfix
# systemctl start spamassassin
# systemctl enable spamassassin
 SpamAssassinは日本語のスパムメールに対応していないため、Web上で公開されている日本語のスパムメールに対応したSpamAssassin設定ファイルをセットアップします。
# vi /etc/mail/spamassassin/v310.pre
# TextCat - language guesser
#
loadplugin Mail::SpamAssassin::Plugin::TextCat
 ↑ 行頭の#を削除してコメント解除(TextCatプラグイン有効化)
※SpamAssassin設定ファイルok_languagesオプションを有効にするため

# vi /etc/cron.daily/spamassassin-update ← SpamAssassin設定ファイル日次最新化スクリプト作成
#!/bin/bash

# SpamAssassin設定ファイル最新版ダウンロード
# cd /etc/mail/spamassassin

# wget -q https://github.com/kittyfreak/spamassassin_user_prefs/archive/refs/heads/main.zip
[ $? -ne 0 ] && exit

unzip main.zip >/dev/null 2>&1
[ $? -ne 0 ] && exit
rm -f main.zip

mv spamassassin_user_prefs-main/user_prefs .
rm -rf spamassassin_user_prefs-main

# 設定ファイル更新時のみSpamAssassin再起動
diff user_prefs user_prefs.org > /dev/null 2>&1
if [ $? -ne 0 ]; then
    cp user_prefs local.cf

    # スパム判断したメールを添付形式にしないように設定
    echo "report_safe 0" >> local.cf

    # スパム判断したメールの件名に「***SPAM***」を付加するように設定※受信メールサーバがPOPの場合のみ
    echo "rewrite_header Subject ***SPAM***" >> local.cf

    # SpamAssassin再起動
    if [ -f /etc/rc.d/init.d/spamassassin ]; then
        /etc/rc.d/init.d/spamassassin restart > /dev/null
    else
        systemctl restart spamassassin > /dev/null
    fi
fi
cp user_prefs user_prefs.org


# vi /etc/cron.daily/spamassassin-update ← SpamAssassin設定ファイル日次最新化スクリプト作成
#!/bin/bash
# SpamAssassin設定ファイル最新版ダウンロード
cd /etc/mail/spamassassin
wget -qN http://www.flcl.org/~yoh/user_prefs
# 設定ファイル更新時のみSpamAssassin再起動
diff user_prefs user_prefs.org > /dev/null 2>&1
if [ $? -ne 0 ]; then
    cp user_prefs local.cf
    # スパム判断したメールを添付形式にしないように設定
    echo "report_safe 0" >> local.cf
    # スパム判断したメールの件名に「***SPAM***」を付加するように設定
    # ※受信メールサーバがPOPの場合のみ
    echo "rewrite_header Subject ***SPAM***" >> local.cf
    # SpamAssassin再起動
    if [ -f /etc/rc.d/init.d/spamassassin ]; then
        /etc/rc.d/init.d/spamassassin restart > /dev/null
    else
        systemctl restart spamassassin > /dev/null
    fi
fi
cp user_prefs user_prefs.org


# chmod +x /etc/cron.daily/spamassassin-update
 ↑ SpamAssassin設定ファイル日次最新化スクリプトへ実行権限付加
# /etc/cron.daily/spamassassin-update ← SpamAssassin設定ファイル日次最新化スクリプト実行

※CentOS 7の場合
# vi /etc/cron.d/sa-update ← SpamAssassinルール自動更新cron設定ファイル編集
10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log
 ↑ 行頭の#を削除(コメント解除)

※CentOS Stream 8、Rocky Linux 8の場合
# systemctl enable --now sa-update.timer
# systemctl list-timers|grep sa-update.timer
Tue 2021-11-09 00:00:00 JST  6h left       n/a                          n/a         sa-update.timer              sa-update.service
 下記はCRONからArgument "1.39_01" isn't numeric in subroutine entry at /usr/bin/sa-update line 81.というエラーメールが送られてくる場合の対処
# vi /usr/lib/perl5/vendor_perl/5.8.8/Archive/Tar.pm
$VERSION                = "1.39_01";
$VERSION                = eval $VERSION; ← 追加
 spamass-milterを起動します。
# systemctl enable --now spamass-milter


●milter-managerの設定

 milter-managerをインストールするために、リポジトリを作成します。リポジトリ作成後インストールします。
# curl -s https://packagecloud.io/install/repositories/milter-manager/repos/script.rpm.sh | bash
# dnf install milter-manager -y
# systemctl enable --now milter-manager
 milter-managerを設定します。
# vi /etc/milter-manager/defaults/redhat.conf
  [
    "spamass-milter",
    [
      #"Remote Network",
       ↑ 行頭に#を追加してコメントアウト(ローカルからのメールもスパムチェックを行う)
      Fetchmailで取り込んだメールのスパムチェックを行う場合のみ
      "Unauthenticated",
      "No Stress",
    ],
  ],
 設定反映のため再起動します。
# systemctl restart milter-manager


 Rocky Linux 9の場合

 Rocky Linux 9では、spamass-milterとsendmail-milterをすんなりインストールできませんでした。
 (Rocky Linux release 9.2 (Blue Onyx)では、問題なくインストールできました。)
 そのため、インターネットからダウンロードしインストールしました。
# dnf localinstall spamass-milter-0.4.0-13.el9.x86_64.rpm sendmail-milter-8.16.1-10.el9.x86_64.rpm

依存関係が解決しました。
====================================================================================================================================
 パッケージ                        アーキテクチャー         バージョン                         リポジトリー                   サイズ
====================================================================================================================================
インストール:
 sendmail-milter                   x86_64                   8.16.1-10.el9                      @commandline                    41 k
 spamass-milter                    x86_64                   0.4.0-13.el9                       @commandline                    61 k

トランザクションの概要
====================================================================================================================================
インストール  2 パッケージ
 また、2023年2月現在、Ruby 3.1の場合、milter-managerをインストールすることは出来ませんでした。
 今回は、Ruby 3.1を一度削除して、milter-managerをインストールしました。
依存関係が解決しました。
====================================================================================================================================
 パッケージ                           アーキテクチャー     バージョン                      リポジトリー                       サイズ
====================================================================================================================================
インストール:
 milter-manager                       x86_64               2.2.7-1.el9                     milter-manager_repos                76 k
依存関係のインストール:
 chkconfig                            x86_64               1.20-2.el9                      baseos                             162 k
 libev                                x86_64               4.33-5.el9                      baseos                              52 k
 libmilter-client                     x86_64               2.2.7-1.el9                     milter-manager_repos                73 k
 libmilter-client-devel               x86_64               2.2.7-1.el9                     milter-manager_repos               197 k
 libmilter-core                       x86_64               2.2.7-1.el9                     milter-manager_repos                90 k
 libmilter-core-devel                 x86_64               2.2.7-1.el9                     milter-manager_repos               204 k
 libmilter-server                     x86_64               2.2.7-1.el9                     milter-manager_repos                70 k
 libmilter-server-devel               x86_64               2.2.7-1.el9                     milter-manager_repos               191 k
 milter-manager-libs                  x86_64               2.2.7-1.el9                     milter-manager_repos               125 k
 ruby                                 x86_64               3.0.4-160.el9_0                 appstream                           41 k
 ruby-libs                            x86_64               3.0.4-160.el9_0                 appstream                          3.2 M
 ruby-milter-client                   x86_64               2.2.7-1.el9                     milter-manager_repos               212 k
 ruby-milter-core                     x86_64               2.2.7-1.el9                     milter-manager_repos               2.3 M
 ruby-milter-server                   x86_64               2.2.7-1.el9                     milter-manager_repos               196 k
 rubygem-io-console                   x86_64               0.5.7-160.el9_0                 appstream                           25 k
 rubygem-json                         x86_64               2.5.1-160.el9_0                 appstream                           54 k
 rubygem-psych                        x86_64               3.3.2-160.el9_0                 appstream                           51 k
 rubygem-rexml                        noarch               3.2.5-160.el9_0                 appstream                           95 k
 rubygems                             noarch               3.2.33-160.el9_0                appstream                          256 k
弱い依存関係のインストール:
 ruby-default-gems                    noarch               3.0.4-160.el9_0                 appstream                           32 k
 rubygem-bigdecimal                   x86_64               3.0.0-160.el9_0                 appstream                           54 k
 rubygem-bundler                      noarch               2.2.33-160.el9_0                appstream                          372 k
 rubygem-rdoc                         noarch               6.3.3-160.el9_0                 appstream                          400 k


●Postfixとmilter-managerの連携設定

 Postfixとmilter-managerを連携させるための設定を実施します。
# vi /etc/postfix/main.cf
# 下記を追加
milter_protocol = 6
milter_default_action = tempfail
milter_mail_macros = {auth_author} {auth_type} {auth_authen}
smtpd_milters = unix:/var/run/milter-manager/milter-manager.sock

# usermod -G milter-manager -a postfix ← milter-managerグループにpostfixユーザを追加
# systemctl reload postfix


●milter-managerとspamass-milterの連携設定

 milter-managerとspamass-milterを連携させるための設定を実施します。
# usermod -G postfix -a milter-manager ← postfixグループにmilter-managerユーザを追加
# systemctl restart milter-manager ← milter-manager再起動


●Procmail設定

 Procmailを設定します。

 ※2017.12.27 メールサーバでウィルスチェック機能を設定しようとしたが、clamav-milter及びclamav-milter-systemdをダウンロードできない(EPELにない、みたい)ためProcmailに直接記載する方法ととった。

# vi /etc/procmailrc
SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$HOME/.procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力

# Clam AntiVirusによるウィルスチェック
AV_REPORT=`/usr/bin/clamdscan  --no-summary - 2>&1 | awk -F\n -v ORS=' ' '{print}'|awk '{print $NF}'`
VIRUS=`if [ "$AV_REPORT" != "OK" ]; then echo Yes; else echo No;fi`
:0fw
| formail -i "X-Virus: $VIRUS"
# Clam AntiVirusがウィルス判定したメールは削除
:0
* ^X-Virus: Yes
/dev/null

# SpamAssassinにより判定されたSpam-Levelが一定値(ここでは20)以上の場合は削除
# ※必要なメールが削除されてしまう可能性があることに留意すること
# ※ユーザ毎にProcmailを設定している場合($HOME/.procmailrc)があるので注意すること
:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
/dev/null

 Procmailログのローテーション設定ファイルを作成します。
# vi /etc/logrotate.d/procmail
/home/*/.procmail.log {
    weekly
    missingok
    nocreate
    notifempty
    rotate 12
    dateext
}
# ※ユーザ毎にProcmailを設定している場合($HOME/.procmailrc)があるので注意すること


●PostfixとProcmailの連携設定

 PostfixとProcmailを連携させるための設定を実施します。
# vi /etc/postfix/main.cf
# The mailbox_command parameter specifies the optional external
# command to use instead of mailbox delivery. The command is run as
# the recipient with proper HOME, SHELL and LOGNAME environment settings.
# Exception:  delivery for root is done as $default_user.
#
# Other environment variables of interest: USER (recipient username),
# EXTENSION (address extension), DOMAIN (domain part of address),
# and LOCAL (the address localpart).
#
# Unlike other Postfix configuration parameters, the mailbox_command
# parameter is not subjected to $parameter substitutions. This is to
# make it easier to specify shell syntax (see example below).
#
# Avoid shell meta characters because they will force Postfix to run
# an expensive shell process. Procmail alone is expensive enough.
#
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
#
#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = /usr/bin/procmail ← 追加(Procmailと連携するようにする)
# systemctl reload postfix


●スパムメール振分け設定(受信メールサーバがIMAPの場合のみ)

 SpamAssassinによりメールヘッダにスパムメールの印を付けられたメールはスパム専用メールボックスへ、その他のメールは通常どおりのメールボックスへ配送するように設定します。
 そのため、スパム専用メールボックスを作成します。
 既存ユーザについては、メールボックスにスパム専用メールボックスを追加するようにします。
 また、新規ユーザについては、ユーザ追加時に自動でスパム専用メールボックスが作成されるようにします 。
 スパム専用メールボックスを作成するためのスクリプトを作成します。
【既存ユーザ対処】
# vi spamfolder-create
#!/bin/bash
for user in `ls /home`
do
    id -u $user > /dev/null 2>&1
    if [ $? -eq 0 ] && [ ! -d /home/$user/Maildir/.Spam/new ]; then
        mkdir -p /home/$user/Maildir/.Spam/new
        mkdir -p /home/$user/Maildir/.Spam/cur
        mkdir -p /home/$user/Maildir/.Spam/tmp
        chmod -R 700 /home/$user/Maildir/.Spam
        chown -R $user. /home/$user/Maildir/.Spam
        echo $user
    fi
done

# sh spamfolder-create ← スパム専用メールボックス作成スクリプト実行
user
・
・
・
user

# rm -f spamfolder-create ← スパム専用メールボックス作成スクリプト削除

【新規ユーザ対処】
# mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/.Spam
 スパムメールを振分ける設定をします。
 SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送するようにします。
# vi /etc/procmailrc
以下を最後尾へ追加
# SpamAssassinがスパム判定したメールはスパム専用メールボックス(/home/xxxx/Maildir/.Spam)へ配送
:0
*^X-Spam-Flag: YES
$HOME/Maildir/.Spam/


●spamass-milterの動作確認

 自分自身に空メールを送信し、受信したメールのヘッダに以下のメッセージが付加されていることを確認します。
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on serverA.bigbang.mydns.jp


●スパムチェック確認の動作確認

 自分自身にテストスパムメール(メール本文が「XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X」のメール)を送信し、受信メールサーバ別に以下のようになること確認します。

 ※テストスパムメールはスパムスコアが高く、/etc/procmailrcの「SpamAssassinにより判定されたSpam-Levelが一定値(ここでは20)以上の場合は削除」のルールを有効にしているとサーバ側で削除されてしまいますので、Spamフォルダへの配送を確認する際は当該ルールを一時的にコメントアウトしてから確認するようにします。

 【受信メールサーバがPOPの場合】
 メール件名に「***SPAM***」が付加されてSpamフォルダへ配送されていること

 【受信メールサーバがIMAPの場合】
 Spamフォルダへ配送されていること

●スパムメール学習(受信メールサーバがIMAPの場合のみ)

 SpamAssassinが誤って正常メールをスパムメールと判断したり、逆にスパムメールを正常メールと判断してしまった場合、以後の誤認識を防止するためにSpamAssassinに学習をさせ、チェック精度を上げるようにします。
 ここでは、受信トレイの既読メールを正常メールとして、Spamフォルダの既読メールをスパムメールとして、定期的にSpamAssassinに学習させるようにします。

 ※SpamAssassinが誤って配送したメールは、ユーザ自身の操作により正常メールなら受信トレイへ、スパムメールならSpamフォルダへ移動しておくようにします(放置したままの場合、正常メールをスパムメールとして、逆にスパムメールを正常メールとして学習してしまいます)。
# yum -y install tmpwatch ← tmpwatchインストール※古いスパムメールを削除するため
 SpamAssassin日次学習ためのスクリプトを作成します。
# vi /etc/cron.daily/spamassassin-learn
#!/bin/bash
PATH=/usr/sbin:/usr/bin:/bin
for user in `ls /home/`
do
    # 正常メール学習
    # 正常メールをSpamAssassinに学習させる
    hammail=/home/$user/Maildir/cur
    [ -d "$hammail" ] && su $user -s "/bin/bash" -c "sa-learn --ham $hammail | logger -p mail.info -t 'sa-learn for $user'"
    hammail=/home/$user/Maildir/.Trash/cur
    [ -d "$hammail" ] && su $user -s "/bin/bash" -c "sa-learn --ham $hammail | logger -p mail.info -t 'sa-learn for $user'"
    # スパムメール
    spammail=/home/$user/Maildir/.Spam/cur
    # スパムメール学習
    if [ -d "$spammail" ]; then
        ## スパムメールをSpamAssassinに学習させる
        su $user -s "/bin/bash" -c "sa-learn --spam $spammail | logger -p mail.info -t 'sa-learn for $user'"
        # 受信後一ヶ月経過したスパムメールを削除
        tmpwatch -m 720 $spammail
    fi
done

# chmod +x /etc/cron.daily/spamassassin-learn
※スパムメール学習結果のログは/var/log/maillogに記録されます。


●milter-reject

 メールサーバを動作させているLAN上の別のサーバからメールを送信できていないことに気がつきました。よくよく調査するとインターネットからのメールも受信していないようです。
 /var/log/maillogを調べてみると下記のようなログが見つかりました。
May 19 20:33:31 inu postfix/smtpd[12878]: warning: connect to Milter service \
    unix:/var/run/milter-manager/milter-manager.sock: No such file or directory
May 19 20:33:31 inu postfix/smtpd[12878]: NOQUEUE: milter-reject: CONNECT from serverA.bigbang.mydns.jp[192.168.0.13]: \
    451 4.7.1 Service unavailable - try again later; proto=SMTP
 原因は不明ですが、milter-managerの再起動により回復しました。
# systemctl restart milter-manager


●/usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.logと言うメールを受信

 2021年3月12日の朝から毎日メールで下記のようなものが届くようになりました。
channel: no 'mirrors.sought.rules.yerp.org' record found, channel failed
12- 3月-2021 05:46:36: SpamAssassin: Unknown error code 3 from sa-update
 インターネットで調べてみると、何らかの手違いで無効化されていたSoughtルールセットが有効化されるようになっていたようです。
 「SpamAssassinのドキュメントではSoughtルールセットを使用しないことを推奨しています。」
 ということなので下記のように対処します。
# vi /etc/mail/spamassassin/channel.d/sought.conf

※変更前

# http://wiki.apache.org/spamassassin/SoughtRules
CHANNELURL=sought.rules.yerp.org
KEYID=6C6191E3
# Ignore everything below.
return 0

※変更後

# http://wiki.apache.org/spamassassin/SoughtRules
# CHANNELURL=sought.rules.yerp.org
# KEYID=6C6191E3
# Ignore everything below.
return 0
 SpamAssassinを再起動します。
# systemctl restart spamassassin
 以上で終了です。

●milter-managerをアップデートできない

 参考URL:CentOS 7にRuby 3.0をインストール(SCL)

 サーバをアップデートしようとすると下記のように依存関係のためアップデートできません。

# yum update
読み込んだプラグイン:fastestmirror, langpacks
Repository google-chrome is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * epel: ftp.yz.yamagata-u.ac.jp
 * epel-debuginfo: ftp.yz.yamagata-u.ac.jp
 * epel-source: ftp.yz.yamagata-u.ac.jp
 * remi-safe: ftp.riken.jp
milter-manager_repos/x86_64/signature                                                                        |  833 B  00:00:00     
milter-manager_repos/x86_64/signature                                                                        | 1.8 kB  00:00:00 !!! 
milter-manager_repos-source/signature                                                                        |  833 B  00:00:00     
milter-manager_repos-source/signature                                                                        | 1.8 kB  00:00:00 !!! 
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libmilter-client.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-client.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-client-devel.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-client-devel.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-core.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-core.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-core-devel.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-core-devel.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-server.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-server.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-server-devel.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-server-devel.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ milter-manager.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ milter-manager.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ milter-manager-libs.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ milter-manager-libs.x86_64 0:2.1.6-1.el7 を アップデート
--> 依存性の処理をしています: rh-ruby30-rubygem-rexml のパッケージ: milter-manager-libs-2.1.6-1.el7.x86_64
--> 依存性の処理をしています: libruby.so.3.0()(64bit) のパッケージ: milter-manager-libs-2.1.6-1.el7.x86_64
---> パッケージ ruby-milter-client.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ ruby-milter-client.x86_64 0:2.1.6-1.el7 を アップデート
--> 依存性の処理をしています: rh-ruby30-ruby のパッケージ: ruby-milter-client-2.1.6-1.el7.x86_64
--> 依存性の処理をしています: libruby.so.3.0()(64bit) のパッケージ: ruby-milter-client-2.1.6-1.el7.x86_64
---> パッケージ ruby-milter-core.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ ruby-milter-core.x86_64 0:2.1.6-1.el7 を アップデート
--> 依存性の処理をしています: rh-ruby30-ruby のパッケージ: ruby-milter-core-2.1.6-1.el7.x86_64
--> 依存性の処理をしています: libruby.so.3.0()(64bit) のパッケージ: ruby-milter-core-2.1.6-1.el7.x86_64
---> パッケージ ruby-milter-server.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ ruby-milter-server.x86_64 0:2.1.6-1.el7 を アップデート
--> 依存性の処理をしています: rh-ruby30-ruby のパッケージ: ruby-milter-server-2.1.6-1.el7.x86_64
--> 依存性の処理をしています: libruby.so.3.0()(64bit) のパッケージ: ruby-milter-server-2.1.6-1.el7.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: milter-manager-libs-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: rh-ruby30-rubygem-rexml
エラー: パッケージ: ruby-milter-core-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: libruby.so.3.0()(64bit)
エラー: パッケージ: ruby-milter-client-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: rh-ruby30-ruby
エラー: パッケージ: ruby-milter-server-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: rh-ruby30-ruby
エラー: パッケージ: ruby-milter-client-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: libruby.so.3.0()(64bit)
エラー: パッケージ: ruby-milter-core-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: rh-ruby30-ruby
エラー: パッケージ: milter-manager-libs-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: libruby.so.3.0()(64bit)
エラー: パッケージ: ruby-milter-server-2.1.6-1.el7.x86_64 (milter-manager_repos)
             要求: libruby.so.3.0()(64bit)
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

 上記URLを参照して作業を進めてみます。
# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

# yum install -y centos-release-scl
# scl enable rh-ruby30 bash
 現在の状態を確認します。
# which ruby
/bin/ruby
[root@neko ~]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
[root@neko ~]# yum info rh-ruby30
読み込んだプラグイン:fastestmirror, langpacks
Repository google-chrome is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * centos-sclo-rh: ftp.yz.yamagata-u.ac.jp
 * centos-sclo-sclo: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.yz.yamagata-u.ac.jp
 * epel-debuginfo: ftp.yz.yamagata-u.ac.jp
 * epel-source: ftp.yz.yamagata-u.ac.jp
 * remi-safe: ftp.riken.jp
利用可能なパッケージ
名前                : rh-ruby30
アーキテクチャー    : x86_64
バージョン          : 3.7
リリース            : 2.el7
容量                : 2.9 k
リポジトリー        : centos-sclo-rh/x86_64
要約                : Package that installs rh-ruby30
ライセンス          : GPLv2+
説明                : This is the main package for rh-ruby30 Software Collection.
 アップデートを実行します。

# yum update -y
読み込んだプラグイン:fastestmirror, langpacks
Repository google-chrome is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * centos-sclo-rh: ftp.tsukuba.wide.ad.jp
 * centos-sclo-sclo: ftp.tsukuba.wide.ad.jp
 * epel: ftp.yz.yamagata-u.ac.jp
 * epel-debuginfo: ftp.yz.yamagata-u.ac.jp
 * epel-source: ftp.yz.yamagata-u.ac.jp
 * remi-safe: ftp.riken.jp
milter-manager_repos/x86_64/signature                                                                        |  833 B  00:00:00     
milter-manager_repos/x86_64/signature                                                                        | 1.8 kB  00:00:00 !!! 
milter-manager_repos-source/signature                                                                        |  833 B  00:00:00     
milter-manager_repos-source/signature                                                                        | 1.8 kB  00:00:00 !!! 
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libmilter-client.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-client.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-client-devel.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-client-devel.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-core.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-core.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-core-devel.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-core-devel.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-server.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-server.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ libmilter-server-devel.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ libmilter-server-devel.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ milter-manager.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ milter-manager.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ milter-manager-libs.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ milter-manager-libs.x86_64 0:2.1.6-1.el7 を アップデート
--> 依存性の処理をしています: rh-ruby30-rubygem-rexml のパッケージ: milter-manager-libs-2.1.6-1.el7.x86_64
--> 依存性の処理をしています: libruby.so.3.0()(64bit) のパッケージ: milter-manager-libs-2.1.6-1.el7.x86_64
---> パッケージ ruby-milter-client.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ ruby-milter-client.x86_64 0:2.1.6-1.el7 を アップデート
--> 依存性の処理をしています: rh-ruby30-ruby のパッケージ: ruby-milter-client-2.1.6-1.el7.x86_64
---> パッケージ ruby-milter-core.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ ruby-milter-core.x86_64 0:2.1.6-1.el7 を アップデート
---> パッケージ ruby-milter-server.x86_64 0:2.1.5-1.el7 を 更新
---> パッケージ ruby-milter-server.x86_64 0:2.1.6-1.el7 を アップデート
--> トランザクションの確認を実行しています。
---> パッケージ rh-ruby30-ruby.x86_64 0:3.0.2-148.el7 を インストール
--> 依存性の処理をしています: rh-ruby30-ruby(rubygems) >= 3.2.22 のパッケージ: rh-ruby30-ruby-3.0.2-148.el7.x86_64
--> 依存性の処理をしています: rh-ruby30-ruby-default-gems >= 3.0.2 のパッケージ: rh-ruby30-ruby-3.0.2-148.el7.x86_64
--> 依存性の処理をしています: rh-ruby30-rubygem(bigdecimal) >= 3.0.0 のパッケージ: rh-ruby30-ruby-3.0.2-148.el7.x86_64
--> 依存性の処理をしています: rh-ruby30-rubygem(io-console) >= 0.5.7 のパッケージ: rh-ruby30-ruby-3.0.2-148.el7.x86_64
--> 依存性の処理をしています: rh-ruby30-rubygem(json) >= 2.5.1 のパッケージ: rh-ruby30-ruby-3.0.2-148.el7.x86_64
--> 依存性の処理をしています: rh-ruby30-rubygem(psych) >= 3.3.0 のパッケージ: rh-ruby30-ruby-3.0.2-148.el7.x86_64
--> 依存性の処理をしています: rh-ruby30-runtime のパッケージ: rh-ruby30-ruby-3.0.2-148.el7.x86_64
---> パッケージ rh-ruby30-ruby-libs.x86_64 0:3.0.2-148.el7 を インストール
---> パッケージ rh-ruby30-rubygem-rexml.noarch 0:3.2.5-148.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ rh-ruby30-ruby-default-gems.noarch 0:3.0.2-148.el7 を インストール
---> パッケージ rh-ruby30-rubygem-bigdecimal.x86_64 0:3.0.0-148.el7 を インストール
---> パッケージ rh-ruby30-rubygem-io-console.x86_64 0:0.5.7-148.el7 を インストール
---> パッケージ rh-ruby30-rubygem-json.x86_64 0:2.5.1-148.el7 を インストール
---> パッケージ rh-ruby30-rubygem-psych.x86_64 0:3.3.0-148.el7 を インストール
---> パッケージ rh-ruby30-rubygems.noarch 0:3.2.22-148.el7 を インストール
--> 依存性の処理をしています: rh-ruby30-rubygem(bundler) >= 2.2.22 のパッケージ: rh-ruby30-rubygems-3.2.22-148.el7.noarch
---> パッケージ rh-ruby30-runtime.x86_64 0:3.7-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ rh-ruby30-rubygem-bundler.noarch 0:2.2.22-148.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================================================
 Package                                   アーキテクチャー    バージョン                   リポジトリー                       容量
====================================================================================================================================
更新します:
 libmilter-client                          x86_64              2.1.6-1.el7                  milter-manager_repos               95 k
 libmilter-client-devel                    x86_64              2.1.6-1.el7                  milter-manager_repos              266 k
 libmilter-core                            x86_64              2.1.6-1.el7                  milter-manager_repos              136 k
 libmilter-core-devel                      x86_64              2.1.6-1.el7                  milter-manager_repos              272 k
 libmilter-server                          x86_64              2.1.6-1.el7                  milter-manager_repos               93 k
 libmilter-server-devel                    x86_64              2.1.6-1.el7                  milter-manager_repos              258 k
 milter-manager                            x86_64              2.1.6-1.el7                  milter-manager_repos              102 k
 milter-manager-libs                       x86_64              2.1.6-1.el7                  milter-manager_repos              119 k
 ruby-milter-client                        x86_64              2.1.6-1.el7                  milter-manager_repos              278 k
 ruby-milter-core                          x86_64              2.1.6-1.el7                  milter-manager_repos              500 k
 ruby-milter-server                        x86_64              2.1.6-1.el7                  milter-manager_repos              262 k
依存性関連でのインストールをします:
 rh-ruby30-ruby                            x86_64              3.0.2-148.el7                centos-sclo-rh                     82 k
 rh-ruby30-ruby-default-gems               noarch              3.0.2-148.el7                centos-sclo-rh                     77 k
 rh-ruby30-ruby-libs                       x86_64              3.0.2-148.el7                centos-sclo-rh                    3.5 M
 rh-ruby30-rubygem-bigdecimal              x86_64              3.0.0-148.el7                centos-sclo-rh                     92 k
 rh-ruby30-rubygem-bundler                 noarch              2.2.22-148.el7               centos-sclo-rh                    440 k
 rh-ruby30-rubygem-io-console              x86_64              0.5.7-148.el7                centos-sclo-rh                     64 k
 rh-ruby30-rubygem-json                    x86_64              2.5.1-148.el7                centos-sclo-rh                     91 k
 rh-ruby30-rubygem-psych                   x86_64              3.3.0-148.el7                centos-sclo-rh                     90 k
 rh-ruby30-rubygem-rexml                   noarch              3.2.5-148.el7                centos-sclo-rh                    142 k
 rh-ruby30-rubygems                        noarch              3.2.22-148.el7               centos-sclo-rh                    313 k
 rh-ruby30-runtime                         x86_64              3.7-2.el7                    centos-sclo-rh                     25 k

トランザクションの要約
====================================================================================================================================
インストール                ( 11 個の依存関係のパッケージ)
更新          11 パッケージ

総ダウンロード容量: 7.3 M
Downloading packages:
No Presto metadata available for milter-manager_repos
(1/22): libmilter-client-2.1.6-1.el7.x86_64.rpm                                                              |  95 kB  00:00:00     
(2/22): libmilter-client-devel-2.1.6-1.el7.x86_64.rpm                                                        | 266 kB  00:00:00     
(3/22): libmilter-core-2.1.6-1.el7.x86_64.rpm                                                                | 136 kB  00:00:00     
(4/22): libmilter-core-devel-2.1.6-1.el7.x86_64.rpm                                                          | 272 kB  00:00:00     
(5/22): libmilter-server-2.1.6-1.el7.x86_64.rpm                                                              |  93 kB  00:00:00     
(6/22): milter-manager-2.1.6-1.el7.x86_64.rpm                                                                | 102 kB  00:00:00     
警告: /var/cache/yum/x86_64/7/centos-sclo-rh/packages/rh-ruby30-ruby-3.0.2-148.el7.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID f2ee9d55: NOKEY
rh-ruby30-ruby-3.0.2-148.el7.x86_64.rpm の公開鍵がインストールされていません
(7/22): rh-ruby30-ruby-3.0.2-148.el7.x86_64.rpm                                                              |  82 kB  00:00:00     
(8/22): milter-manager-libs-2.1.6-1.el7.x86_64.rpm                                                           | 119 kB  00:00:00     
(9/22): rh-ruby30-rubygem-bigdecimal-3.0.0-148.el7.x86_64.rpm                                                |  92 kB  00:00:00     
(10/22): rh-ruby30-rubygem-io-console-0.5.7-148.el7.x86_64.rpm                                               |  64 kB  00:00:00     
(11/22): rh-ruby30-rubygem-json-2.5.1-148.el7.x86_64.rpm                                                     |  91 kB  00:00:00     
(12/22): rh-ruby30-ruby-default-gems-3.0.2-148.el7.noarch.rpm                                                |  77 kB  00:00:00     
(13/22): rh-ruby30-rubygem-psych-3.3.0-148.el7.x86_64.rpm                                                    |  90 kB  00:00:00     
(14/22): rh-ruby30-rubygem-rexml-3.2.5-148.el7.noarch.rpm                                                    | 142 kB  00:00:00     
(15/22): rh-ruby30-runtime-3.7-2.el7.x86_64.rpm                                                              |  25 kB  00:00:00     
(16/22): rh-ruby30-rubygems-3.2.22-148.el7.noarch.rpm                                                        | 313 kB  00:00:00     
(17/22): ruby-milter-client-2.1.6-1.el7.x86_64.rpm                                                           | 278 kB  00:00:00     
(18/22): rh-ruby30-rubygem-bundler-2.2.22-148.el7.noarch.rpm                                                 | 440 kB  00:00:00     
(19/22): rh-ruby30-ruby-libs-3.0.2-148.el7.x86_64.rpm                                                        | 3.5 MB  00:00:00     
(20/22): libmilter-server-devel-2.1.6-1.el7.x86_64.rpm                                                       | 258 kB  00:00:01     
(21/22): ruby-milter-server-2.1.6-1.el7.x86_64.rpm                                                           | 262 kB  00:00:00     
(22/22): ruby-milter-core-2.1.6-1.el7.x86_64.rpm                                                             | 500 kB  00:00:01     
------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                1.9 MB/s | 7.3 MB  00:00:03     
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo から鍵を取得中です。
Importing GPG key 0xF2EE9D55:
 Userid     : "CentOS SoftwareCollections SIG (https://wiki.centos.org/SpecialInterestGroup/SCLo) "
 Fingerprint: c4db d535 b1fb ba14 f8ba 64a8 4eb8 4e71 f2ee 9d55
 Package    : centos-release-scl-rh-2-3.el7.centos.noarch (@extras)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : rh-ruby30-runtime-3.7-2.el7.x86_64                                                                 1/33 
  インストール中          : rh-ruby30-ruby-libs-3.0.2-148.el7.x86_64                                                           2/33 
  更新します              : libmilter-core-2.1.6-1.el7.x86_64                                                                  3/33 
  更新します              : libmilter-client-2.1.6-1.el7.x86_64                                                                4/33 
  更新します              : libmilter-server-2.1.6-1.el7.x86_64                                                                5/33 
  更新します              : libmilter-core-devel-2.1.6-1.el7.x86_64                                                            6/33 
  更新します              : libmilter-client-devel-2.1.6-1.el7.x86_64                                                          7/33 
  更新します              : libmilter-server-devel-2.1.6-1.el7.x86_64                                                          8/33 
  インストール中          : rh-ruby30-ruby-default-gems-3.0.2-148.el7.noarch                                                   9/33 
  インストール中          : rh-ruby30-rubygem-io-console-0.5.7-148.el7.x86_64                                                 10/33 
  インストール中          : rh-ruby30-rubygem-json-2.5.1-148.el7.x86_64                                                       11/33 
  インストール中          : rh-ruby30-rubygem-psych-3.3.0-148.el7.x86_64                                                      12/33 
  インストール中          : rh-ruby30-ruby-3.0.2-148.el7.x86_64                                                               13/33 
  インストール中          : rh-ruby30-rubygem-bigdecimal-3.0.0-148.el7.x86_64                                                 14/33 
  インストール中          : rh-ruby30-rubygems-3.2.22-148.el7.noarch                                                          15/33 
  インストール中          : rh-ruby30-rubygem-bundler-2.2.22-148.el7.noarch                                                   16/33 
  インストール中          : rh-ruby30-rubygem-rexml-3.2.5-148.el7.noarch                                                      17/33 
  更新します              : milter-manager-libs-2.1.6-1.el7.x86_64                                                            18/33 
  更新します              : ruby-milter-core-2.1.6-1.el7.x86_64                                                               19/33 
  更新します              : ruby-milter-client-2.1.6-1.el7.x86_64                                                             20/33 
  更新します              : ruby-milter-server-2.1.6-1.el7.x86_64                                                             21/33 
  更新します              : milter-manager-2.1.6-1.el7.x86_64                                                                 22/33 
  整理中                  : milter-manager-2.1.5-1.el7.x86_64                                                                 23/33 
  整理中                  : ruby-milter-client-2.1.5-1.el7.x86_64                                                             24/33 
  整理中                  : ruby-milter-server-2.1.5-1.el7.x86_64                                                             25/33 
  整理中                  : libmilter-server-devel-2.1.5-1.el7.x86_64                                                         26/33 
  整理中                  : libmilter-client-devel-2.1.5-1.el7.x86_64                                                         27/33 
  整理中                  : ruby-milter-core-2.1.5-1.el7.x86_64                                                               28/33 
  整理中                  : milter-manager-libs-2.1.5-1.el7.x86_64                                                            29/33 
  整理中                  : libmilter-core-devel-2.1.5-1.el7.x86_64                                                           30/33 
  整理中                  : libmilter-client-2.1.5-1.el7.x86_64                                                               31/33 
  整理中                  : libmilter-server-2.1.5-1.el7.x86_64                                                               32/33 
  整理中                  : libmilter-core-2.1.5-1.el7.x86_64                                                                 33/33 
  検証中                  : libmilter-client-2.1.6-1.el7.x86_64                                                                1/33 
  検証中                  : milter-manager-libs-2.1.6-1.el7.x86_64                                                             2/33 
  検証中                  : rh-ruby30-rubygem-rexml-3.2.5-148.el7.noarch                                                       3/33 
  検証中                  : rh-ruby30-rubygem-bundler-2.2.22-148.el7.noarch                                                    4/33 
  検証中                  : libmilter-client-devel-2.1.6-1.el7.x86_64                                                          5/33 
  検証中                  : ruby-milter-server-2.1.6-1.el7.x86_64                                                              6/33 
  検証中                  : rh-ruby30-runtime-3.7-2.el7.x86_64                                                                 7/33 
  検証中                  : libmilter-core-2.1.6-1.el7.x86_64                                                                  8/33 
  検証中                  : rh-ruby30-ruby-default-gems-3.0.2-148.el7.noarch                                                   9/33 
  検証中                  : libmilter-core-devel-2.1.6-1.el7.x86_64                                                           10/33 
  検証中                  : libmilter-server-2.1.6-1.el7.x86_64                                                               11/33 
  検証中                  : rh-ruby30-ruby-libs-3.0.2-148.el7.x86_64                                                          12/33 
  検証中                  : rh-ruby30-rubygem-io-console-0.5.7-148.el7.x86_64                                                 13/33 
  検証中                  : rh-ruby30-rubygem-json-2.5.1-148.el7.x86_64                                                       14/33 
  検証中                  : ruby-milter-core-2.1.6-1.el7.x86_64                                                               15/33 
  検証中                  : libmilter-server-devel-2.1.6-1.el7.x86_64                                                         16/33 
  検証中                  : ruby-milter-client-2.1.6-1.el7.x86_64                                                             17/33 
  検証中                  : rh-ruby30-rubygem-psych-3.3.0-148.el7.x86_64                                                      18/33 
  検証中                  : rh-ruby30-ruby-3.0.2-148.el7.x86_64                                                               19/33 
  検証中                  : rh-ruby30-rubygems-3.2.22-148.el7.noarch                                                          20/33 
  検証中                  : rh-ruby30-rubygem-bigdecimal-3.0.0-148.el7.x86_64                                                 21/33 
  検証中                  : milter-manager-2.1.6-1.el7.x86_64                                                                 22/33 
  検証中                  : libmilter-server-2.1.5-1.el7.x86_64                                                               23/33 
  検証中                  : libmilter-core-devel-2.1.5-1.el7.x86_64                                                           24/33 
  検証中                  : libmilter-server-devel-2.1.5-1.el7.x86_64                                                         25/33 
  検証中                  : ruby-milter-server-2.1.5-1.el7.x86_64                                                             26/33 
  検証中                  : milter-manager-libs-2.1.5-1.el7.x86_64                                                            27/33 
  検証中                  : libmilter-core-2.1.5-1.el7.x86_64                                                                 28/33 
  検証中                  : libmilter-client-devel-2.1.5-1.el7.x86_64                                                         29/33 
  検証中                  : libmilter-client-2.1.5-1.el7.x86_64                                                               30/33 
  検証中                  : milter-manager-2.1.5-1.el7.x86_64                                                                 31/33 
  検証中                  : ruby-milter-client-2.1.5-1.el7.x86_64                                                             32/33 
  検証中                  : ruby-milter-core-2.1.5-1.el7.x86_64                                                               33/33 

依存性関連をインストールしました:
  rh-ruby30-ruby.x86_64 0:3.0.2-148.el7                           rh-ruby30-ruby-default-gems.noarch 0:3.0.2-148.el7               
  rh-ruby30-ruby-libs.x86_64 0:3.0.2-148.el7                      rh-ruby30-rubygem-bigdecimal.x86_64 0:3.0.0-148.el7              
  rh-ruby30-rubygem-bundler.noarch 0:2.2.22-148.el7               rh-ruby30-rubygem-io-console.x86_64 0:0.5.7-148.el7              
  rh-ruby30-rubygem-json.x86_64 0:2.5.1-148.el7                   rh-ruby30-rubygem-psych.x86_64 0:3.3.0-148.el7                   
  rh-ruby30-rubygem-rexml.noarch 0:3.2.5-148.el7                  rh-ruby30-rubygems.noarch 0:3.2.22-148.el7                       
  rh-ruby30-runtime.x86_64 0:3.7-2.el7                           

更新:
  libmilter-client.x86_64 0:2.1.6-1.el7     libmilter-client-devel.x86_64 0:2.1.6-1.el7 libmilter-core.x86_64 0:2.1.6-1.el7        
  libmilter-core-devel.x86_64 0:2.1.6-1.el7 libmilter-server.x86_64 0:2.1.6-1.el7       libmilter-server-devel.x86_64 0:2.1.6-1.el7
  milter-manager.x86_64 0:2.1.6-1.el7       milter-manager-libs.x86_64 0:2.1.6-1.el7    ruby-milter-client.x86_64 0:2.1.6-1.el7    
  ruby-milter-core.x86_64 0:2.1.6-1.el7     ruby-milter-server.x86_64 0:2.1.6-1.el7    

完了しました!
 正常にアップデートできました。

●スパムメール除外方法

 参考URL:SpamAssassinの設定方法。迷惑メールを自動で排除!

 スパムメールと判定されるメールのうち、特定メールアドレスをスパム判定から除外するには下記のように設定します。
例:イートレンドからのメルマガをスパム設定から除外

# vi /etc/mail/spamassassin/local.cf
whitelist_from_rcvd meruma@e-trend.co.jp

# systemctl restart spamassassin
 スパムメールと判定されるメールのうち、特定ドメインからのメールをスパム判定から除外するには下記のように設定します。
例:イートレンドからのメールをスパム設定から除外

# vi /etc/mail/spamassassin/local.cf
whitelist_from_rcvd *@e-trend.co.jp

# systemctl restart spamassassin
 これにより、meruma@e-trend.co.jpまたは@e-trend.co.jpからのメールはスパム判定されなくなります。