電子メールアドレス

電子メールアドレスの書式チェックをした後に、サーバ側で
DNSのMXレコードを問合わせ、見つからない場合はAレコードを問合わせる。

というのが、仕様で受信サーバのチェックとしていたが、ひとつ
疑問が残る。
RFC2821
5. Address Resolution and Mail Handling
にて
The lookup first attempts to locate an MX
record associated with the name. If a CNAME record is found instead,
the resulting name is processed as if it were the initial name.
と記述されている部分の意味が今一つピンとこない。
ここはDNSのCNAMEレコードをきちっと理解しないと何とも言えないが、
経験上、MXレコードとAレコードのみのチェックで十数年問題になった事は無いので、
飛ばしていたが、いまだに理解できない事が気になる事柄です。

PHPでチェックする場合は簡単で(電子メールアドレスの書式に問題ない事が前提)

$check = explode('@', $email);
$err = '';
if (!checkdnsrr($check[1], 'MX')) {
    if (!checkdnsrr($check[1], 'A')) {
       $err = '電子メールの受信サーバーが見つかりません';
    }
}


とこんな感じでしょうか。

CNAMEの件は解決(理解)できたら報告します。