Qmail for CentOS 7 with SpamAssassin 3.4.2

この記事は約11分で読めます。

Qmail 1.03 (netqmail 1.06) に、SpamAssassin の 3.4.2 を適用してみます。

Qmail関連記事

qmail (netqmail) for CentOS 7. and vpopmail,tcpserver,daemontools (2019/03/10)
Qmail for CentOS7 With SpamAssassin 3.4 ユーザ毎のuser_prefs (2019/03/16)

SpamAssassin インストール

2019/3/11 時点での最新版をダウンロードします。

# tar xzvf Mail-SpamAssassin-3.4.2.tar.gz
# cd Mail-SpamAssassin-3.4.2
# perl Makefile.PL

# perl Makefile.PL 
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 8.
BEGIN failed--compilation aborted at Makefile.PL line 8.

↑上記のようなエラーがでたら、
# yum install perl-ExtUtils-MakeMaker

↑ と、ExtUtils-MakeMakerをインストールします。

そして、SpamAssassin のインストール方法は、

Postfix3.3 迷惑メール対策 SpamAssassin(スパムアサシン

と同じになります。上記を参考にしてください。

# make
# make install

まで、行います。

SpamAssassin 起動

起動方法を、CentOS7 系の systemctlで設定をします。

# vi /etc/sysconfig/spamassassin
---------------------------------------
SPAMDOPTIONS="-d -v -u vpopmail"
---------------------------------------

↑と、オプションを設定します。
# vi /etc/systemd/system/spamassassin.service
---------------------------------------
[Unit]
Description=Spamassassin daemon
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/spamd.pid
EnvironmentFile=-/etc/sysconfig/spamassassin
ExecStart=/usr/local/bin/spamd -r /var/run/spamd.pid $SPAMDOPTIONS
StandardOutput=syslog
StandardError=syslog
Restart=always

[Install]
WantedBy=multi-user.target
---------------------------------------

↑と、記述します。
# systemctl start spamassassin

↑とやると、スタートしますが、エラーとなってしまいます・・・

/var/log/messages をみると、

spamd: logger: add Syslog failed: Can't locate Sys/Syslog.pm in @INC (@INC contains: /usr/local/share/perl5 /usr/local/lib64/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/local/share/perl5/Mail/SpamAssassin/Logger/Syslog.pm line 39.

↑と、なっています。
# yum install -y perl-Sys-Syslog

↑と、syslogのツールを入れると解消します。
# systemctl start spamassassin

↑再び、起動をすると、きちんと起動をされました。
# ./sa-update

↑インストールしたディレクトリに戻り、上記のコマンドを実行して、ルールファイルのアップデートします。
# ls -al /var/lib/spamassassin/3.004002/
drwxr-xr-x 3 root root 4096 Mar XX XX:XX .
drwxr-xr-x 3 root root 4096 Mar XX XX:XX ..
drwxr-xr-x 2 root root 4096 Mar XX XX:XX updates_spamassassin_org
-rw-r--r-- 1 root root 2950 Mar XX XX:XX updates_spamassassin_org.cf

↑と、ルールファイルが更新されています。

maildropインストール

メールを、maildirに落とすツール、maildropを入れます。
この、maildropは、きちんとアップデートされているようです。

2019年3月12日現在で、最新版の、3.0.0を入れます。

# wget https://sourceforge.net/projects/courier/files/maildrop/3.0.0/maildrop-3.0.0.tar.bz2
# tar xivf maildrop-3.0.0.tar.bz2 
# cd maildrop-3.0.0/
# ./configure
 (略)
checking for LIBIDN... no
configure: error: libidn not found

↑上記のエラーが出たので・・・
# yum install libidn-devel

↑と、libidnの開発環境を入れます。
# ./configure
checking courier-unicode library and version... configure: error: 
ERROR: The Courier Unicode Library 2.1 header files appear not to be installed.
You may need to upgrade the library or install a separate development
subpackage in addition to the main package.

↑再び configure するが、また、エラーに・・・
# wget https://sourceforge.net/projects/courier/files/courier-unicode/2.1/courier-unicode-2.1.tar.bz2/download
# mv download courier-unicode-2.1.tar.bz2
# tar xivf courier-unicode-2.1.tar.bz2
# cd courier-unicode-2.1
# ./configure
# make
# make install

↑とインストールする

maildropに戻り

# ./configure
# make
# make install

で、正常にインストールができた!

SpamAssassinで迷惑メールを判定

spamassassin用のmailfilter_simpleを用意します。

# vi /home/vpopmail/etc/mailfilter_simple
---------------------------------------------
if ( $SIZE < 262144 )
{
  exception {
    xfilter "/usr/local/bin/spamc -f -u $EXT@$HOST"
  }
}
to "./Maildir/"
--------------------------------------------
# chown vpopmail.vchkpw /home/vpopmail/etc/mailfilter_simple

ファイル自体、vpopmail.vchkpwのオーナーにしておきます。

SpamAssassin をしたいメールの「Maildir」のところ
(/home/vpopmail/(ドメイン)/(@の前)/のところ)

.qmailをおき、その中には、

|/var/qmail/bin/preline /usr/local/bin/maildrop /home/vpopmail/etc/mailfilter_simple

としておく。

該当のメールアドレスにメールを送ってみます。

# starting delivery 25: msg 1579763 to local (メールアドレス)
# status: local 1/10 remote 0/20
# delivery 25: deferral: /usr/local/bin/maildrop:_error_while_loading_shared_libraries:_libcourier-unicode.so.4:_cannot_open_shared_object_file:_No_such_file_or_directory/
# status: local 0/10 remote 0/20
# status: exiting

↑と、エラーになる。
ライブラリを読むことできなかったと・・・
# find / -name '*unicode.so*' -print
/usr/local/lib/libcourier-unicode.so
/usr/local/lib/libcourier-unicode.so.4
/usr/local/lib/libcourier-unicode.so.4.1.0

と、ライブラリの場所を特定する。
「/usr/local/」の下であるとわかります。
# vi /etc/ld.so.conf.d/locallib.conf
------------------------
/usr/local/lib
------------------------
# ldconfig

と、ライブラリを設定します。
# /etc/rc.d/init/svscan start

と、qmailを起動させます。
# vi /var/log/qmail/current

# status: local 0/10 remote 0/20
# starting delivery 1: msg 1579763 to (メールアドレス)
# status: local 1/10 remote 0/20
# delivery 1: deferral: /usr/local/bin/maildrop:_Cannot_have_world/group_permissions_on_the_filter_file_-_for_your_own_good./
# status: local 0/10 remote 0/20

↑再びエラーに・・・
mail filterのパーミッション、グループと、otherをオフにと!
つまり600に!
# ls -al /home/vpopmail/etc/mailfilter_simple 
-rw-r--r-- 1 vpopmail vchkpw 137 Mar XX XX:XX /home/vpopmail/etc/mailfilter_simple

↑となっていた。
# chmod go-r /home/vpopmail/etc/mailfilter_simple 
# ls -al /home/vpopmail/etc/mailfilter_simple 
-rw------- 1 vpopmail vchkpw 137 Mar XX XX:XX /home/vpopmail/etc/mailfilter_simple

↑と、変更します。

再びメールを送ってみます。

From ○○ Wed Mar XX XX:XX:XX 2019
Return-Path: <メールアドレス>
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on (ホスト名)
X-Spam-Level: **
X-Spam-Status: No, score=2.3 required=8.0 tests=BODY_SINGLE_WORD,
        CONTENT_TYPE_PRESENT,NO_RELAYS autolearn=no autolearn_force=no
        version=3.4.2
Delivered-To: (メールアドレス)
From: (メールアドレス)
Date: Wed, XX Mar 2019 XX:XX:XX +0900
To: (メールアドレス)
Subject: ○○

と、メールがSpamAssassinを通った!
迷惑メールは、「No」という判定。

Qmail + SpamAssassin 次回

メールアドレス毎の迷惑メール判定など

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