非固定IPを使ってサーバ公開しているとdyndns.orgとかのダイナミックDNSサービスが便利に使えますよね。
でも、独自ドメインを取ってCNAMEを使って別名定義をする際には注意が必要です。
私がハマった恥ずかしい設定を説明します。
これは全然駄目なパターンです。hijiki.netのzone設定ファイルで、 DDNSのAレコードの名前をyotan.dyndns.orgを例に取って以下に記します。
@ IN MX 10 mail.hijiki.net.
mail IN CNAME yotan.dyndns.org.
xxx@hijiki.net宛てのメールMTAは始めにMXレコードのhijiki.netを探してそれのAレコードはmail.hijiki.netだと思いますが、 実際にmail.hijiki.netを引いてみるとCNAMEでまだまだ先がある事を知り、ショックを受けます(笑)
実際これはRFC974,RFC2181に違反しているため、設定してはいけません。単にアドレス解決のコストがかかるだけでなく、 MTAによっては転送すら行えません。
以下に例を示します
@ IN MX 10 yotan.dyndns.org.
@ IN CNAME yotan.dyndns.org.
この例ではxxx@hijiki.net宛てはMXレコードを引くと直にAレコードであるyotan.dyndns.orgを引くのでメールは自宅のサーバに転送されますが、 次のCNAMEが曲者です。
この二つのレコードに関連性は無いように見えますが、MTAがPostfixの場合、 わざわざCNAMEを参照してEnvelope-toをxxx@yotan.dyndns.orgに変更してしまいます。 当然そのあて先を受けたMTAは自分が受け付けるドメインではないため転送を拒否します。
CNAMEは別にIPアドレスを引く際の別名という位置づけではなく、メールのあて先を変更する目的もありますので、 Postfixの動きは正しいそうです。
いわゆるDNS設定で言う「@」の指定ではCNAMEは使えないということになります。
hijiki.netのアドレス解決したい場合はAレコードで指定するのが無難です。以下の感じです。
@ IN MX 10 hijiki.net.
@ IN A 127.0.0.1
www IN CNAME hijiki.net.
mail IN CNAME hijiki.net.
@のAレコードはおとなしくDiCE等で自動更新させましょう。wwwやmailはMTAから参照しない名前となりますので、 CNAMEを使っても大丈夫です(アドレス解決のコストはかかりますが)
二番目の問題は暫くハマりました。まさかPostfixにトラップがあったとは…。
CNAMEは便利そうだったのですがMTAによって(更にVersionによって)挙動が微妙に異なるようなので使いすぎには注意したほうが良さそうです。
※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです


