「広告」

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

「広告」
記事内に広告が含まれています。
「広告」

Postfix 3.4 [迷惑メール対策 SpamAssassin] CentOS7 (マルチドメイン)
↑こちらもご覧ください。記事が新しいです。

Postfix3.3 迷惑メール対策 SpamAssassin(スパムアサシン)設定その2 (2018/10/27 追加)
Postfix3.3 迷惑メール対策 SpamAssassin(スパムアサシン)[ユーザ毎の設定] (2018/11/01 追加)

「広告」

SpamAssassin(スパムアサシン)とは

SpamAssassin(スパムアサシン)とは、届いたメールが、迷惑メールかどうかを判定してくれるツールです。

2018-09-16に最新版の、3.4.2がリリースされています。
誤判定もありますが、それなりに、「迷惑メール(スパム)」と判定してくれます。

有名レンタルサーバーでも、組み込んでいるところがあります。
というか、迷惑メール判定をサーバー側で行うお手軽ツールは、この、SpamAssassinぐらいしか聞きません。

サーバー側で留意すべきは、「誤判定をフォローする」ということ。

・ホワイトリストの登録(ブラックリストへの登録)
・迷惑メールフォルダから、「取り出す」(振り分けていたら)
・迷惑メールになったことを告知(もしくは、閲覧できるようにする)

などの救済策が必要かと思っています。

サーバー屋さんは、大変です(笑)

そして、お客さんから「メールが届かない!」と連絡が来ます。
「迷惑メールに分類されている」という事がよくあります・・・

迷惑メールと「誤判定」をしてしまうのは、「送信側」にも、問題がある場合があります。
ただ、送信側では「問題」と思っていない事が多いので、やっかいです。
一応、届きますので・・・

「広告」

SpamAssassin ダウンロード

# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//spamassassin/source/Mail-SpamAssassin-3.4.2.tar.gz

2018年10月25時点の最新版をダウンロードします。

「広告」

SpamAssassin 関連モジュールインストール

# tar xzvf Mail-SpamAssassin-3.4.2.tar.gz
# cd Mail-SpamAssassin-3.4.2/
# perl Makefile.PL
(略)
REQUIRED module missing: Digest::SHA
REQUIRED module missing: HTML::Parser
REQUIRED module missing: Net::DNS
REQUIRED module missing: NetAddr::IP
REQUIRED module missing: Archive::Tar
REQUIRED module missing: IO::Zlib
optional module missing: Digest::SHA1
optional module missing: DB_File
optional module missing: Mail::SPF
optional module missing: Geo::IP
optional module missing: Net::CIDR::Lite
optional module missing: Razor2
optional module missing: IO::Socket::IP
optional module missing: IO::Socket::INET6
optional module missing: IO::Socket::SSL
optional module missing: Compress::Zlib
optional module missing: Mail::DKIM
optional module missing: DBI
optional module missing: LWP::UserAgent
optional module missing: HTTP::Date
optional module missing: Encode::Detect::Detector
optional module missing: Net::Patricia
optional module missing: Net::DNS::Nameserver
optional module missing: BSD::Resource
optional binary missing or nonfunctional: fetch
optional binary missing or nonfunctional: re2c
(略)

と、perlモジュールが足りないよ。
というエラーが出てきます。
これらのperlモジュールを入れます。

# yum install perl-Digest-SHA
# yum install perl-HTML-Parser
# yum install perl-Net-DNS
# yum install perl-NetAddr-IP
# yum install perl-Archive-Tar
# yum install perl-IO-Zlib
# yum install perl-Digest-SHA1
# yum install perl-DB_File
# yum install perl-Mail-SPF
# yum install perl-Geo-IP
# yum install perl-Net-CIDR-Lite
# yum install perl-IO-Socket-IP
# yum install perl-IO-Socket-INET6
# yum install perl-IO-Socket-SSL
# yum install perl-Compress-Zlib
# yum install perl-Mail-DKIM
# yum install perl-DBI
# yum install perl-HTTP-Date
# yum install perl-Net-Patricia
# yum install perl-Net-DNS-Nameserver
# yum install perl-BSD-Resource

↑ yum で、「perl-」をつけて、「:」を「-」に置き換えて、インストールします。

# yum install perl-LWP-UserAgent
# yum install perl-Encode-Detect-Detector
# yum install perl-Razor2

上記の3つは、「No package」と「ないよ」とエラーになります

前半2つは、

# yum install perl-libwww-perl
# yum install perl-Encode-Detect

で、入ります。

「Razor2」 は、ソースからインストールします。

http://razor.sourceforge.net/
から
razor-agents-2.84.tar.bz2
razor-agents-sdk-2.07.tar.bz2
をダウンロード

# tar xvjf razor-agents-2.84.tar.bz2
# cd razor-agents-2.84/
# perl Makefile.PL
# make
# make test
# make install

上記は、うまくいきますが、

