DKIM nedir?
DKIM (DomainKeys Identified Mail), gönderen sunucunun giden iletileri dijital olarak imzalamasını sağlayan bir e-posta kimlik doğrulama yöntemidir. Alıcı sunucu, DNS'te yayımlanan genel anahtarı kullanarak bu imzayı doğrulayabilir; böylece e-postanın aktarım sırasında değiştirilmediği ve gerçekten iddia edilen alan adından gönderildiği teyit edilir.
DKIM nasıl çalışır?
1. Anahtar oluşturma: Alan adı sahibi bir genel/özel anahtar çifti oluşturur
2. DNS'te yayımlama: Genel anahtar TXT kaydı olarak yayımlanır
3. İleti imzalama: Giden e-postalar özel anahtarla imzalanır
4. İmza doğrulama: Alıcı sunucu genel anahtarı alır ve imzayı doğrular
İmzalama süreci
Bir e-posta gönderildiğinde:
1. Mail server calculates a hash of message headers and body
2. Hash is encrypted with the private key (creating the signature)
3. Signature is added as a DKIM-Signature header
4. Email is transmitted
Doğrulama süreci
Bir e-posta alındığında:
1. Server extracts the DKIM-Signature header
2. Finds selector and domain (s=selector; d=domain.com)
3. Queries DNS for selector._domainkey.domain.com TXT record
4. Uses public key to decrypt the signature
5. Calculates its own hash of the message
6. Compares: match = pass, mismatch = fail
DKIM kayıt biçimi
DKIM kayıtları belirli bir alt alan adındaki TXT kayıtlarıdır:
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
Kayıt bileşenleri
| Etiket | Açıklama | Örnek |
|---|---|---|
| v | Sürüm | v=DKIM1 |
| k | Anahtar türü | k=rsa |
| p | Genel anahtar (base64) | p=MIGfMA0GCSqG... |
| t | Bayraklar (isteğe bağlı) | t=y (test modu) |
| h | Özet algoritmaları | h=sha256 |
Seçiciler
Seçiciler, bir alan adı için birden çok DKIM anahtarına izin verir:
google._domainkey.example.com # Google Workspace
s1._domainkey.example.com # Sendgrid
mailchimp._domainkey.example.com # Mailchimp
Her e-posta hizmeti kendi seçicisini ve anahtarını sağlar.
DKIM imza başlığı
DKIM imzası şu şekilde görünür:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79...
Temel alanlar:
- d=: İmzalama alan adı
- s=: DNS kaydını bulmak için kullanılan seçici
- h=: İmzaya dahil edilen başlıklar
- b=: Gerçek imza
- bh=: Gövde özeti
DKIM kurulumu
Google Workspace için
1. Yönetici Konsolu → Uygulamalar → Gmail → E-postayı doğrula bölümüne gidin
2. DKIM anahtarı oluşturun (2048 bit önerilir)
3. Google'ın sağladığı TXT kaydını ekleyin
4. DKIM imzalamayı etkinleştirin
Üçüncü taraf hizmetler için
Çoğu e-posta hizmeti (SendGrid, Mailchimp vb.) şunlardan birini sağlar:
1. Eklenmesi gereken bir CNAME kaydı (yönetilen anahtarları için)
2. Veya genel anahtarı içeren bir TXT kaydı
Örnek (SendGrid):
s1._domainkey.example.com CNAME s1.domainkey.sendgrid.net
DKIM'i doğrulama
Test e-postasını, başlıkları gösteren bir hizmete gönderin (Gmail kimlik doğrulama sonuçlarını gösterir). Komut satırını kullanarak:dig google._domainkey.example.com TXT
DomScan kullanarak:
curl "https://domscan.net/v1/health?domain=example.com"
# Reports DKIM status based on common selectors
DKIM için en iyi uygulamalar
2048 bit anahtar kullanın
Eski 1024 bit anahtarlar giderek daha savunmasız hale geliyor. Çoğu sağlayıcı artık varsayılan olarak 2048 bit kullanır.
Anahtarları düzenli olarak yenileyin
DKIM anahtarlarını yılda bir veya güvenlik olaylarından sonra yenileyin. Geçiş yapmadan önce yeni anahtarı yeni bir seçiciyle yayımlayın.
Önemli başlıkları imzalayın
From, To, Subject, Date ve Message-ID başlıklarının imzalara dahil edildiğinden emin olun.
İmzalanmış iletileri değiştirmeyin
İçeriği değiştiren posta listeleri veya yönlendirme hizmetleri DKIM'i bozar. Yönlendirilen postalar için ARC (Authenticated Received Chain) kullanın.
DKIM'in sınırlamaları
DKIM tek başına sahteciliği önlemez; yalnızca iletinin değiştirilmediğini kanıtlar. Bir alan adında geçerli DKIM bulunurken saldırganlar imzasız sahte e-postalar gönderebilir. DMARC, imzasız iletiler için ne yapılacağını belirleyerek bu sorunu ele alır.