DKIMがキーを見つける仕組み
メール内のDKIM署名には、ドメイン(d=)とセレクター(s=)が指定されています。受信側はこれらをselector._domainkey.domainの形式で組み合わせ、その場所にあるTXTレコードを読み取り、p=タグの公開鍵を使用して署名を検証します。1つのドメインで任意の数のセレクターを公開できるため、送信サービスごとに個別のキーを使用でき、停止時間なしでキーをローテーションできます。
DNSにはドメインが持つセレクターを一覧表示する方法がないため、チェックにはセレクターが必要です。スキャンできる対象はなく、セレクターは実際のメールの署名から取得します。
DKIMキーが脆弱または無効になる原因
RFC 8301では、RSAキーは1024ビット以上でなければならず、2048ビットが推奨されています。検証側はそれより短いキーを無視でき、このチェッカーも無視するため、512ビットのキーは署名がまったくないものとして扱われます。Ed25519キー(RFC 8463)は仕様上短くても強固ですが、まだすべての受信側が検証できるわけではありません。そのため通常は、RSAキーの代わりではなく、RSAキーと併せて公開されます。
このチェッカーはキー全体をデコードします。TXT文字列間でレコードが不適切に分割されている場合や、base64をデコードできない場合、そのキーはどの受信側も使用できないためです。空のp=は、そのキーが意図的に失効されたことを示します。t=yは、ドメインがまだテスト中であることを示します。RFC 6376 §3.6.1では、検証側に対し、そのメールを署名のないメールとまったく同じように扱うよう定めています。