# tar xvjf razor-agents-sdk-2.07.tar.bz2
# razor-agents-sdk-2.07/
# perl Makefile.PL
# make
# make test
(略)
t/test-harness......ok 1/208Can't kill a non-numeric process ID at t/sample-tests/taint_warn line 9.
# No tests run!
#     Failed test (t/test-harness.t at line 511)
#          got: '0'
#     expected: '1'
#     Failed test (t/test-harness.t at line 514)
#     Structures begin differing at:
#          $got->{ok} = '0'
#     $expected->{ok} = '1'
t/test-harness......NOK 173# Looks like you failed 2 tests of 208.
t/test-harness......dubious
        Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 171, 173
        Failed 2/208 tests, 99.04% okay (less 56 skipped tests: 150 okay, 72.12%)
t/version...........ok
Failed Test      Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/test-harness.t    2   512   208    2   0.96%  171 173
1 test and 56 subtests skipped.
Failed 1/18 test scripts, 94.44% okay. 2/553 subtests failed, 99.64% okay.
make[1]: *** [test_dynamic] Error 255
make[1]: Leaving directory `/root/src/razor-agents-sdk-2.07/Test-Harness-2.52-MODIFIED'
make: *** [subdirs-test] Error 2

と、エラーになります(涙)。
このエラーを解決する方法が、見つからず、今回、「Razor」のDBでのスパム判定は、見送ります。

字句解析の「re2c」を入れます。

http://re2c.org/install/install.html
から、ダウンロード

# https://github.com/skvadrik/re2c/releases/download/1.1.1/re2c-1.1.1.tar.gz
# tar xzvf re2c-1.1.1.tar.gz
# cd re2c-1.1.1/
# ./configure
# make
# make install

↑「re2c」が、入りました。

「広告」

SpamAssassin インストール

# cd Mail-SpamAssassin-3.4.2/
# perl Makefile.PL

(略)
optional module missing: Razor2
optional binary missing or nonfunctional: fetch

warning: some functionality may not be available,
please read the above report before continuing!

Checking if your kit is complete...
Looks good
Writing Makefile for Mail::SpamAssassin
Makefile written by ExtUtils::MakeMaker 6.68

↑ 「Razor2」 と、「fetch」は、見送り、他は、認識されました。

# make
# make install

(略)

/usr/bin/perl -e "map unlink, </usr/local/share/spamassassin/*>"
/usr/bin/perl build/preprocessor -Mvars -DVERSION="3.004002" -DPREFIX="/usr/local" -DDEF_RULES_DIR="/usr/local/share/spamassassin" -DLOCAL_RULES_DIR="/etc/mail/spamassassin" -DLOCAL_STATE_DIR="/var/lib/spamassassin" -DINSTALLSITELIB="/usr/local/share/perl5" -DCONTACT_ADDRESS="the administrator of that system" -DRE2C_BIN="re2c" -m644 -Irules -O/usr/local/share/spamassassin user_prefs.template languages sa-update-pubkey.txt
chmod 755 /usr/local/share/spamassassin

インストール成功!

「広告」

SpamAssassin と、postfixの連携

# vi /etc/postfix/master.cf
smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=spamassassin

↑2行目を加えます。

spamassassin    unix  -  n  n  -  -  pipe
  flags=R user=spamd argv=/usr/local/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

↑も、master.cf の最後のほうに加えます。

「広告」

SpamAssassin 起動

# /usr/sbin/useradd spamd
# yum install perl-Sys-Syslog

↑「spamd」というユーザで起動させるため、ユーザ登録をして、起動に必要な、Sys::Syslogのperlモジュールを入れます。

# cp spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
# chmod 755 /etc/rc.d/init.d/spamd

↑起動スクリプトをコピーします。

# /etc/rc.d/init.d/spamd start
# ps ax 
19999 ?        Ss     0:01 /usr/bin/perl -T -w /usr/local/bin/spamd -d -c -m5 -H -r /var/run/spamd.pid
20003 ?        S      0:00 spamd child
20005 ?        S      0:00 spamd child

起動されました。

「広告」

SpamAssassin テスト

外部から、メールを送ってみます。

X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13)
X-Spam-Level: 
X-Spam-Status: No

↑ 迷惑メール(スパム)ではない、メールのヘッダ

X-Spam-Flag: YES
X-Spam-Level: *************
X-Spam-Status: Yes, score=13.4 required=5.0

↑ 迷惑メール(スパム)なメールを送ってみたところ、迷惑メール(スパム)と判定されました。

「広告」

SpamAssassin 課題

SpamAssassinの基本組み込みはできましたが、各メールアドレス毎に、以下の事が必要です。

・迷惑メール(スパム)と判定された場合、題名に「*** SAPM ***」などと入れる。
・迷惑メール(スパム)と判定された場合、受信フォルダ(Maildir/new)には、入れないで、違うフォルダに入れる。
そして、救済(取り出すこと)ができるようにする。
・ブラックリスト、ホワイトリストを、登録できる。
・迷惑メール(スパム)の判定基準(score required) を設定できるようにする。
・迷惑メール(スパム)になった、リストを送付する。

けっこう、大変ですね(汗)。
qmail + procmailでは、作っていましたが・・・・(笑)

「広告」

SpamAssassin(スパムアサシン)設定、その2

Postfix3.3 迷惑メール対策 SpamAssassin(スパムアサシン)設定その2(2018/10/27 追加)

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