このたび、DNSサーバーをCloudflareに移行しました。

Cloudflareは稀に障害によって様々なサービスが落ちたりすることがあるため、少し不安だったのですが、落ちたらまた元のサービスに戻そうということで、DNSを移行しました。

iCloud+ メールとの相性

iCloud+には、カスタムドメインでメールを送受信できる機能があります。ドメインをicloudのサーバに転送してそこから受信したり、逆にicloudのサーバ経由で送信できます。 この機能がDNS移行時に少しトラブルがあったので、そのメモを残しておきます。

CloudflareのDNSでは、リクエストをproxyできる機能があるようです(Ref: Cloudflare Docs)。 iCloud+メールのために、いくつかDNSを設定していたのですが、その中にDKIM署名のためのフィールドがあります。

通常はDKIMに必要なsig1._domainkeyを、TXTでそのまま値を記述するのですが、iCloud+メールではCNAMEで別のiCloudのサーバに転送します。 このCNAMEエントリをProxyしていたせいで、Gmailで以下のエラーが出ていました。

Authentication-Results: mx.google.com; dkim=permerror (no key for signature)

CloudflareのDNSで、proxyを解除するとDKIM認証が通るようになりました。

ただ、DKIM自体の認証は通っているはずなのに、まだ以下の警告(アラインメント)が出ていました。

From ヘッダー (送信メールアドレス) が DKIM ドメイン (送信ドメイン) と一致しません。この From ヘッダーの ID は「なりすまし」の可能性があるため、このメールには注意してください。

DMARCの設定

iCloud+メールでは、以下の設定を求められます(参考: Apple)。

  • TXT(iCloudでの管理用?)
  • SPF
  • MX
  • DKIM

これにはDMARCが含まれていないため、別途DNSに適当な内容を登録しました。 すると、Gmail側でもDMARCがpassとなり、アラインメントに関する警告もなくなりました。