AmazonのSESメールサービスには、DKIM認証が必要です。認証の1つのステップは、CNAMEレコードをドメインのDNSに追加することです。
残念ながら、CNAMEレコードにはアンダースコアがあります。レジストラであるNetwork Solutionsでは、CNAMEレコードにアンダースコアを使用できません。
これの回避策はありますか?別のレジストラへの移管はオプションですが、恐ろしいオプションであることは明らかです。
DKIMはTXT
レコードで行われます。もちろん、CNAME
レコード(またはチェーン)がTXT
レコードを指すようにすることもできますが、TXT
レコードを直接作成する方がはるかに一般的です。
DNSの信頼できるネームサービスプロバイダーでは、下線付きのラベル(DKIMが必要とする)をドメインのゾーンファイルに配置できるようにする必要があります。そうでない場合は、別のDNSネームサービスプロバイダーを選択するか、独自のネームサーバーを使用してください。
どのDNS registrar使用しているのかは関係ありません。レジストラはドメインのコンテンツを制御せず、ドメインを認識しません。
レジストラとDNSネームサービスプロバイダーが同じ組織であることもありますが、これらは別々の役割であり、個別に検討する必要があります。
Network Solutionsカスタマーサービスの電話で2時間以上経過した後、Amazon SES DKIM認証レコードを手動で入力してもらいました。
まず、CNAME
でアンダースコアを使用できないのは、不正な動作です。
RFC 1034によると:
ホスト名ではない名前は、印刷可能な任意のASCII文字で構成できます。
DKIM規格は、RFC 4871に従って、アンダースコアを要求します。
すべてのDKIMキーは、「_ domainkey」という名前のサブドメインに保存されます。 「d =」タグが「example.com」で、「s =」タグが「foo.bar」のDKIM-Signatureフィールドがある場合、DNSクエリは「foo.bar._domainkey.example.com」に対するものになります。
RFC 1034はCNAMEレコードを記述し、CNAME RR
は(必ずしも)hostname
ではないので、印刷可能なASCII文字は許可する必要があります。これに関してNetwork Solutionsは間違っています。
DKIMレコードはTXT
レコードとして保存できますが、Amazon SESはCNAMEレコードを使用してキーをローテーションできます。これは、Network Solutionの不適切なポリシーがなければ、可能です。
これに関するほとんどの情報について、私は this site をお勧めします。これは、hostnames
(CNAME
のフィールドは可能ですが、必ずしもではありません)アンダースコアを許可する必要があります。
最終的に手動でレコードを入力させるには、チケットをエスカレーションする必要がありました。電話で行う必要があり、最初のメールチケットには「電話する必要があります」という残念な応答が返されました。
他のネームサーバーではCNAMEでアンダースコアを使用できることと、それらに対応できない場合はすぐに切り替えることを何度か説明しなければなりませんでした。
これらのDNSレコードが適切に配置されていることを「確認」するために、プライマリアカウントホルダー(私ではなく、技術的な担当者でもありません)と話し合う必要がありました。彼はただ「確認」を求めて電話をかけていましたが、電話で70分以上走らせました。私のアカウントはDNSレコードの編集を許可されているため、この確認は完全に不要であるように見えました。
それはかなり苛立たしい経験でした。できるだけ早くネットワークソリューションから移行する予定です。必要なダウンタイムは過去に私たちを思いとどまらせましたが、現時点ではそれが正当化されていると私は信じています。
レコードを手動で入力するように説得することはできるかもしれませんが、可能な場合はネームサーバーを切り替えることをお勧めします。
DKIMには_domainkey
( RFC 4871 )という名前のサブドメインが必要です(そして アンダースコアはサブドメインに対して完全に有効です )。
DNSプロバイダーが許可しない場合はどうなりますか?
たとえばSendGridの場合、CNAME s1._domainkey.example.com
をs1.domainkey.u1234567.00000.sendgrid.net
にポイントするように求められるので、TXT経由で記録:
$ Host -t txt s1.domainkey.u1234567.00000.sendgrid.net
s1.domainkey.u1234567.00000.sendgrid.net descriptive text "k=rsa\; t=s\; p=SOMETHING+VERY+LOOOOOOOONG"
次に、コンテンツとしてTXTレコードをサブドメインs1._domainkey
として作成します(たとえば、エスケープ解除\
を忘れないでください):
k=rsa; t=s; p=SOMETHING+VERY+LOOOOOOOONG