メール管理者の「ヒヤリハット」レポート
−不用意なセキュリティ対策がトラブルの種に−佐藤潔、内田雅生、飯村直弘、加藤雅彦
2008/3/3
スパム対策を導入したらメールが遅延?
スパムメールがあまりにひどいため、メールサーバ側でもスパム対策を実施することになった。いくつか方法はあったが、調査の結果、メールサーバ自体の負荷を上げることなくそれなりに効果の高そうなスパム対策として、グレイリスティング(greylisting)という手法が有効であることが分かった。
グレイリスティングとは、MTAに届いたメールにエラーメッセージを返して受け取りをいったん拒否し、一定時間を置いて再度送ってきたもののみ受け取るという仕組みだ(図2)。スパム送信者やボットの多くは、いったん拒否されたメールを再送することは少ないため、この手法が有効だ。実際に導入してみると、確かにスパムメールは大幅に減り、メールサーバの負荷も減った。
図2 グレイリスティングの仕組み |
ところが今度は、一部のユーザーから「メールが届くのが非常に遅くなった」というクレームが出てしまった。
■解決
前述のとおりグレイリスティングでは、一度SMTP接続を拒否し、再送されてきたメールを受け取る。このため、最初のメールが受け取り拒否されてから再送されるまでの15分〜1時間程度、メールが遅延してしまう。
もともとメールシステムは、すぐにメールが届くことが保証されている仕掛けではないのだが、現在では携帯メールなどの感覚と同じように、「出したらすぐ届くのが当然」とユーザーは考えている。このため、少しでも遅延が生じるとクレームにつながることもある。
この場合は、セレクティブ・グレイリスティング(selective greylisting)と呼ばれる方法で解決した。セレクティブ・グレイリスティングは、すべてのメールについて受け取りを拒否するのではなく、「怪しい」接続先からのみ選択的にグレイリスティングを実施する。
■教訓 スパム対策では、手法によってはサーバやユーザーの負荷増など、何らかの副作用が起こる場合が多い。よくよく検証を行ってから導入しないとトラブルになる場合が多く、注意が必要だ。 |
再起動したらSMTP認証でメール送信ができない!
最近では広くスパムメール対策として受け入れられている手法が、Outbound Port25 Blocking(OP25B)だ。迷惑メール送信者やボットが、自分が利用しているISPや企業のメールサーバ以外にアクセスすることを制限することで、スパムメールの送信を阻止する方法である。
ただOP25Bが実施されると、外部のSMTPサーバに直接アクセスし、メールを送信することができなくなってしまう。これを避けるために用意されているのが、サブミッションポートだ。ただし、サブミッションポート(587番ポート)を介して無制限にSMTPサーバにアクセスできては意味がないため、SMTP認証(SMTP Auth)を経て、ユーザーを確かめてから接続を許可する実装が一般的だ(図3)。
図3 OP25Bとサブミッションポート |
とあるシステムでもOP25Bを導入し、サブミッションポートからSMTP認証を用いてメール送信が行えるよう、メールサーバの構成を変更した。その後しばらくは問題なく稼働していたのだが、メンテナンスのタイミングでメールサーバを再起動した後、「一部のユーザーでメールが送信できない」というトラブルが発生してしまった。
【関連記事】 http://www.atmarkit.co.jp/fsecurity/column/ueno/32.html Security&Trust ウォッチ(32) 25番ポートの攻防 |
調べてみると、メールサーバは問題なく稼働しており、死活監視でも障害は上がってきていない。しかし、SMTP認証でメール送信を行っているユーザーのみ送信が行えない状況になっていることが分かった。
■解決
SMTP認証では、セッション開始時にユーザー認証を行うのだが、これは外部の認証サーバへ問い合わせることで行われる。当然、認証サーバが起動していなければ認証に失敗するため、SMTP認証でのメール送信も失敗してしまう。
この場合は、単純に起動時の実行スクリプト(rcスクリプト)に、外部認証サーバを起動する設定を書き忘れていた。このため、(当然ながら)認証サーバが起動していなかったのが原因であった。
それまでの死活監視では、単にメールサーバの送信ポートと受信ポートが正常に反応するかどうかだけを見ていたため、認証サーバが死んでいる場合などは分からない状況となっていたのだ。
■教訓 いまやメールサーバは、POP3による受信とSMTPによる送信だけという単純な構成ではなく、認証サーバやポリシーサーバ、ユーザーアカウントを管理しているRDBなど、いくつもの周辺デーモンと連携して動いている場合が増えてきている。そのため、メールシステム全体としてのメンテナンスや監視を行うよう注意する必要がある。 |
2/3 |
|
||||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム Linux導入事例関連記事 |
オープンソースで情報システムを刷新した嘉悦大学 嘉悦大学は情報システムのインフラを、CentOSやOpenLDAP、Sambaといったオープンソースソフトウェアで刷新した |
|
日米大手銀行がLinuxを採用したそれぞれのワケ バンク・オブ・アメリカと三菱東京UFJという日米を代表する大手銀行は、なぜLinuxとその上で動作するオープンソースソフトウェアを導入したのか |
|
特集:謎のOracleトラブルに挑む(前編) わずかな手掛かりから障害を解決した事例をとおして、トラブルシューティングのあり方や技法、困難さが見えてくる |
|
特集:謎のOracleトラブルに挑む(後編) 編で障害再現に成功したが、原因が特定されたわけではない。彼らはどのようにして問題を切り分けていったのだろうか? |
|
3年間無停止でNTTグループを支えるLinux 国内で最初期にLinuxで業務システムを構築したNTTコムウェア。このシステムはNTTグループ全体にも導入され、3年間無停止で稼働し続けている |
|
Linux Squareフォーラム全記事インデックス |
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|