技術のご紹介

このブログを購読する

IT開発センターBlog

qmailのメールキュー削除方法(2)

qmailのメールキュー削除方法(2)

こんにちは、仲沢です。

前回は qmHandle のインストールとqmHandle を利用したメールキュー確認・メールキュー削除をご紹介しましたが、今回はqmHandle を利用した方法とは別のメールキュー削除方法をご紹介します。

■ 削除対象の特定
まず、以下の様に qmHandle を用いて、削除対象のメールキューを確認します。

# perl ./qmHandle -R 

999991 (XX, XX/XXXXXX)
  Return-path: xxxxxx@xxxxxx.example.com
  To: xxxxxx@xxxxxx.example.net
  Subject: XXXXXXXXXXXXXXXX
  Size: XXXX bytes

999992 (YY, YY/YYYYYY)
  Return-path: yyyyyy@yyyyyy.example.org
  From: yyyyyy@yyyyyy.example.info
  To: yyyyyy@yyyyyy.example.jp
  Subject: YYYYYYYYYYYYYYYY
  Size: YYYY bytes
※ 以下、メールキューの数だけ続きますが省略します。

qmail のメールキューは、ファイルシステム上の実体ファイルとして存在していますが、メールキューのファイル名は上記下線部に書かれたキュー ID 番号に一致しています。

該当ファイルは以下の様なコマンドで確認できます。

# ls /var/qmail/queue/{info,mess,remote,local}/*/999991
# ls /var/qmail/queue/{info,mess,remote,local}/*/999992

■ 送信キューの削除
通常は、削除の前にメールキューの中身を確認し、削除して良いかどうかを判断します。中身の確認は以下の様なコマンドで確認できます。

# more /var/qmail/queue/mess/*/999991
# more /var/qmail/queue/mess/*/999992
※ 日本語の本文などはそのままが出力されますので、端末のキャラクタセットによっては文字化けしている様に見えます。

メールキューを削除したい場合は、以下の様なコマンドで実体ファイルを削除します。

# rm -f /var/qmail/queue/{info,mess,remote,local}/*/999991
# rm -f /var/qmail/queue/{info,mess,remote,local}/*/999992

qmHandle の機能を利用するよりも高速に削除できますので、大量のスパムメールを削除する場合の選択肢の一つですね。

PAGE TOP

qmailのメールキュー削除方法(1)

qmailのメールキュー削除方法

こんにちは、粟野です。

今回はqmailのメールキュー削除方法をご紹介したいと思います。

MTA(Message Transfer Agent)には、以前ご紹介したPostfixの他に、qmailというソフトウェアがあります。qmailはシンプルで堅牢な構造を目指して作成されたMTAであり、今でも多くのホスティング環境で使われています。

MTAの運用を続けていくとメールキューを削除したい場面が出てくるのですが、qmailの構造上、メールキューの削除が結構面倒な為(標準で専用コマンドがなく、1通のメールが複数のファイルにわかれて保存されています)、今回は簡単にqmailのメールキューを操作することができるソフトウェアであるqmHandleを使用して削除してみます。

まずはインストールから。

以下サイトからダウンロードし展開します。
qmHandle – a tool for the qmail queue

■ 展開
# tar xvfz qmhandle-1.3.2.tar.gz

Linuxの場合はそのままの状態では動かないこともありますので、プログラムソースの一部を変更します。

# For instance, this is if you have DJB's daemontools
#my ($stopqmail) = '/usr/local/bin/svc -d /service/qmail-deliver';
#my ($startqmail) = '/usr/local/bin/svc -u /service/qmail-deliver';

# While this is if you have a Debian GNU/Linux with its qmail package
my ($stopqmail) = '/etc/init.d/qmail stop';
my ($startqmail) = '/etc/init.d/qmail start';
※ Perlで作られたプログラムですので、vi等による編集が可能です。
※ 33,34行目をコメントアウトし「init.d」での動作に変更します。
■ パーミション変更
# chmod 700 qmHandle

パスの通っているディレクトリに移動してもいいのですが、今回はこのまま使用します。

■ 使用

先ずはキューの確認をしてみます。

※ コマンドのオプションは使用しているバージョン等により異なることがありますので、必ずヘルプを参照の上ご利用下さい。
# ./qmHandle -l
999999 (0, R)
  Return-path:
  From:
  To:
  Subject:
  Date:
  Size: 

Messages in local queue: 0
Messages in remote queue: 1

いらないメールだったので、qmailを停止してメールキューを削除してみます。

# /etc/rc.d/init.d/qmail start

# ./qmHandle -d999999

削除終了後はqmailを再起動します。

# /etc/rc.d/init.d/qmail start

これで削除は完了です。

大量のスパムメールを削除したい場合は、この方法と別の方法を組み合わせて行うことも出来ますので、次回の機会にご紹介したいと思います。

PAGE TOP

Postfix + MySQLによるメールサーバ構築

Postfix + MySQLによるメールサーバ構築

こんにちは、粟野です。

インクレイブで構築するシステムによく使われるオープンソースの一つとして、PostfixというMTA(メールサーバソフトウェア)があります。

ご存じの方も多いと思いますが、このPostfixは導入も簡単で動作も高速、しかも、その気になれば複雑な設定もできてしまうという大変優れたMTAです。

インクレイブでは、他のオープンソースと連動させるために、Postfixインストールの際「MySQLのオプション」を有効にすることがよくありますので、今回はrpmパッケージからの導入を行わず、MySQLオプションを有効にしたrpmパッケージを作成・導入する方法をご紹介したいと思います。

ご利用予定のバージョンによって多少方法が異なる事もありますので、今回は、ちょっと古いバージョンとはなりますが弊社で成功した際の手順のご紹介となります。(CentOS 5 + postfix-2.3.3-2.1)

なお、この手順は新規インストールの場合の手順となりますので、既に運用中の場合、ご利用のバージョンが異なる場合などは、自己責任の上参考にしていただければと思います。また、ご利用バージョンに合わせた 「src.rpm」ファイルのご利用をお願いします。

■ 「src.rpm」を取得します
# cd ~
# wget http://ftp.riken.jp/Linux/centos/5/os/SRPMS/postfix-2.3.3-2.1.el5_2.src.rpm
# rpm -ivh postfix-2.3.3-2.1.el5_2.src.rpm
# cd /usr/src/redhat/SOURCES
■ 「spec」ファイルを編集します
# vi postfix.spec
----
%define MYSQL 1
----
■ rpmパッケージを作成します
# rpmbuild -ba postfix.spec

※rpm-buildが入っていない場合は関連するソフトウェアを含めてyumでいれておきます
# yum install rpm-build gcc db4-devel pkgconfig openldap-devel cyrus-sasl-devel pcre-devel
■ インストールします
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh postfix-2.3.3-2.1.i386.rpm

これでインストールは完了です。

これにより、PostfixMySQLが連動できるようになりましたので「postfixadmin」や「phpMyAdmin」等と連動して管理を行うことができるようになります。

こういった積み重ねにより、モバインでは時間あたり数十万件の高速メール配信を実現しています。

PAGE TOP