「広告」

Qmail、キューに溜まったメールを削除する方法

「広告」
記事内に広告が含まれています。
「広告」

Qmailを運用していて、何らかの原因で、キューに溜まったメールを削除する方法を・・・
昔から使われているツールです。

すべて、Qmailを停止してから行います。

「広告」

宛先を指定して削除

キューに溜まったメール、宛先を指定する場合。

# wget http://www.kawa.net/works/qmail/src/queue-fast.20050210.tar.gz
# tar zxvf queue-fast.20050210.tar.gz

↑ツールをダウンロードします。

queue-fast.pl
が実行ファイルです。

# perl queue-fast.pl 宛先メールアドレス

で、チェック。

# perl queue-fast.pl 宛先メールアドレス
# address: 宛先メールアドレス
# 0 messages found in /var/qmail/queue/mess/0 (1/23)
# 1 messages found in /var/qmail/queue/mess/1 (2/23)
1/1581021 R - => 宛先メールアドレス
# 0 messages found in /var/qmail/queue/mess/2 (3/23)
# 0 messages found in /var/qmail/queue/mess/3 (4/23)
# 0 messages found in /var/qmail/queue/mess/4 (5/23)

↑チェックの実行例

# perl queue-fast.pl -d 宛先メールアドレス

↑で、実際の削除となります。

# perl queue-fast.pl -d 宛先メールアドレス
# address: 宛先メールアドレス
# delete mode enabled.
# 0 messages found in /var/qmail/queue/mess/0 (1/23)
# 1 messages found in /var/qmail/queue/mess/1 (2/23)
1/1581021 R - => 宛先メールアドレス
deleteing: /var/qmail/queue/mess/1/1581021 /var/qmail/queue/info/1/1581021 /var/qmail/queue/remote/1/1581021
# 0 messages found in /var/qmail/queue/mess/2 (3/23)

↑削除の実行例

「広告」

差出人を指定して削除

# wget https://sourceforge.net/projects/qmhandle/files/latest/download --no-check-certificate -O qmhandle-1.3.2.tar.gz
# tar xzvf qmhandle-1.3.2.tar.gz
# cp qmhandle-1.3.2/qmHandle .

↑ qmHandle をダウンロードして、queue-fast.pl と同じディレクトリにコピーします。

# vi qmail_from_del.sh
-----------------------------------------------------------------------
#!/bin/sh

if [ $# -ne 1 ]; then
 exit 1
fi

QID=`perl queue-fast.pl | grep $1 | cut -d" " -f1 | cut -d"/" -f2`
for var in ${QID}
do
    if [ ! -z "$var" ] ; then
    perl qmHandle -d${var}
    fi
done
-----------------------------------------------------------------------
# chmod 755 qmail_from_del.sh

↑「qmail_from_del.sh」という実行ファイルを作ります。

# ./qmail_from_del.sh (差出人メールアドレス)

↑ 上記で削除ができます。

# ./qmail_from_del.sh (差出人メールアドレス)
# 0 messages found in /var/qmail/queue/mess/0 (1/23)
# 1 messages found in /var/qmail/queue/mess/1 (2/23)
# 0 messages found in /var/qmail/queue/mess/2 (3/23)
# 0 messages found in /var/qmail/queue/mess/3 (4/23)
# 0 messages found in /var/qmail/queue/mess/4 (5/23)
# 0 messages found in /var/qmail/queue/mess/5 (6/23)
# 0 messages found in /var/qmail/queue/mess/6 (7/23)
# 0 messages found in /var/qmail/queue/mess/7 (8/23)
# 0 messages found in /var/qmail/queue/mess/8 (9/23)
# 0 messages found in /var/qmail/queue/mess/9 (10/23)
# 0 messages found in /var/qmail/queue/mess/10 (11/23)
# 0 messages found in /var/qmail/queue/mess/11 (12/23)
# 0 messages found in /var/qmail/queue/mess/12 (13/23)
# 0 messages found in /var/qmail/queue/mess/13 (14/23)
# 0 messages found in /var/qmail/queue/mess/14 (15/23)
# 0 messages found in /var/qmail/queue/mess/15 (16/23)
# 0 messages found in /var/qmail/queue/mess/16 (17/23)
# 1 messages found in /var/qmail/queue/mess/17 (18/23)
# 0 messages found in /var/qmail/queue/mess/18 (19/23)
# 0 messages found in /var/qmail/queue/mess/19 (20/23)
# 0 messages found in /var/qmail/queue/mess/20 (21/23)
# 0 messages found in /var/qmail/queue/mess/21 (22/23)
# 0 messages found in /var/qmail/queue/mess/22 (23/23)
Qmail isn't running... no need to stop it.
Deleting message 1581021...
Deleted 1 messages from queue
Qmail wasn't running when qmHandle was started, so it won't be restarted.

↑上記が実行例

「広告」

Qmailのキュー内部の整合性が合わなくなったら・・・

warning: trouble opening remote/X/XXXXXXX; will try again later
warning: trouble opening remote/X/XXXXXXX; will try again later
warning: trouble opening remote/X/XXXXXXX; will try again later
warning: trouble opening remote/X/XXXXXXX; will try again later

↑というエラーが出てきたら・・・

Qmailのキューに関して、整合性が合わなくなってきたという事です。

このエラーは、放置してもいいような気もしますが、
このエラーを解決するツールが出ています。

# wget http://www.netmeridian.com/e-huss/queue-fix.tar.gz
# tar xzvf queue-fix.tar.gz 
# cd queue-fix-1.4/
vi error.h

extern int errno;
 ↓
#include <errno.h>

# make

↑ error.hの一部を修正します。そして、「make」をして、実行ファイルを作成します。

「queue-fix」
という実行ファイルが作成されたことを確認します。

# ./queue-fix -i /var/qmail/queue

↑と実行させます。

# ./queue-fix -i /var/qmail/queue
queue-fix finished...

↑ 実行例です。

タイトルとURLをコピーしました