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 次回
メールアドレス毎の迷惑メール判定など