SPAMメール徹底対策実用qmailサーバ運用・管理術(3)(3/3 ページ)

» 2001年11月06日 00時00分 公開
[鶴長鎮一@IT]
前のページへ 1|2|3       

キューイングしてしまったSPAMメールの処理

 qmailをインストールすると、配送キューの簡単な統計情報を表示する/var/qmail/bin/qmail-qstatと、たまっているメッセージキューのヘッダ情報を部分的に表示する/var/qmail/bin/qmail-qreadもインストールされます。

# /var/qmail/bin/qmail-qstat
messages in queue: 11
messages in queue but not yet preprocessed: 0

# /var/qmail/bin/qmail-qread
28 Oct 2001 20:35:57 GMT #11224 2127 <>
        remote XXX@XXX.jp
28 Oct 2001 17:20:17 GMT #11225 2132 <>
        remote XXX@XXX.jp
28 Oct 2001 20:44:32 GMT #11226 2130 <>
        remote XXX@XXX.jp
28 Oct 2001 23:30:57 GMT #11228 2130 <>
        remote XXX@XXX.jp
28 Oct 2001 17:01:33 GMT #11231 1555 <>
        remote XXX@XXX.jp
実行例 XXXは伏せ字


 SPAMSPAMReturn-Path/var/qmail/control/badmailfrom

  qmail

 qmail1qmailrc使qmail-qread使Message-Id調
# /スクリプトの保存先/qmail stop
# /var/qmail/bin/qmail-qread
28 Oct 2001 20:35:57 GMT #Message-Id 2127 <>
remote XXX@XXX.jp

 キューに関連する3つのファイルを削除します。

/var/qmail/queue/info/NN/Message-Id
/var/qmail/queue/mess/NN/Message-Id
/var/qmail/queue/remote/NN/Message-Id
送信キュー(リモート)の場合

/var/qmail/queue/info/NN/Message-Id
/var/qmail/queue/mess/NN/Message-Id
/var/qmail/queue/local/NN/Message-Id
受信キュー(ローカル)の場合


 NN120qmailNN/var/qmail/queue/infomessremotelocal

 qmHandle使qmHandleqmail-qstatqmail-qreadqmHandle-0.5.1.tar.gzhttp://www.io.com/~mick/soft/qmhandle.htmlqmHandlePerlPerl/usr/bin/qmHandle1Perl

 qmHandle
-l ローカル/リモートすべてのキューを表示
-L ローカルキューを表示
-R リモートキューを表示
-s 統計情報の表示
-vN Message-Id Nのメッセージを表示
-dN Message-Id Nのキューを削除
-D ローカル/リモートすべてのキューを削除
-c 出力結果をカラー表示
-N Message-Idを表示。ただし、-l、-L、-Rオプションと一緒に指定する必要がある

 例えば、ローカルとリモートすべてのキューのMessage-Idを調べるには次のようにします。

# ./qmHandle -l -N
11224 (0, R)
11226 (2, R)
11229 (5, R)
11230 (6, R)
11220 (19, R)
11223 (22, R)
Messages in local queue: 0
Messages in remote queue: 6

 出力されたメッセージを削除するには、-dオプションにMessage-Idを渡して実行します。

# ./qmHandle -dXXX -dXXX -dXXXXX


 Message-IdFromToSubjectDateSize

 
# ./qmHandle -R
11234 (10, R)
  From: MAILER-DAEMON@XXX.jp
  To: someone@XXX.com
  Subject: failure notice
  Date: 29 Oct 2001 16:41:18 +0900
  Size: 17328 bytes

11220 (19, R)
  From: MAILER-DAEMON@XXX.com
  To: anyone@XXX.com
  Subject: failure notice
  Date: 29 Oct 2001 10:12:03 +0900
  Size: 2817 bytes

11223 (22, R)
  From: MAILER-DAEMON@XXX.net
  To: XXX@XXX.ne.jp
  Subject: failure notice
  Date: 29 Oct 2001 04:25:38 +0900
  Size: 2764 bytes
注:XXXは伏せ字

 実際には、下記のようにファイルにリダイレクトして保存しておきます。

# ./qmHandle -R > que.txt

 送信キューだけを出力するようにしたのは、送信キューと受信キューでは出力フォーマットが異なるため、混在していると次に紹介するシェルスクリプトでMessage-Idを拾い上げることができないからです。

 次に、以下のようなシェルスクリプトを用意します。

#!/bin/sh

cat que.txt |
    grep -B1 "From: XXXX@XXX.jp" |
    grep '^[0-9][0-9]*' |
    sed -e 's/^\([0-9][0-9]*\) .*$/\.\/qmHandle -d\1/'
DeleteQue.sh

 4行目の、

grep -B1 "Return-path: XXXX@XXX.jp"


From: XXXX@XXX.jpgrep-B1To: XXX@XXX.jp-B2Subject: XXXXXX-B3Message-Idgrep
grep '^[0-9][0-9]*'

で、行頭が数字で始まっているものだけに絞り込みます。そして、

sed -e 's/^\([0-9][0-9]*\) .*$/\.\/qmHandle -d\1/'

で出力フォーマットを./qmHandle -dXXXXXの形に整えます。

 ではスクリプトを実行しましょう。

# ./DeleteQue.sh > delete.sh

./qmHandle -dXXXXX
./qmHandle -dXXXXX
./qmHandle -dXXXXX
./qmHandle -dXXXXX
./qmHandle -dXXXXX
./qmHandle -dXXXXX
.......
delete.shの内容

 ./qmHandle -dXXXXX -dXXXXX -dXXXXX -dXXXXXの形になっていないのは、引数として渡せる文字の長さに限界があるため、確実に削除を行うように1つの削除キューに対してその都度qmHandleを実行するからです。Perlの立ち上がりで無駄なコストが発生しますが、キューの削除は緊急かつ安全な対応が望まれるため、確実な方法を取っています。後はこのファイルを実行するだけです。実行する前に、delete.shとqmHandleが同じディレクトリにあることを確認してください。

# sh ./delete.sh


 ./qmHandle -RqmHandle-L

 qmail
# /スクリプトの保存先/qmail start

まとめと次回予告


 SPAMSPAMSPAMSPAM

 

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。