Як DKIM знаходить ключ
Підпис DKIM у повідомленні містить домен (d=) і селектор (s=). Одержувач об’єднує їх у selector._domainkey.domain, зчитує відповідний запис TXT і використовує відкритий ключ із його тегу p= для перевірки підпису. Один домен може публікувати будь-яку кількість селекторів, тому кожен сервіс надсилання може мати власний ключ, а ключі можна змінювати без простою.
Для перевірки потрібен селектор, оскільки DNS не дає змоги отримати список селекторів домену. Сканувати нічого, селектор береться з підпису реального повідомлення.
Через що ключ стає слабким або непрацездатним
RFC 8301 вимагає, щоб RSA-ключі мали щонайменше 1024 біти, і рекомендує 2048 бітів. Засіб перевірки може ігнорувати коротший ключ, і наш засіб так і робить, тому 512-бітний ключ вважається повною відсутністю підпису. Ключі Ed25519 (RFC 8463) короткі за своєю конструкцією та надійні, але їх поки що перевіряють не всі одержувачі, тому зазвичай їх публікують разом із RSA-ключем, а не замість нього.
Засіб перевірки повністю декодує ключ, оскільки запис, неправильно розділений між TXT-рядками, або base64, який не декодується, створюють ключ, непридатний для будь-якого одержувача. Порожнє значення p= означає, що ключ було навмисно відкликано. t=y позначає домен, який усе ще тестується, а RFC 6376 §3.6.1 вимагає від засобів перевірки обробляти його пошту так само, як пошту без підпису.