Модул 4 · 4.4
DKIM: цифровият подпис под Вашата поща
Модул 4: Записи за имейл · Време за четене: 8 минути
Цел на урока: След този урок ще можете да обясните как работи DKIM, да намерите и проверите DKIM запис, и да поставите правилно DKIM запис от външна услуга (като TXT или като CNAME).
Основни понятия: DKIM, цифров подпис, частен ключ и публичен ключ, селектор (selector), _domainkey, d= и s=, v=DKIM1; k=rsa; p=, DKIM чрез CNAME, ротация на ключове
Печат върху всяко писмо
SPF (урок 4.3) проверява от кой сървър идва писмото. DKIM (DomainKeys Identified Mail, RFC 6376) работи по различен начин: той поставя цифров подпис върху самото писмо.
Ето как работи това:
- Изпращащият пощенски сървър разполага с таен частен ключ. С него той създава за всяко писмо подпис върху най-важните части: подателя, темата, датата и съдържанието.
- Този подпис се включва в заглавен ред на писмото:
DKIM-Signature. - Съответният публичен ключ се намира в DNS на домейна, в TXT запис.
- Получателят извлича този публичен ключ и проверява подписа. Ако той съвпада, получателят знае две неща: писмото наистина е подписано от някого, който управлява DNS на този домейн, и писмото не е променяно по пътя.
Хубавото е, че DKIM продължава да работи, дори когато писмо бъде препратено, стига съдържанието да не бъде променено. Именно с това SPF има затруднения.
Къде се намира ключът? Селекторът
Един домейн може да има няколко DKIM ключа: един от собствения Ви пощенски сървър, един от Microsoft 365, един от доставчика на бюлетина Ви. За да ги различава, всеки ключ има име, наречено селектор.
В подписа има две важни полета:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mail2026; ...d=example.com: домейнът, който подписва.s=mail2026: селекторът.
Получателят търси ключа по следното име:
<selector>._domainkey.<домейн>
mail2026._domainkey.example.comЧастта _domainkey е фиксирана. Записът изглежда например така:
mail2026._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOC..."| Част | Значение |
|---|---|
v=DKIM1 | Това е DKIM ключ. |
k=rsa | Видът на ключа. RSA е обичайният избор; съществува и ed25519 (RFC 8463). |
p=... | Самият публичен ключ, дълга поредица от букви и цифри. Ако p= е празно, ключът е отменен. |
RSA ключ от 2048 бита е обичайният избор; 1024 бита е минимумът (RFC 8301). Такъв ключ е по-дълъг от 255 знака, затова записът се състои от няколко текстови части (урок 4.2). Повечето контролни панели се грижат за това автоматично.
Вашият собствен DKIM и този на услугите
Вашият хостинг пакет или пощенски сървър. На много сървъри DKIM е включен по подразбиране и панелът сам поставя записа в DNS. Тогава ще видите TXT запис с име като x._domainkey или default._domainkey.
Ако DNS на домейна Ви се намира при друга страна (например Cloudflare или Вашия регистратор), пощенският Ви сървър не може сам да постави записа там. Тогава копирате името и пълната стойност от Вашия хостинг панел и създавате при Вашия DNS доставчик TXT запис с точно това име и стойност. Хората често забравят това при смяна на DNS сървъри: тогава пощата изведнъж по-често попада в спам.
Външни услуги. Microsoft 365, Google Workspace и доставчиците на бюлетини подписват със собствен ключ. От тях получавате един или повече записа:
- Като TXT, например Google Workspace: име
google._domainkey, стойностv=DKIM1; k=rsa; p=последвано от дългия ключ. - Като CNAME, например Microsoft 365 (
selector1._domainkeyиselector2._domainkey) или Mailchimp (k2._domainkeyиk3._domainkey). CNAME сочи към ключ, който услугата управлява сама. Предимство: услугата може да замени ключа си, без Вие да трябва да правите каквото и да било.
Всички тези записи имат собствен селектор и затова не си пречат един на друг. Не премахвайте DKIM записа на собствения си пощенски сървър, когато добавяте услуга.
Защо два селектора?
Услуги като Microsoft 365 изискват два CNAME записа, selector1 и selector2. Те подписват с един ключ наведнъж и периодично преминават към другия (ротация на ключове). Ако зададете само selector1, DKIM работи до първата смяна, а след това внезапно спира да работи. Затова винаги поставяйте всички записи, посочени от услугата.
Чести грешки
- Двойно име на домейн. Въвеждате
k2._domainkey.example.comв панел, който сам добавя домейна отзад. Резултат:k2._domainkey.example.com.example.com. Въведете самоk2._domainkey. - TXT вместо CNAME (или обратно). Използвайте точно типа, посочен от услугата.
- Липсваща точка в края на целта на CNAME. В панели, които изискват това:
dkim2.mcsv.net.с точка. - Отрязан ключ. При копирането липсва последната част от
p=. Сравнете началото и края с оригинала. - DKIM включен в панела на услугата, но записите не са поставени, или обратно. При повечето услуги първо трябва да поставите записите и чак след това да включите DKIM в техния панел за управление.
Проверка дали DKIM работи
Изпратете писмо до адрес при голям доставчик (например Gmail) и прегледайте оригинала (Показване на оригинала или Показване на източника). Потърсете dkim=pass и вижте кой домейн е посочен там. Или изпратете писмо до услуга за тестване като mail-tester.com. Можете да проверите записа и сами с DNS инструмент: заявете TXT записа на <selector>._domainkey.<домейн>.
На практика: така изглежда в панел
В този пример използваме DirectAdmin. В DNS Administration има TXT запис с име x._domainkey; стойността започва с v=DKIM1; k=rsa; p=. В E-mail Manager, E-mail Accounts има бутон за включване или изключване на DKIM. CNAME от услуга се създава чрез Add Record, тип CNAME, име k2._domainkey, стойност с точка в края.
В други панели DKIM понякога се намира под „Автентикация на имейл“ или „Защита на имейл“, но записът в DNS е навсякъде еднакъв.
Обобщение
- DKIM поставя цифров подпис върху всяко писмо; публичният ключ се намира в DNS.
- Ключът се намира на
<selector>._domainkey.<домейн>. Селекторът е посочен в подписа (s=), домейнът също (d=). - Всяка услуга има собствен селектор; записите на различни услуги съществуват заедно, без да си пречат.
- Услугите често използват CNAME записи и няколко селектора. Поставете ги всички, с точно посочения тип.
- Ако DNS Ви се намира при друга страна, трябва сами да поставите там DKIM ключа на собствения си пощенски сървър.
Тест
Задача
Задача Z4.4: Намиране на DKIM. Отворете писмо, получено от фирма или организация, и прегледайте оригинала. В заглавния ред DKIM-Signature намерете домейна (d=) и селектора (s=). Въведете и двете. Проверката търси съответния ключ.
Задача O4.4: Самостоятелна настройка във Вашата тренировъчна зона. В тренировъчната зона използвате фалшива услуга; при истинския си домейн ще вземете истинския ключ или CNAME от пощенския си сървър или услуга. При задачата ще получите тренировъчен ключ (стойността след p=). Този ключ е дълъг: поставете го изцяло, без да пропускате нищо. Създайте в тренировъчната си зона :<code>.dnspractice.eu
- TXT запис на
cursus._domainkeyсъс стойностv=DKIM1; k=rsa; p=<тренировъчен ключ>; - CNAME запис на
k2._domainkey, който сочи къмdkim.newsletter-demo.dnspractice.eu.(с точка в края, ако панелът Ви изисква това).
Задача O4.4
Тази задача изпълнявате във Вашата собствена тренировъчна зона: истинска DNS зона на DNS сървърите на WebOké, само за Вас. Впишете се с Вашия имейл адрес. Ще получите линк за вход по имейл и след това ще се върнете на този урок. Използваме Вашия адрес само за курса.
Допълнително четене
Стъпките в тези статии важат за панелите на WebOké; в други панели процесът е подобен.
- Ръководство за DirectAdmin 5.8: DKIM включване и проверка
- Настройване на DKIM, когато DNS е на външен сървър
- Ръководство за DirectAdmin 5.4: CNAME записи и точката в края
- Ръководство на WebOké 6.7: Картата Настройване на имейл (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (дължина на ключа), RFC 8463 (Ed25519)
