はじめに
failure notice や特定のメールアドレス等がqmailのメールキューに大量に溜まった場合に削除する手順メモ。
古いqmHandleでは実装されてない場合があるので qmHandle1.3.2 を推奨。
メールキューの確認
管理者権限になり qmail-qstat でqmailのメールキュー数を確認。
># qmail-qstat
messages in queue: 18
messages in queue but not yet preprocessed: 0
qmHandle -l でメールの詳細を確認。qmHandleのパスはご自身の環境に合わせてください。
># ./qmhandle-1.3.2/qmHandle -l
618770559 (18, 18/618770559)
Return-path:
From: MAILER-DAEMON@xxxxxxxxxxxxxx
To: support@xxxxxxxxxx
Subject: failure notice
Date: 8 Dec 2022 13:04:36 +0900
Size: 30517 bytes
件名を指定して削除
ドメイン単位での攻撃で大量に faulure notice が出ていた場合等は
qmHandle -S'文字列' で件名に指定した文字列を含むメールキューを一斉に削除できます。
># ./qmhandle-1.3.2/qmHandle -S'failure notice'
Calling system script to terminate qmail...
Shutting down qmail
Looking for messages with Subject: failure notice
Deleting message: 537798908
Deleting message: 617060515
Deleting message: 617883087
Deleting message: 617111811
"""
"""
Deleted 18 messages from queue
Restarting qmail... Starting qmail
done (hopefully).
qmailのリスタートが自動的にかかるため怖ければ最初に停止しておきましょう。
※ qmHandleでの自動リスタートまたは手動でのqmailの停止時に、あまりにキューが大量にある場合など、停止が働かず画面上固まったようになる事があります。そのような場合は別画面を開き qmail のプロセスをkillしてください。
># ps -aux | grep qmail
qmails 1111 0.0 0.0 4432 948 pts/0 S 13:40 0:00 qmail-send
qmaill 2222 0.0 0.0 4384 892 pts/0 S 13:40 0:00 splogger qmail
qmailr 3333 0.0 0.0 4380 888 pts/0 S 13:40 0:00 qmail-rspawn
qmailq 4444 0.0 0.0 4376 876 pts/0 S 13:40 0:00 qmail-clean
[root@server user]#kill -9 1111 2222 3333 4444
強制的にkillすると処理が正常に実行されるはずです。
メールアドレスを指定して削除
乗っ取り等でスパムを出していた場合等、特定のメールアドレスのみ削除したい時は
qmHandle -h'メールアドレス' を使用します。
ヘッダ情報に指定した文字列を含むメッセージを全て削除します。
=== qmHandle -l でメール詳細確認 ===
># ./qmhandle-1.3.2/qmHandle -l
618770559 (18, 18/618770559)
Return-path:
From: MAILER-DAEMON@xxxxxxxxxxxxxx
To: support@abcde.net
=== abced.netをヘッダに含むメールを削除 ===
># ./qmhandle-1.3.2/qmHandle -h'abcde.net'
Calling system script to terminate qmail...
Shutting down qmail
Looking for messages with Header: abcde.net
Deleting message: 534498908
Deleting message: 614460515
Deleting message: 614483087
"""
"""
Deleted 4987 messages from queue
Restarting qmail... Starting qmail
done (hopefully).
実際のメールキュー削除までの流れ
実際にまとめて削除する場合は、メールのヘッダー情報および中身をきちんと確認しましょう。
確認せずに削除すると後々ヘッダーを見ておけばよかったとなる事が多々あります。
/var/qmail/queue/mess/NN/Message-Id を見ることでメールの中身が確認できます。
メッセージIDは qmHnadle -l で確認できます。
qmHandle -l で メッセージID表示 → メールの中身を確認 → 削除
とすると間違いないのかなと思います。
1.まず qmail-qstat および qmHandle -l でキュー数とどのようなメールが溜まっているか確認
=== メールキュー確認 ===
># ./qmhandle-1.3.2/qmHandle -l
618770559 (18, 18/618770559) # <= メッセージID (NN, NN/Message-Id)
Return-path:
From: MAILER-DAEMON@xxxxxxxxxxxxxx
"""
"""
2.表示されたメッセージIDのいくつかを /var/qmail/queue/mess でヘッダーおよび詳細確認
=== /var/qmail/queue/mess を確認 ===
># less /var/qmail/queue/mess/18/618770559
Received: (qmail 3855046 invoked for bounce); 9 Dec 2022 14:38:59 +0900
Date: 9 Dec 2022 14:38:59 +0900
From: MAILER-DAEMON@xxxx.ne.jp
To: xxxx@xxxxx.net
Subject: failure notice
"""
"""
From: "xxxxx.co.jp" <noreply@xxxx.co.jp>
To: <xxxx@xxxx>
Subject: =fx44OX44x4Ki44Oxxxxx44Kz44O844234
"""
"""
3.いくつか確認してどれも同じ攻撃によるものと確信できたら qmHandle で削除
==== 送受信の From To や failure notice をきちんと確認して削除 ===
># ./qmhandle-1.3.2/qmHandle -S'failure notice'
Calling system script to terminate qmail...
Shutting down qmail
Looking for messages with Subject: failure notice
Deleting message: 537798908
Deleting message: 617060515
Deleting message: 617883087
Deleting message: 617111811
"""
"""
Deleted 18 messages from queue
Restarting qmail... Starting qmail
done (hopefully).
サーバー内に多くのドメインやユーザーがいるとおいそれとキューを全削除できない事が多いですよね。最後に ./qmHandle/README の削除関連のコマンドの説明を載せておきます。
-f're' : 正規表現 re にマッチする送信者からのメッセージを削除します。
-Stext : Subject に text 含むメッセージを全て削除します。
-h're' : ヘッダが正規表現 re にマッチするメッセージを全て削除 (大文字小文字を区別しない)
-b're' : 本文が正規表現 re にマッチするメッセージを全て削除 (大文字小文字を区別しない)
-H're' : ヘッダが正規表現 re にマッチするメッセージを全て削除 (大文字小文字を区別)
-B're' : 本文が正規表現 re にマッチするメッセージを全て削除 (大文字小文字を区別)
あまり使用することはないですが色々ありますね。
コメント