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
というホストが判りませんでしたと諦めている。