DKIM, gönderdiğiniz her iletinin başlığına alan adınızın özel anahtarıyla atılmış bir imza ekler. Alıcı sunucu bu imzayı DNS'te yayımladığınız genel anahtarla doğrular. Doğrulama geçerse iki şey kanıtlanmış olur: ileti gerçekten sizin yetkilendirdiğiniz bir sunucudan çıktı ve yolda değiştirilmedi. SPF'nin aksine DKIM, iletinin başka bir sunucu üzerinden aktarılmasından etkilenmez; bu yüzden DMARC'ın en güvenilir dayanağıdır.
Kayıt nerede durur: seçici ve _domainkey
Bir DKIM kaydı alan adının köküne değil, şu biçimde bir alt ada yazılır:
seçici._domainkey.alanadiniz.com TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
Seçici (selector), aynı alan adında birden çok anahtar tutabilmenizi sağlayan etikettir. Her gönderen servis kendi seçicisini kullanır: e-posta sunucunuz bir, bülten aracınız başka bir seçiciyle imzalar. Hangi seçicinin kullanıldığını görmek için gelen bir iletinin başlığında DKIM-Signature satırına bakın; d= alan adını, s= seçiciyi verir. Kaydı sorgulamak için seçiciyi bilmeniz şarttır; DNS'te "bu alan adının tüm DKIM kayıtlarını listele" diye bir sorgu yoktur.
Kayıttaki üç alan şunlardır: v=DKIM1 sürüm, k=rsa anahtar türü, p= ise genel anahtarın kendisidir.
Anahtarı üretmek ve yayımlamak
Barındırma panelleri ve e-posta servisleri anahtarı sizin yerinize üretir ve yayımlanacak kaydı gösterir; çoğu durumda yapmanız gereken, gösterilen kaydı DNS'inize eklemektir. Kendi posta sunucunuzu çalıştırıyorsanız anahtarı kendiniz üretirsiniz. Ubuntu'da opendkim-tools paketiyle bunu bir deneme sunucusunda yaptık:
opendkim-genkey -b 2048 -d ornek.com -s mail2026
ls
mail2026.private mail2026.txt
mail2026.private imzalamada kullanılan özel anahtardır ve sunucudan hiç çıkmamalıdır. mail2026.txt ise DNS'e yazılacak kayıttır. Dosyanın içeriği şöyle başlar:
mail2026._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApRuW/H/yctl..." ... )
255 karakter sınırı
DNS'te tek bir TXT metin parçası en fazla 255 karakter olabilir. Ürettiğimiz 2048 bitlik anahtarla kaydın tamamı 420 karakter tuttu; yani en az iki parçaya bölünmesi gerekir. Yukarıdaki dosya bunu tırnaklı parçalarla zaten yapıyor. Alıcı sunucular parçaları aradaki boşluk olmadan birleştirir. Panelinize kaydı tek satır olarak yapıştırdığınızda panel bölmeyi kendisi yapabilir, kaydı kesebilir ya da hata verebilir; hangisini yaptığını öğrenmenin tek yolu eklemeden sonra sorgulamaktır.
1024 bitlik anahtarlar tek parçaya sığar ve bu yüzden hâlâ önerilir görünür; ama artık zayıf kabul edilirler. 2048 bit kullanın ve bölme işini doğru yapın.
Sorgulamak: kayıt yayında mı, doğru mu?
dig +short TXT mail2026._domainkey.ornek.com
Cevap birden fazla tırnaklı parça olarak gelebilir; bu normaldir. Büyük sağlayıcıların kayıtlarına bakmak, karşılaşabileceğiniz durumları gösterir. 17 Ekim 2026'daki sorgularımızda:
- Var olmayan bir seçici sorulduğunda cevap
status: NXDOMAINoldu. Seçiciyi yanlış yazdıysanız ya da kayıt hiç eklenmediyse göreceğiniz budur. - Gmail'in
20230601seçicisi"v=DKIM1; k=rsa; p="döndürdü. Boşp=bir hata değil, anahtarın bilerek iptal edildiğini gösterir: bu seçiciyle imzalanmış iletiler artık doğrulanmaz. - Microsoft'un
selector1kaydı bir TXT değil, başka bir ada yönlenen CNAME çıktı. Microsoft 365 gibi servisler anahtarı kendi altyapılarında tutar ve siz alan adınıza yalnız CNAME eklersiniz; böylece anahtarı onlar sizin müdahaleniz olmadan döndürebilir.
Kaydı komut satırı olmadan denetlemek için SPF, DKIM ve DMARC kontrolü aracına alan adınızı ve seçiciyi girebilirsiniz.
"dkim=fail" ve "permerror": sebebe göre çözüm
Alıcının verdiği sonuç iletinin başlığındaki Authentication-Results satırında yazar. Üç olumsuz sonuç farklı şeyler söyler:
dkim=none— ileti hiç imzalanmamış. Gönderen sunucu ya da servis DKIM imzalamak üzere yapılandırılmamış.dkim=permerror— kayıt bulundu ama kullanılamadı. En sık sebepler: kayıt bölünürken kesilmiş ya da parçaların arasına fazladan karakter girmiş,p=değeri bozuk, kayıtta tırnak ve noktalı virgül karışmış, ya da seçici yanlış alt ada yazılmış. Kaydı sorgulayıp parçaları birleştirdiğinizde anahtarın panelin ürettiği değerle karakteri karakterine aynı olup olmadığına bakın.dkim=fail— anahtar bulundu, imza tutmadı. Kayıt doğru olabilir; ileti imzalandıktan sonra değişmiştir. Altbilgi ekleyen posta listeleri, ileti gövdesini yeniden yazan güvenlik ağ geçitleri ve konu satırına etiket ekleyen sistemler bunun klasik sebepleridir. Bir diğer sebep, sunucuda yeni anahtar yerine eski özel anahtarın kalmasıdır.
Hizalamayı unutmayın: DKIM imzası geçse bile DMARC için imzadaki d= alan adının From adresindeki alan adıyla aynı (ya da onun üst alan adı) olması gerekir. Bülten aracınız kendi alan adıyla imzalıyorsa DKIM "pass" görünür ama DMARC hizalaması geçmez; aracın panelinde "kendi alan adınla imzala" ayarını açın. Ayrıntılar DMARC kaydı yazısında.
İmzayı okumak: DKIM-Signature başlığındaki alanlar
Gönderdiğiniz bir iletiyi kendi posta kutunuza yollayıp başlıklarını açtığınızda (Gmail'de "Orijinali göster") şuna benzer bir satır görürsünüz:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ornek.com; s=mail2026;
h=from:to:subject:date:message-id; bh=2jUSOH9N...; b=dzdVyOfAKCdL...
Teşhiste işe yarayan alanlar şunlardır:
d=imzalayan alan adı. DMARC hizalaması bu değere bakar; bülten aracınızın alan adını görüyorsanız imza sizin adınıza atılmıyordur.s=seçici. Alıcı anahtarısveddeğerlerini birleştirerek bulur; kaydı sorgularken kullanacağınız ad budur.h=imzaya dahil edilen başlıklar. Burada sayılan bir başlık yolda değişirse imza tutmaz. Konu satırına etiket ekleyen sistemler bu yüzdendkim=failüretir.bh=ileti gövdesinin özeti. Gövdeye eklenen tek bir altbilgi satırı bu değeri bozar.c=kanonikleştirme.relaxed, boşluk ve satır sonu farklarını tolere eder;simplehiçbir değişikliğe izin vermez. Yolda sık değiştirilen iletilerderelaxed/relaxeddaha dayanıklıdır.
Bir iletide birden çok DKIM-Signature satırı bulunabilir: biri sizin alan adınızla, biri gönderim servisinin kendi alan adıyla. Alıcı tarafındaki Authentication-Results satırı her imzanın sonucunu ayrı yazar. DMARC için bunlardan en az birinin geçmesi ve From adresinizle hizalı olması yeterlidir; bu yüzden tüm satırlara değil, kendi alan adınızla atılan imzanın sonucuna bakın.
Birden çok gönderici, birden çok seçici
Kurumsal e-posta, bülten aracı, fatura sistemi ve destek yazılımı aynı alan adıyla gönderiyorsa her birinin kendi seçicisi olmalıdır. Aynı anahtarı birden çok servise vermek, birinde anahtar sızdığında hepsini aynı anda değiştirmek zorunda kalmak demektir. Hangi servisin hangi seçiciyi kullandığını bir listede tutun; bir servisi bıraktığınızda onun kaydını da silin.
Ne sıklıkla döndürmeli?
Tek bir doğru aralık yoktur, ama üç durum döndürmeyi zorunlu kılar: özel anahtarın bulunduğu sunucuya yetkisiz erişim şüphesi, anahtara erişimi olan bir çalışanın ya da hizmet sağlayıcının ayrılması ve hâlâ 1024 bitlik anahtar kullanıyor olmak. Bunların dışında yılda bir döndürmek makul bir alışkanlıktır; seçici adına yılı yazmak (mail2026, mail2027) hangi anahtarın ne zaman devreye girdiğini kayıtlara bakmadan gösterir. Döndürmeyi takvime bağlamanın asıl faydası, işlemin acil bir gecede değil, sakin bir günde ve adımları bilinen bir prova olarak yapılmasıdır.
Anahtar döndürme
Özel anahtar sızarsa ya da uzun yıllar aynı anahtar kullanıldıysa yenisine geçmek gerekir. Seçici yapısı bunu kesintisiz yapmayı sağlar:
- Yeni bir seçiciyle (ör.
mail2027) yeni anahtar çifti üretin ve genel anahtarı DNS'e ekleyin. Eski kayıt yerinde kalsın. - Yeni kaydın yayıldığını sorgulayarak doğrulayın.
- Posta sunucusunu yeni seçici ve özel anahtarla imzalamaya geçirin.
- Yolda olan ve sonradan doğrulanacak iletiler için eski kaydı birkaç gün bırakın; ardından
p=değerini boşaltarak iptal edin ve en sonunda silin.
SPF ve DMARC ile birlikte nasıl çalıştığını görmek için e-posta teslimatı rehberine bakın. Üç kayıt birlikte doğru kurulduğunda iletilerinizin istenmeyen klasörüne düşmesinin en büyük teknik sebebi ortadan kalkar.
Sık sorulan sorular
DKIM selector (seçici) nedir?
Bir alan adında birden fazla DKIM anahtarı bulunabilir; seçici, alıcının hangisini kullanacağını söyleyen etikettir. İletinin DKIM-Signature başlığındaki s= değeridir ve anahtar seçici._domainkey.alanadiniz.com adında yayımlanır.
DKIM kaydım doğru ama dkim=fail alıyorum, neden?
Kayıt doğru olsa bile ileti imzalandıktan sonra değiştirilmişse imza tutmaz. En sık sebepler, imza sonrası altbilgi ekleyen bir posta listesi ya da güvenlik ağ geçidi, iletiyi yeniden kodlayan bir aktarma sunucusu ve sunucuda kalan eski bir özel anahtardır.
DKIM anahtarı 1024 bit mi 2048 bit mi olmalı?
2048 bit önerilir; 1024 bit artık zayıf kabul edilir. 2048 bitlik anahtar TXT kaydına sığmak için birden çok metin parçasına bölünür; panelin bunu kendisinin yapıp yapmadığını kaydı ekledikten sonra sorgulayarak doğrulayın.
Boş p= değeri olan DKIM kaydı ne anlama gelir?
O seçicideki anahtarın bilerek iptal edildiğini gösterir. Bu anahtarla imzalanmış iletiler artık doğrulanmaz. Anahtar döndürürken eski seçiciyi bir süre bu biçimde bırakmak yaygın bir uygulamadır.
Bir iletide birden çok DKIM imzası olabilir mi?
Evet. Kendi alan adınızla atılan imzanın yanında gönderim servisinin kendi alan adıyla attığı ikinci bir imza bulunabilir. Alıcı her imzayı ayrı doğrular; DMARC açısından From adresinizle hizalı imzanın geçmesi yeterlidir.
DKIM kaydı eklemek e-postaların gelen kutusuna düşmesini garanti eder mi?
Hayır. DKIM iletinin gerçekten sizden geldiğini ve değiştirilmediğini kanıtlar; içeriğin, gönderim hacminin, alıcıların şikâyet oranının ve IP adresinin itibarının yerini tutmaz. SPF, DMARC ve geçerli bir PTR kaydıyla birlikte teslimatın teknik zeminini oluşturur.
- #dkim
- #e-posta
- #dns
- #teslim edilebilirlik
DKIM anahtarıyla uğraşmadan kurumsal e-posta mı istiyorsunuz? Hosting paketlerimizde e-posta hesapları panelden açılır; SPF ve DKIM kayıtları panel tarafından yönetilir.
Hosting paketlerine bakın