管理しているサーバへの要望
VPSで管理しているサーバは、9ドメインにもなっておりますが、その中のお客さんからの要望があって…。
以前のサーバでは、SPAMメールの件名(Subject)に[SPAM]が挿入されていて、それを元にフィルタリングしていたけれど、新しいサーバに変えてから、それが無くなって不便だから、何とかして欲しい…
そうですか、今時サーバでやるのは、あまり流行っていないような気がするんですがねぇ。
精度の問題もあって、一般的なルールだとどうしても誤認識が相当数発生するのが欠点。各自のメールでベイズフィルタで学習させて、利用する方が精度が高いし、ローカルでそういった機能を持つメーラが増えているので、そっちを使った方が効率的だとは思うんだけど…。
まぁ、要望なので仕方ない。
昔設定した記憶をたどりながら、新たに導入することに。って15年ほど昔にやった手法なので、今風のやり方を調べながらですが…。
SpamAssassinのインストール
Ubuntuなので、相変わらずインストールは簡単ですゎ。
$ sudo -s
# apt-get install spamassassin spamassassin-rules-ja
これだけです。必要なパッケージは、適当に拾ってくれるので、しばらく待つのみ。(ほんの10数秒だけどね…)
本当は、ウィルスチェッカなんかも入れるという方法もあるし、その他もろもろ、様々な設定方法があるけれど、シンプルな方法で行くことにする。
設定項目はごくわずか
Spamd
まずは、/etc/spamassassin/local.cfを書き換える。
デフォルトでは「*****SPAM*****」が件名に追加されるけれど、今回は要望通りに設定。
rewrite_header Subject [SPAM]
report_safe 0
これで、最低限の記述はOKそう。
続いて、通常パッケージで入れると、ユーザとか作ってくれるけれど、設定の自由度が高いせいか、方法に応じて自分で作っておく必要がある。
# groupadd spamd
# useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
# mkdir /var/log/spamassassin
# chown spamd:spamd /var/log/spamassassin
起動時に、自動起動とか、ルールファイルの更新とかして欲しいので、/etc/default/spamassassinを変更。
ENABLED=1
CRON=1
Postfix
次は、postfixの設定を変更する。
/etc/postfix/master.cfを書き換える。
#smtp inet n - - - - smtpd
smtp inet n - n - - smtpd -o content_filter=spamassassin
上の行が、はじめの方にあるので、下のように書き換えておく。
これで、spamassassinをフィルタとして利用することになる。
でもって、一番最後にでも、次の行を追加する。
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
ここまでで、終了。
それぞれのデーモンを再起動とかしておく。
# sa-update# service spamassassin restart
以下のようなLogが出力されていればOK。
Mar 13 23:26:32 hostname spamd[12502]: spamd: server started on port 783/tcp (running version 3.3.2)
Mar 13 23:26:32 hostname spamd[12502]: spamd: server pid: 12502
Mar 13 23:26:32 hostname spamd[12502]: spamd: server successfully spawned child process, pid 12504
Mar 13 23:26:32 hostname spamd[12502]: spamd: server successfully spawned child process, pid 12505
Mar 13 23:26:32 hostname spamd[12502]: prefork: child states: IS
Mar 13 23:26:32 hostname spamd[12502]: prefork: child states: II
ついでに、postfixも再起動もしくはreload
# serveice postfix restart
動作テスト
基本的には外部からのメールに対して、フィルタ(spamassassin)を通すので、外部のアカウントから送信してみる。
まずは、通常のメールを送ってみる。
この時点で、受信されていないってことは、無いはずだけど、念のためこれまでと変わらないのを確認。
次に必ずSPAMと認識されるメールを送信。
本文に
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
と書いておく。件名は適当に…。
すると、件名に[SPAM]が挿入されたメールが届くはず。
一応、Logを確認しておく。
Mar 13 23:50:20 hostname spamd[13659]: spamd: identified spam (1000.0/5.0) for spamd:5001 in 0.3 seconds, 2067 bytes.
Mar 13 23:50:20 hostname spamd[13659]: spamd: result: Y 1000 - FREEMAIL_FROM,GTUBE,RCVD_IN_DNSWL_NONE,SPF_PASS,T_DKIM_INVALID scantime=0.3,size=2067,user=spamd,uid=5001,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=35174,mid=<5321C5A7.9000900@mail.address>,autolearn=no
といった記述が記録されていればOK。
まぁ、その他の設定もいろいろあるけれど、時間があればやるっていうことで…。
参考にしたサイト:
Installing and configuring Spamassassin on CentOS
ちゃんと記録しておかないと、忘れてしまうので…。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。