EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第7回 知らない間にSPAMメールの送り手に?~メールサーバの正しいセキュリティ対策

  2010/06/03 00:00

自社のメールサーバをオープンリレーにしないためのポイント

 メールサーバがオープンリレーになることを防ぐためには、「誰がこのメールサーバを使ってメールを送ってよいか」を明確に規定するルールが必要です。この「誰が」ということを区別するためには、一般的にメールアドレス、IPアドレス、送信時の認証などが使われます。

 このように解説すると、とても難しいように感じるかもしれませんが、実際には次のような比較的単純なルールが使われます。

(1)比較的単純なルール
  1. 組織内のIPアドレスから、組織外へのメールは自由に送信できる
  2. 組織外のIPアドレスからは自組織宛のメールしか受け取らない
メールのリレーに制限をかける
メールのリレーに制限をかける
(2)確実なルール
  1. メールサーバを利用する時には、ユーザ名とパスワードを使ったSMTP認証を実施する
  2. SMTP認証を受けた人だけが、メールサーバを利用して自由にメールを送信できる
  3. SMTP認証を行っていない(あるいは認証エラーの)相手からは、自組織のメールしか受け取らない

オープンリレーのチェック

 メールサーバがオープンリレーになっていないかどうかのチェックは、次のようにすることで、比較的簡単に行うことができます。ただし、このチェックは、組織外から行う必要があります。自宅や、モバイル端末など、組織の外部へ接続してチェックを行って下さい。

---------------------------------------------------------------------------
$ telnet XX.XX.XX.XX smtp                                            ← (1)
Trying XX.XX.XX.XX...
Connected to XX.XX.XX.XX.
Escape character is '^]'.
220 mail.designet.jp ESMTP Postfix
HELO localhost.localdomain                                           ← (2)
250 mail.designet.jp
MAIL FROM:<abc@example.com>                                          ← (3)
250 2.1.0 Ok
RCPT TO:<abc@example.com>                                            ← (4)
554 5.7.1 <abc@example.com>: Relay access denied                     ← (*)
quit                                                                 ← (5)
221 2.0.0 Bye
Connection closed by foreign host.
---------------------------------------------------------------------------

 XX.XX.XX.XXはメールサーバのIPアドレスで、(1)~(5)が入力行です。それぞれ、次のようなことをしています。

(1)smtpポートに接続

 telnetコマンドでメールサーバのsmtp(tcp/25)ポートへ接続しています。

 telnetコマンドは、Linuxなどでは標準的に利用できます。また、Windowsではコマンドプロンプトから利用することができます。

(2)名前を入力

 HELOに続いて、自分の名称を入力します。ほとんどの場合、チェックが行われている訳ではありませんので、この例のようにlocalhost.localdomainで構いません。

(3)Fromを入力

 “MAIL FROM”に続いて、自組織でないアドレスを入力します。実際にメールの送信を行わないため、この例とまったく同じで問題ありません。

(4)RCPT TOを入力

 “RCPT TO”に続いて、自組織でないアドレスを入力します。実際にメールの送信を行わないため、この例とまったく同じで問題ありません。

(5)切断

 “quit”を入力して終了します。

 このようにして、(*)のようにリレーエラー(先頭の番号が500番台)となれば、正しくオープンリレー対策が行われていることになります。もしオープンリレーになってしまっている場合には、次の例のように、OK(先頭の番号が200番台)が表示されます。

---------------------------------------------------------------------------
$ telnet XX.XX.XX.XX smtp
Trying XX.XX.XX.XX...
Connected to XX.XX.XX.XX.
Escape character is '^]'.
220 mail.designet.jp ESMTP Postfix
HELO localhost.localdomain                                     
250 mail.designet.jp
MAIL FROM:<abc@example.com>   
250 2.1.0 Ok
RCPT TO:<abc@example.com>
250 2.1.5 Ok                                                        ← (*)
quit
221 2.0.0 Bye
Connection closed by foreign host.
---------------------------------------------------------------------------

 この例では、組織とは無関係なメールアドレスから、無関係なメールアドレスへの転送を許可していることになります。つまり、このように表示されたらオープンリレーになっているということです。

