メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

postfix+spamassassinによる基本的SPAM対策

管理しているサーバへの要望

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 conten
t_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

ちゃんと記録しておかないと、忘れてしまうので…。

コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