2003年09月21日 (日)

IP アドレスでメールを送るには

FQDN が付いていないメールサーバにメールを送りたいときや、.Mac のメールサーバの DNS 環境が怪しくて、自分のプロバイダ等の MX を正しく認識していないとき、@ より後ろを IP アドレスで指定できたらうまくいくかもしれない。この方法を調べてみた。

もともと te_taguchi さんに試していただいてもので、更に検証を行った。te_taguchi さんには大変感謝である。

結論から述べよう。.Mac の SMTP サーバは qmail と同じく
local_part@[IPアドレス]
という形式のメールアドレスを理解し、IPアドレス で指定されたホストに SMTP 接続し、そこの local_part へメールを渡す能力を持っている。しかし、その相手のホストそれでメールを受け取れるように設定されていなかったり、それができる構成になっていなかったりするので、メールが到達するかどうかは相手次第である。また、
local_part@IPアドレス
という形式では、IPアドレス が DNS 名だと勘違いされてしまい、.Mac の SMTP サーバはメールを送ることができない。

以下に実験内容を詳しく紹介する。試したのは
local_part@[IPアドレス]
local_part@IPアドレス
という二つの形式のメールアドレス。後者は RFC 2821 によると正規のアドレス表現である。私のプライバシー保護のためここでは、local_part は一律 okamura とし、IPアドレス は一律 123.123.123.123 とする。

【okamura@[123.123.123.123]】
●123.123.123.123 が自分のことだと知らないホストが相手の場合
次のようなことが書かれたエラーメールが戻ってきた。
The original message was received at Sun, 21 Sep 2003 02:36:45 -0700 (PDT)
from smtpin08-en2 [10.13.10.153]

   ----- The following addresses had permanent fatal errors -----
<okamura@[123.123.123.123]>
    (reason: 550 5.5.0 <okamura@[123.123.123.123]>... Relaying Denied: Authenticate with POP first.)

   ----- Transcript of session follows -----
... while talking to [123.123.123.123]:

>>>>>> RCPT To:<okamura@[123.123.123.123]>

<<< 550 5.5.0 <okamura@[123.123.123.123]>... Relaying Denied: Authenticate with POP first.
550 5.1.1 <okamura@[123.123.123.123]>... User unknown

.Mac の SMTP サーバは相手のホスト 123.123.123.123 に接続しメールを送ろうとしているが、相手のホストが、123.123.123.123 が自分のことであるとは知らないので、他所のドメインへのリレーだと勘違いしている。このために、正当なユーザであることを証明するためにまずは POP をしなさいと怒っている。このサイトは、ドメイン外からドメイン外へメールを送る時に POP before SMTP という仕組みを採用している。

だいたい MX として設定されているのに IP アドレスで送信先が指定されているメールなんて受け取る必要がないのが普通。送りたければ @ の後ろもドメイン名にすれば済むからである。それが付けられないとしたら、それは DNS 環境が整備されていない送信元が悪いわけで、そっちを直しましょうということになる。

それは置いておいて、とにかくこの結果から .Mac の SMTP サーバは IPアドレス で指定したホストに正しくメールを送りつけようとすることは判った。

●ローカル配送は内部のホストにお任せのメール受け口ホストが相手の場合
今度は別なエラーパターンを紹介する。戻ってきたエラーメールには次のように書かれていた。
The original message was received at Sun, 21 Sep 2003 03:21:48 -0700 (PDT)
from smtpin08-en2 [10.13.10.153]

   ----- The following addresses had permanent fatal errors -----
<okamura@[123.123.123.123]>
    (reason: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1))

   ----- Transcript of session follows -----
... while talking to [123.123.123.123]:

>>>>>> DATA

<<< 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
550 5.1.1 <okamura@[123.123.123.123]>... User unknown
<<< 503 RCPT first (#5.5.1)

この相手のホストはそのドメインのメールの受け口だけをやっていて、実際にはそのドメイン宛のメールは内部のサーバへ転送してそこでユーザのメールボックスに置くような構成になっている。このため、IP アドレスでドメイン部分が指定してあると、その内部のサーバに転送するべきメールだとは思ってもらえない。指定された IP アドレスは自分自身なので自分自身のローカルユーザにメールを送ろうとしてしまう。そして登録されていないユーザなので、エラーメールを返してきている。

というわけで、指定された IP アドレスを持つホストが、それが自分が受け入れるドメインの一つであることを知っていて、自分自身のローカルなユーザに指定された local_part と一致するユーザ(そしてそれが期待している送信先)である場合にのみ、
local_part@[IPアドレス]
という形式で宛先を指定したメールが到達する。

【okamura@123.123.123.123】
先にも述べたが SMTP の規格(RFC 2821)ではこの形式は正しい形式で、123.123.123.123 は IP アドレスとして扱われるもののようなのだが、.Mac の SMTP サーバはこれを名前と思ってアドレス解決しようとしてしまう。当然、そんな名前を持ったドメインはないので送り先がわからなくなって、失敗してしまう。これで返ってきたエラーメールには次のように書かれていた。
The original message was received at Sun, 21 Sep 2003 02:39:28 -0700 (PDT)
from smtpin07-en2 [10.13.10.152]

   ----- The following addresses had permanent fatal errors -----
<okamura@123.123.123.123>
    (reason: 550 Host unknown)

   ----- Transcript of session follows -----
550 5.1.2 <okamura@123.123.123.123>... Host unknown (Name server: 123.123.123.123: host not found)

この内容から判るように、.Mac の SMTP サーバはどこにもメールを送りつけようとしていない。その前に、123.123.123.123 というホストが判りませんでしたと諦めている。

Posted: 19:27    | Comment | Trackback


以下、類似エントリです。