2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

第三者不正中継チェックの仕組み!

セキュリティの確認項目に、メールリレー(不正中継)が行えるかどうか?がある。これは、悪意のある第三者にSPAM等の行為を未然に防止するため、自分のメールサーバが中継が行えるかどうかを確認することである。
この仕組みは簡単で、TELNETを使って、個人で確認することが可能である。ここでは、その不正中継が行えるかどうか?自分のサーバをチェックするTELNETコマンドについて説明する。


1.メールリレーをチェックできるサイト

メールリレーをチェック出来るサイトは、有名どころでは RBL.JP である。このサイトは、毎度おなじみで多分みなさんもすでに、ご利用かと思う。

第三者中継テストのためmail.xxxxxxxxxx.co.jpに接続しています…

<<< 220 mail.xxxxxxxxxx.co.jp ESMTP Postfix
>>> HELO rep.rbl.jp
<<< 250 mail.xxxxxxxxxx.co.jp
中継テスト その0

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@rep.rbl.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@rbl.jp>
<<< 554 5.7.1 <rlytest@rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その1

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@rep.rbl.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その2

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@rep.rbl.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その3

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@rep.rbl.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その4

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@[xxx.xxx.xxx.xxx]>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@rep.rbl.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その5

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest%rep.rbl.jp@mail.xxxxxxxxxx.co.jp>
<<< 554 5.7.1 <rlytest%rep.rbl.jp@mail.xxxxxxxxxx.co.jp>: Relay access denied
relay NOT accepted!!
中継テスト その6

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest%rep.rbl.jp@[xxx.xxx.xxx.xxx]>
<<< 554 5.7.1 <rlytest%rep.rbl.jp@[xxx.xxx.xxx.xxx]>: Relay access denied
relay NOT accepted!!
中継テスト その7

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <“rlytest@rep.rbl.jp”>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その8

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <“rlytest%rep.rbl.jp”>
<<< 554 5.7.1 <rlytest%rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その9

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@rep.rbl.jp@mail.xxxxxxxxxx.co.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp@mail.xxxxxxxxxx.co.jp>: Relay access denied
relay NOT accepted!!
中継テスト その10

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <“rlytest@rep.rbl.jp”@mail.xxxxxxxxxx.co.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp@mail.xxxxxxxxxx.co.jp>: Relay access denied
relay NOT accepted!!
中継テスト その11

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <“rlytest@rep.rbl.jp”@[xxx.xxx.xxx.xxx]>
<<< 554 5.7.1 <rlytest@rep.rbl.jp@[xxx.xxx.xxx.xxx]>: Relay access denied
relay NOT accepted!!
中継テスト その12

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <@mail.xxxxxxxxxx.co.jp:rlytest@rep.rbl.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その13

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <@[xxx.xxx.xxx.xxx]:rlytest@rep.rbl.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
中継テスト その14

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rep.rbl.jp!rlytest>
<<< 554 5.7.1 <rep.rbl.jp!rlytest>: Relay access denied
relay NOT accepted!!
中継テスト その15

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rep.rbl.jp!rlytest@mail.xxxxxxxxxx.co.jp>
<<< 554 5.7.1 <rep.rbl.jp!rlytest@mail.xxxxxxxxxx.co.jp>: Relay access denied
relay NOT accepted!!
中継テスト その16

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rep.rbl.jp!rlytest@[xxx.xxx.xxx.xxx]>
<<< 554 5.7.1 <rep.rbl.jp!rlytest@[xxx.xxx.xxx.xxx]>: Relay access denied
relay NOT accepted!!
中継テスト その17

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <“rlytest%rep.rbl.jp”@xxxxxxxxxxxxxxx.co.jp>
<<< 554 5.7.1 <rlytest%rep.rbl.jp@xxxxxxxxxxxxxxx.co.jp>: Relay access denied
relay NOT accepted!!
中継テスト その18

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@mail.xxxxxxxxxx.co.jp>
<<< 250 2.1.0 Ok
>>> RCPT TO: <“rlytest@rep.rbl.jp”@xxxxxxxxxxxxxxx.co.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp@xxxxxxxxxxxxxxx.co.jp>: Relay access denied
relay NOT accepted!!
中継テスト その19

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@localhost>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@rep.rbl.jp>
<<< 554 5.7.1 <rlytest@rep.rbl.jp>: Relay access denied
relay NOT accepted!!
接続を閉じています…

