ノウハウ
[エンジニア向け]

徹底解説、メールキューとメールセキュリティの話

ノウハウ
テクニカルサポート

6396c475今回はメールキューやメールの不正利用などのお話をします。Pleskの搭載されたVPSプランの方向けの情報です。

データセンターや、ホスティングサービスプロバイダーをしていると「あなたのサーバから大量なメール送信が確認されているためブロックリストに加えました」というようなメッセージを外部機関から受信することがあります。

国内外の第三者機関のスパムデータベース、ブロックリストを参照して、スパムかどうかの基準として採用している国内サービスも多いため、「なぜブロックリストに加わってしまったのか」を確認する必要があります。

 

スパム送信元になってしまった原因

実際に確認するとユーザ様が意図的にスパムの送信を試みているとか、パソコン自体がウィルスに侵されてしまい、機械的に連続メール送信を試みているということではないのがほとんどです。

もっとも多いのは以下のケースです。

1.メールアカウントのパスワードが漏洩し、不正な利用がされている
2.不正にウェブ上のメールフォーム等のツールが利用されている

不正な利用に気づくきっかけはあるか?

不正な利用については、機械的、連続的に操作されます。

メールアカウントリストに対してメールを送りつけようとする操作が繰り返されますが、そのリスト自体には無効なメールアドレスも多く含まれています。
サーバ内には送信待ちのメールメッセージ、つまり「メールキュー」が蓄積され、送信待ちメッセージがどんどん増えていきます。
不正利用にご自身で気づくという手段はなかなかないのですが、「メールキューの数」を確認して、大量のメールキューが溜まっているようなら不正利用されている可能性も高くなります。

Pleskのメールキュー確認、削除機能

Pleskにはメールキューを表示させるツールが付いています。

メールキューが0件の場合は何も表示されませんが、1件以上あると1ページに表示させる件数設定ができ、削除も可能です。

Plesk8の場合

1.Pleskにログイン
2.左メニューからサーバをクリック
3.メールをクリック
4.メールキュータブをクリック

この1ページに表示させることのできる、メールキューの件数設定は「10、25、100、すべて」のいずれかなのですが、ここは最大でも「100」件までにしてください。

「すべて」を選択してしまいますと、メールキューが大量に増えてしまった場合(たとえば数千件以上)にウェブで表示できないという自体にもなりかねません。

★それでも
Plesk8でメールキューの数が多いため表示件数を「すべて」と設定したらページが表示できなくなってしまった!!という場合は…

psaデータベースを確認し調整すれば100件などに設定しなおすことができます。(Plesk8)

# mysql -uadmin -p`cat /etc/psa/.psa.shadow`  psa

mysql> select * from ListsParams where list_name='mailqueuelist' ;
+---------+-----------+---------------+---------------+-------+-------+--------+------+-----------+
| user_id | user_type | parentList_id | list_name     | flags | sort  | filter | page | page_size |
+---------+-----------+---------------+---------------+-------+-------+--------+------+-----------+
|       0 |         1 |             0 | mailqueuelist |     0 | queue | /      |    0 |    999999 |
+---------+-----------+---------------+---------------+-------+-------+--------+------+-----------+
mysql> update ListsParams set page_size='100' where list_name='mailqueuelist' ;

mysql> select * from ListsParams where list_name='mailqueuelist' ;
+---------+-----------+---------------+---------------+-------+-------+--------+------+-----------+
| user_id | user_type | parentList_id | list_name     | flags | sort  | filter | page | page_size |
+---------+-----------+---------------+---------------+-------+-------+--------+------+-----------+
|       0 |         1 |             0 | mailqueuelist |     0 | queue | /      |    0 |       100 |
+---------+-----------+---------------+---------------+-------+-------+--------+------+-----------+
1 row in set (0.01 sec)

Plesk11の場合

1.Pleskにログイン
2.上部メニューからサーバをクリック
3.メールメニュー内の「メールサーバ設定」をクリック
4.メールキュータブをクリック

★Plesk11でメールキューの数が多いため表示件数を「すべて」と設定したらページが表示できなくなってしまった!!という場合は…

一旦Plesk11からログアウトして再ログインしてください。デフォルトの25件ずつに設定がリセットされます。

 

Plesk(qmail)でのコマンド上でのメールキュー確認

当社のPlesk搭載プランはいずれもメールサーバとしてqmailを採用しております。
メールキューの数を確認する場合はコマンドラインでもチェックが可能です。