mail-abuse.orgを使ったチェック

 なお、インターネット上のサービスを使って、より厳しいチェックを行うこともできます。そのうちの一つが、mail-abuse.orgです。これは、ウイルスチェックソフトウェアで有名なTrend Micro社の関係組織MAPSが提供しているSPAMメール対策用の情報サイトです。メールサーバからテスト用サーバにtelnetで接続するだけで19項目の詳細なテストを行ってくれます。

---------------------------------------------------------------------------
$telnet relay-test.mail-abuse.org
Trying 168.61.4.13...
Connected to relay-test.mail-abuse.org.
Escape character is '^]'.
Connecting to XX.XX.XX.XX ...
<<< 220 mail.designet.jp ESMTP Postfix
>>> HELO cygnus.mail-abuse.org
<<< 250 mail.designet.jp
:Relay test: #Quote test
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <"nobody@mail-abuse.org">
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 1
>>> mail from: <nobody@mail-abuse.org>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 2
>>> mail from: <spamtest@maps1.pa.vix.com>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #test 3
>>> mail from: <spamtest@localhost>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 4
>>> mail from: <spamtest>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 5
>>> mail from: <>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 6
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 7
>>> mail from: <spamtest@[XX.XX.XX.XX]>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 8
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody%mail-abuse.org@mail.designet.jp>
<<< 554 5.7.1 <nobody%mail-abuse.org@mail.designet.jp>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 9
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody%mail-abuse.org@[XX.XX.XX.XX]>
<<< 554 5.7.1 <nobody%mail-abuse.org@[XX.XX.XX.XX]>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 10
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <"nobody@mail-abuse.org">
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 11
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <"nobody%mail-abuse.org">
<<< 554 5.7.1 <nobody%mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 12
>>> mail from: <spamtest@[XX.XX.XX.XX]>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org@mail.designet.jp">
<<< 501 5.1.3 Bad recipient address syntax
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 13
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <"nobody@mail-abuse.org"@[XX.XX.XX.XX]>
<<< 554 5.7.1 <nobody@mail-abuse.org@[XX.XX.XX.XX]>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 14
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org@[XX.XX.XX.XX]>
<<< 554 5.7.1 <nobody@mail-abuse.org@[XX.XX.XX.XX]>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 15
>>> mail from: <spamtest@[XX.XX.XX.XX]>
<<< 250 2.1.0 Ok
>>> rcpt to: <@mail.designet.jp:nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 16
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <@[XX.XX.XX.XX]:nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #Test 17
>>> mail from: <spamtest@[XX.XX.XX.XX]>
<<< 250 2.1.0 Ok
>>> rcpt to: <mail-abuse.org!nobody>
<<< 554 5.7.1 <mail-abuse.org!nobody>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #test 18
>>> mail from: <spamtest@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <mail-abuse.org!nobody@[XX.XX.XX.XX]>
<<< 554 5.7.1 <mail-abuse.org!nobody@[XX.XX.XX.XX]>: Relay access denied
>>> rset
<<< 250 2.0.0 Ok
:Relay test: #test 19
>>> mail from: <postmaster@mail.designet.jp>
<<< 250 2.1.0 Ok
>>> rcpt to: <nobody@mail-abuse.org>
<<< 554 5.7.1 <nobody@mail-abuse.org>: Relay access denied
>>> rset
<<< 421 4.7.0 mail.designet.jp Error: too many errors
Connecting to XX.XX.XX.XX ...
<<< 220 mail.designet.jp ESMTP Postfix
>>> HELO cygnus.mail-abuse.org
<<< 250 mail.designet.jp
>>> QUIT
<<< 221 2.0.0 Bye
Tested host banner: 220 mail.designet.jp ESMTP Postfix
System appeared to reject relay attempts
Connection closed by foreign host.
---------------------------------------------------------------------------


著者プロフィール

  • デージーネット 恒川 裕康(デージーネット ツネカワ ヒロヤス)

    株式会社デージーネット 代表取締役。「より安全で」、「より快適で」、「より楽しい」インターネットの実現をテーマとして、クラスタシステムを使った高信頼サーバの構築、SPAM対策やウイルスチェック対策のためのソフトウェアの開発、携帯サイト向けのシステム開発など、オープンソースソフトウェアを活用した事業を展開している。 著書に『Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編』『Linuxで作る完全メールシステム構築ガイド―sendmail/Postfix/qmail対応』(ともに秀和システム)などがある。

バックナンバー

連載:ゼロからわかるメール運用虎の巻

もっと読む

All contents copyright © 2007-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5