>>> QUIT
<<< 421 4.7.0 mail.xxxxxxxxxx.co.jp Error: too many errors
第三者中継テストの結果

全てのテストが行われました, no relays accepted

これは、RBL.JPで行った不正中継をされないまともなメールサーバのチェック結果である。


2.実際にTELNETを使って自分でやってみる

自分のメールサーバのホスト名をhoge.hogehoge.comとして説明する。まず、自分のサーバからはチェックできないので、あなたの会社からTELNETを使って確認するのが良いかと思う。

1)リレーが拒否されるまともなサーバの場合

# telnet hoge.hogehoge.com 25

Trying ***.***.***.***…
Connected to hoge.hogehoge.com.
Escape character is ‘^]’.
220 hoge.hogehoge.comESMTP

HELO main.kozupon.com                                  ← ①
250 hoge.hogehoge.com

MAIL FROM:aabbccddTEST@hoge.hogehoge.com               ← ②
250 ok

RCPT TO:root@main.kozupon.com                            ← ③
553 sorry, that domain isn’t in my list of allowed rcpthosts (#5.7.1)       ← ④

quit

221 hoge.hogehoge.com
Connection closed by foreign host.

① 自分の会社からTELNETを行った場合、HELOの後に会社のホスト名を入力する(FQDN)。
これで、クライアントを相手のメールサーバに認識させる。

② MAIL FROM:の後にここでは適当な有り得ないメールアドレス例えば、aabbccddTEST@hoge.hogehoge.comを入力する。これで、メールサーバに送信先を認識させる。

③ RCPT TO:の後に会社の自分のメールアドレスを入力する。これで、メールサーバに送信先を認識させる。

④ 553 sorry, レスポンスとしてが表示されたら中継は拒否された事になる。

2)リレーが許可されてしまうだめなサーバの場合

# telnet hoge.hogehoge.com 25

Trying ***.***.***.***…
Connected to hoge.hogehoge.com.
Escape character is ‘^]’.
220 hoge.hogehoge.comESMTP

HELO main.kozupon.com
250 hoge.hogehoge.com

MAIL FROM:aabbccddTEST@hoge.hogehoge.com
250 ok

RCPT TO:root@main.kozupon.com
250 root@main.kozupon.com… Recipient ok                    ← ①

quit

221 hoge.hogehoge.comclosing connection
Connection closed by foreign host.

① このメッセージで適当な、メールアドレスを入力したのにも関わらず、Recipient ok 受領している。このようなメッセージを発してる場合は、中継を許可している。
中継を許可してる駄目なメール鯖だと言うことが解ったら、取り急ぎブラックリストに掲載されてないかを ここ でチェックしてみよう。ブラックリストに載ってしまったら、少々やっかいだ。

このように、telnetコマンドを使って簡単にチェックできる。みなさんも、やってみてはいかが!
注:しかし、むやみやたらに人のサーバでやるのはやめましょう!クラッキングのチェックと間違えられますょ(笑)!


3.当たり前の機能を逆手に取るソースルーティング

ソースルーティングという言葉をご存じですか?
通常、メールサーバでのセキュリティーは不正中継にあります。不正中継を許可しない設定がメールサーバを頑丈な物にする。
しかし、外敵は意外な盲点をついてメール中継を行います。それに利用されるのがソースルーティングである。
ソースルーティングとは、

unko%hogehoge.com@kozupon.com