# /var/qmail/bin/qmail-qstat

 

以前本ブログのPlesk搭載VPSサーバのqmailのメールキュー退避の回でも紹介した以下のコマンドですね。

ではコマンドでなんでもやれないかな、と思うのも人情ですが、qmailのメールキューファイルは一度に3つのファイルが作成される仕様ですし、Pleskのメールキュータブなら、記事の件名や差出人、宛先も確認しながら削除もできるため、PleskのGUIはとても便利な機能ですので、メールキュー数が数千通以内でおさまっている間はPleskのほうがお勧めではないかなと思います。

自動的にメールキュー数を確認できないのか?

ではPleskに毎日ログインしてメールキューをチェックしなければならないのか?コマンドログインをする必要がある?ということについてですが、忙しいシステム管理者は毎日チェックは難しいものです。

crontabで定期的にメールキューの数をチェックし一定の数を超えたらアラートメールを送信する、ということもできますね。

たとえば、、「300件以上」メールキューが溜まったら、taro@example.orgにメールを送信したいという場合…
方法はいろいろあると思いますが一例をご案内します。

まずメールキューの数だけ出力させるようにコマンドを整理します。

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


# /var/qmail/bin/qmail-qstat | grep queue:
messages in queue: 2


# /var/qmail/bin/qmail-qstat | grep queue:| awk ‘{print $4}’
2

数字だけの出力になりました。

ではこれを元に「/root/cron-qstat.sh」を作成してます。

 

#!/bin/bash
##### qmail queue stat
_TO=taro@example.org
QSTAT=`/var/qmail/bin/qmail-qstat | grep "queue:" | awk '{print $4}'`
if [ $QSTAT -gt 300 ]; then
/usr/sbin/sendmail -t <<EOF
To: $_TO
Subject: QMAIL QUEUE STAT
`/var/qmail/bin/qmail-qstat`
EOF
fi

/root/cron-qstat.sh に実行権限をつけてcrontabのroot権限で実行してみましょう。

とりあえず「現状メールキューの数が溜まっていないが、cronでうまく動いてるかどうか確認したい」場合、「-gt 300」(300を超える数)のところを「-lt 300」(300より少ない数)という条件で試して、スクリプトが実行されることを確認してから本来の「-gt 300」で設定し直すのもよいかもしれません。

上記はあくまでも簡易な例です。
本来は、監視システムを別に持っていて、監視メールを送るのは別システムであることが望ましいです。

簡易に設定できる、ということでこの例をあげましたが「メールキューがたまりすぎているときは警告メールすら遅延してしまう」ということもありうるためです。ですので閾値はあまりあげすぎないほうがよいでしょう。

メールキューは消したけれどそもそものメールセキュリティ対策は?

そもそも、メールキューが溜まってしまった原因としてもっとも多いのが、パスワードに予測されやすい文字列や辞書登録のある文字列が設定されていたため、パスワードが漏洩してしまうケースです。

実際に被害の原因となったアカウントが特定できた場合はもちろんですが、そうでなくてもメールのパスワードについては定期的に変更する、難しい文字列に設定することをお勧めします。

またパスワードが漏洩してしまったとしても、サーバ設定として

・ファイアウォール機能でSMTP認証の接続元をIPアドレスを絞り込む

なども有効です。※SMTP認証…25番ポートではなく、587番ポートのほうです※

また

・SMTP認証の他、POP before SMTPも有効にしておく

というのも機械的なアタックを抑制できることがあります。

また「ウェブのCGI等を介してメールが送信されてしまう」というケースについては、利用中のCMS等にセキュリティホールなどないか、FTPやPleskのファイルマネージャの不正利用のログはないか、などもご確認ください。
Plesk搭載のVPSプランは月額1,500円(税抜)からご利用いただけます。是非ご活用ください。

この記事を書いた人

テクニカルサポート

テクニカルサポートを得意とするエクスクラウドのサポートスタッフ。

この記事のタグ

オススメの記事

この記事を読んだ人にオススメのサービス

エクスクラウドのクラウドVPS

メモリ2GBで950円!最大72GBまで拡張!SSD搭載でメモリ量も多いため、WordPressなどのCMS利用にオススメです。負荷分散や冗長化についてのインフラ設計コンサルティング&サーバー構築代行を技術スタッフが承ります。オプションでクラウド型WAFが1,500円/月で提供、セキュリティ対策も対応に導入可能です。

ページトップへ