DKIM レコードは SPF レコードに比べる指定する内容は簡単ですが、バージョンの記述など間違えないように気をつけて記述するようにこころがけましょう。DKIM レコード公開後に必ず、試験的にメールを送信して認証成功するかどうかを確認することが必要です。
k100430._domainkey.example.co.jp IN TXT "v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwDc+AabcditzcdHYwOooW7HmqsPFzZUUb1nNqMj7ozyv/Q0WwwGJ+bdS4a9tO9roiT+VyyyMfIBoTdMNEWoXUMHafPgkOFPl5YO52pZM40bdXY/qtfT2nglJqS53zFFqB36qHoN9lgPRwP/e+ScCPlwHkcfIwD58ISU/lC5Bx+wIDAQAB";
k100429._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwDc+AabcditzcdHYwOooW7HmqsPFzZUUb1nNqMj7ozyv/Q0WwwGJ+bdS4a9tO9roiT+VyyyMfIBoTdMNEWoXUMHafPgkOFPl5YO52pZM40bdXY/qtfT2nglJqS53zFFqB36qHoN9lgPRwP/e+ScCPlwHkcfIwD58ISU/lC5Bx+wIDAQAB";
文法的に間違った DKIM レコードを公開すると、受信側では PermError と扱われ、せっかく公開しても正しく扱われないことになってしまうばかりでなく、受信側で認証を Pass したメール以外受信しないようなサービスを提供していた場合、メールが届かなくなる可能性があります。
ここでは以下に間違えやすい例を示しますので、これらを参考に誤った記述が少なくなることを期待します。
直接該当ドメインの TXT レコードとして公開しています。DKIM の場合、SPF とは異なり"セレクタ ._domainkey" サブドメインに公開する必要があります。
example.co.jp IN TXT "v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwDc+AabcditzcdHYwOooW7HmqsPFzZUUb1nNqMj7ozyv/Q0WwwGJ+bdS4a9tO9roiT+VyyyMfIBoTdMNEWoXUMHafPgkOFPl5YO52pZM40bdXY/qtfT2nglJ
セレクタを使わないで、サブドメインの _domainkey 以下に直接キーのレコードを記述しています。正しくは、"セレクタ ._domainkey" サブドメインに公開する必要があります。
_domainkey.example.co.jp IN TXT "v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwDc+AabcditzcdHYwOooW7HmqsPFzZUUb1nNqMj7ozyv/Q0WwwGJ+bdS4a9tO9roiT+VyyyMfIBoTdMNEWoXUMHafPgkOFPl5YO52pZM40bdXY/qtfT2nglJqS53zFFqB36qHoN9lgPRwP/e+ScCPlwHkcfIwD58ISU/lC5Bx+wIDAQAB";
公開鍵方式の指定をハッシュの方式と間違えています (k=sha1 ではなく k=rsa)。
k100429._domainkey.example.com. IN TXT "v=DKIM1; k=sha1; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwDc+AabcditzcdHYwOooW7HmqsPFzZUUb1nNqMj7ozyv/Q0WwwGJ+bdS4a9tO9roiT+VyyyMfIBoTdMNEWoXUMHafPgkOFPl5YO52pZM40bdXY/qtfT2nglJqS53zFFqB36qHoN9lgPRwP/e+ScCPlwHkcfIwD58ISU/lC5Bx+wIDAQAB";
DKIM のバージョンを間違えています (v=DKIM1.0 ではなく v=DKIM1)。
k100429._domainkey.example.com. IN TXT "v=DKIM1.0; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwDc+AabcditzcdHYwOooW7HmqsPFzZUUb1nNqMj7ozyv/Q0WwwGJ+bdS4a9tO9roiT+VyyyMfIBoTdMNEWoXUMHafPgkOFPl5YO52pZM40bdXY/qtfT2nglJqS53zFFqB36qHoN9lgPRwP/e+ScCPlwHkcfIwD58ISU/lC5Bx+wIDAQAB";
タグの順番を間違えています。v= タグがレコードの先頭に必要です。
k100429._domainkey.example.com. IN TXT "k=rsa; v=DKIM1; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwDc+AabcditzcdHYwOooW7HmqsPFzZUUb1nNqMj7ozyv/Q0WwwGJ+bdS4a9tO9roiT+VyyyMfIBoTdMNEWoXUMHafPgkOFPl5YO52pZM40bdXY/qtfT2nglJqS53zFFqB36qHoN9lgPRwP/e+ScCPlwHkcfIwD58ISU/lC5Bx+wIDAQAB";
現行の送信ドメイン認証技術は、認証情報及びポリシーの公開のために DNS 上に TXT レコードを公開する手法が一般的であるため、これを調査することにより、任意のドメインが送信ドメイン認証技術に対応しているか、ある程度調べることもできます。
Appendix1.3 と同様に、以下では、例として、UNIX host コマンドの TXT レコードオプションを利用していますが、同様のクエリが発行できれば問題ありません。このような操作を行うことにより、有効なレスポンスがあるかどうかでレコードの有無を判断できます。
DKIM / DomainKeys レコード
$ host -t txt selector._domainkey.example.com
selector._domainkey.example.com descriptive text "k=rsa\; t=y\; p=(中略)\; n=A 768 bit key\;"
DKIM ADSP レコード
$ host -t txt _adsp._domainkey.example.com
_adsp._domainkey.example.com descriptive text "dkim=all"
ただし、DKIM の場合は、ドメインに加えて前述のセレクタが分からなければ確認することは困難です。
また、そもそも、これらの DNS レコードは、送信者が試験として一時的に設置している可能性もあり、DNS レコードが存在しているからといって送信ドメイン認証技術に対応しているかは断定できません。したがって、以上のような確認方法は、あくまで補助的な確認方法となることに注意して下さい。