この書式は、kozupon.com宛のメールサーバに送りますが、ドメインがkozupon.comなので、なにげにkozupon.comのMTAはメールの受信を許可してしまう。さらに最終的に、このメールはunko@hogehoge.comに送られてしまう。
しかし、この仕組みは間違えではなく ソースルーティングという仕組み で許されている行為なのである。その行為を逆手にとって不正中継をやらかす奴らが非常に多い。そんなことも何も知らずにメル鯖を運営している方々は、最終的にRBLサイトのブラックリストに登録されてしまってお尋ね者として不評を買うのである。 と言うわけで、念のため RBL CHECK でチェックしてみちゃいます?
しかし、こんな形式のアドレスは実際には許可する必要はない!!
最近のMTAには元々これを拒否する機能が組み込まれている(例えばPostfixではPostfix-1.1.10以降など)ため、心配はないが、頭に入れて置いた方が良いと思う。
以下に参考として、私のメールサーバの不正中継チェックをした内容を示します。チェックは、以下のURLサイトで行いました。

http://www.abuse.net/relay.html

チェックしてない方は、チェックをお勧めする。以下の中で※印がソースルーティングチェックである。

Mail relay testing
Connecting to mail.kozupon.com for anonymous test …
<<< 220 sub2.kozupon.com ESMTP Postfix
>>> HELO www.abuse.net
<<< 250 sub2.kozupon.comRelay test 1
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@abuse.net>
<<< 250 Ok
>>> RCPT TO:<relaytest@abuse.net>
<<< 554 <relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 2
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest>
<<< 250 Ok
>>> RCPT TO:<relaytest@abuse.net>
<<< 554 <relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 3
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<>
<<< 250 Ok
>>> RCPT TO:<relaytest@abuse.net>
<<< 554 <relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 4
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<relaytest@abuse.net>
<<< 554 <relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 5
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@[203.141.144.180]>
<<< 250 Ok
>>> RCPT TO:<relaytest@abuse.net>
<<< 554 <relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 6
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<relaytest%abuse.net@kozupon.com>
<<< 554 <relaytest%abuse.net@kozupon.com>: Recipient address rejected: Relay access denied↑その1※Relay test 7
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<relaytest%abuse.net@[203.141.144.180]>
<<< 550 <relaytest%abuse.net@[203.141.144.180]>: Recipient address rejected: Please use user@
domain address forms only.↑その2※Relay test 8
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<“relaytest@abuse.net”>
<<< 554 <relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 9
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<“relaytest%abuse.net”>
<<< 554 <relaytest%abuse.net>: Recipient address rejected: Relay access deniedRelay test 10
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<relaytest@abuse.net@kozupon.com>
<<< 554 <relaytest@abuse.net@kozupon.com>: Recipient address rejected: Relay access deniedRelay test 11
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<“relaytest@abuse.net”@kozupon.com>
<<< 554 <relaytest@abuse.net@kozupon.com>: Recipient address rejected: Relay access deniedRelay test 12
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<relaytest@abuse.net@[203.141.144.180]>
<<< 550 <relaytest@abuse.net@[203.141.144.180]>: Recipient address rejected: Please use user@domain address forms only.Relay test 13
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<@kozupon.com:relaytest@abuse.net>
<<< 554 <@kozupon.com:relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 14
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<@[203.141.144.180]:relaytest@abuse.net>
<<< 554 <@[203.141.144.180]:relaytest@abuse.net>: Recipient address rejected: Relay access deniedRelay test 15
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<abuse.net!relaytest>
<<< 554 <abuse.net!relaytest>: Recipient address rejected: Relay access deniedRelay test 16
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<abuse.net!relaytest@kozupon.com>
<<< 554 <abuse.net!relaytest@kozupon.com>: Recipient address rejected: Relay access deniedRelay test 17
>>> RSET
<<< 250 Ok
>>> MAIL FROM:<spamtest@kozupon.com>
<<< 250 Ok
>>> RCPT TO:<abuse.net!relaytest@[203.141.144.180]>
<<< 550 <abuse.net!relaytest@[203.141.144.180]>: Recipient address rejected: Please use user@
domain address forms only.Relay test result
All tests performed, no relays accepted.
テストはすべて実行しました。中継は受理しません。

以上

コメント