会社のメールサーバのリプレース

先月末に会社のメールサーバのリプレースを行った。
合わせてSpamassassinで迷惑メールも弾くようにした。
迷惑メールの運用としては、

Spamassassinのスコア閾値は「6.5」
スコア値「6.5~10までは、件名を変えてメール配送」
スコア値「11以上は、別アカウントへ転送」
「どのメールが転送されたかを1日一回、ユーザへメールする」

といった運用にする。
.procmailrcに下記を記述。
———————-
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOCKFILE=$HOME/.lockmail
#Spam判定されていないメールは一度SpamAssassinへ送る。
#アカウントが150個以上もあるので、2MBを越すメールに対しては
#チェックを行わない。
:0fw
*!^X-Spam.*
* < 2097152 |/usr/bin/spamc #ヘッダーの「X-Spam-Level」を確認して、’*’が11個以上だったら #メールの送信時間を環境変数$MATCHへ格納。
#格納した$MATCHの値を、Spam-Listファイルへ記述。
:0 c
*^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
*^Date: *\/.*
| echo “Time:$MATCH” >> $HOME/Spam-List
#ヘッダーの「X-Spam-Level」を確認して、’*’が11個以上だったら
#メールの送信者を環境変数$MATCHへ格納。
#格納した$MATCHの値を、Spam-Listファイルへ記述。
:0 c
*^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*
*^From: *\/.*
| echo “From:$MATCH” >> $HOME/Spam-List
#ヘッダーの「X-Spam-Level」を確認して、’*’が11個以上だったら
#メールの件名を環境変数$MATCHへ格納。
#格納した$MATCHの値を、Spam-Listファイルへ記述。
:0 c
*^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*
*^Subject: *\/.*
| echo “Subject:$MATCH” >> $HOME/Spam-List
#ヘッダーの「X-Spam-Level」を確認して、’*’が11個以上だったら
#空白行をSpam-Listファイルへ記述。
:0 c
*^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*
| echo “” >> $HOME/Spam-List
#ヘッダーの「X-Spam-Level」を確認して、’*’が11個以上だったら
#管理者アカウントにメールを転送。
:0
*^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*
! virus@xxxxxxxxx.com
———————-
このprocmailの内容で、メールが届くたびに内容をチェックし、一定レベル以上のスパムだと、Spam-Listファイルにこんな感じのメールリストが記述される。
Time: Tue, 06 Nov 2007 00:06:13 -0500
From: “Beau Z. Juarez”
Subject: *****SPAM***** If you treat your filly as a goddess, why not become a God in her bedroom?
(ここは空白行)
次に行うのは、「どうやってここのユーザにメールを送るか?」だ。
今回の場合、お粗末だが「.spam-report.sh」と言った簡単なシェルスクリプトを組んでみた。
.spam-report.shに下記を記述。
———————-
#!/bin/sh
#pwdコマンドで得た結果(/home/ユーザー名)から、‘ユーザー名‘のみを抜き出し、’name’に代入する。
pwd > name
name=`cut -c 7- name`
#スクリプトにて追加した文字をSJISに変換する。
nkf -j Spam-List > Spam-List-j
#ユーザーへメールを送信する。
mail -s “SPAM Mail-Block Report” $name@xxxxxxxxx.com < Spam-List-j #古い情報が記録されているSpam-Listを削除。以降の情報を記録するSpam-Listの作成。 rm -rf Spam-List touch Spam-List chmod 660 Spam-List #’何時から取得している情報です‘って意味にしたかったんだけど、コレは要らんかもしれない。 date +"%Y/%m/%d %k:%M ~" >> Spam-List
echo “” >> Spam-List
#ユーザへ通知したい文の入力。
#ここは好きなようにしてくれ。
echo “お疲れ様です。” >> Spam-List
echo “$nameさんのスパムメールのブロック情報を通知します。” >> Spam-List
echo “情報が記載されていない場合、ブロックされたメールはありません。” >> Spam-List
echo “” >> Spam-List
———————-
Spamassassinに転送する.qmailファイルを合わせても、3つのファイルをユーザディレクトリに配置する。
さすがにそこはコピーするだけのスクリプトを組んだが・・・。
そうそう。
新規ユーザが作成された時に一緒に作成されるように、/etc/skelにも追加する事。
一定時間にスクリプトを走らせるから、下の記事で書いているように、/var/spool/cron/にユーザ分のcronファイルをコピって上げればよい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です