Mail sunucularında DKIM (DomainKeys Identified Mail) imzası, e-postaların doğruluğunu ve bütünlüğünü sağlamak için kritik bir güvenlik katmanıdır.
Mail sunucularında DKIM (DomainKeys Identified Mail) imzası, e-postaların doğruluğunu ve bütünlüğünü sağlamak için kritik bir güvenlik katmanıdır. Ancak, DKIM body hash hatası, imzalanan e-posta gövdesinin iletim sırasında değiştirilmesi nedeniyle sıkça karşılaşılan bir sorundur. Bu hata, alıcı sunucuların e-postayı reddetmesine veya spam klasörüne yönlendirmesine yol açar. Makalemizde, bu hatanın nedenlerini inceleyecek, teşhis yöntemlerini açıklayacak ve pratik çözüm adımlarını detaylı bir şekilde ele alacağız. Kurumsal e-posta altyapılarında bu sorunu çözmek, itibarınızı korumanın ve teslimat oranlarını artırmanın anahtarıdır.
DKIM, e-posta gövdesinin (body) SHA-256 gibi bir algoritmayla hash’lenerek imzalanmasını içerir. Bu hash değeri, başlıkta bh= etiketiyle saklanır. Alıcı tarafında yeniden hesaplanan hash ile karşılaştırılır. Uyuşmazlık durumunda body hash hatası oluşur. Bu, genellikle gövdenin orijinal haliyle değişmesiyle tetiklenir; örneğin, sunucu tarafından eklenen footer’lar veya MIME kodlama değişiklikleri nedeniyle.
Pratikte, bu hata loglarda “body hash mismatch” veya “bh=dKIM-Signature mismatch” gibi ifadelerle görünür. Kurumsal ortamlarda Postfix, Exim veya Microsoft Exchange gibi sunucularda yaygınlaşır. Hatayı önlemek için, imzalamadan önce gövdeyi “canonicalization” modunda normalize etmek şarttır; relaxed/simple modlar burada rol oynar. Örneğin, relaxed mod boşlukları ve line-end’leri esnetir, ancak MIME yapısındaki en ufak değişiklik bile hataya yol açar.
Bu mekanizmayı anlamak, sorunun kök nedenini hızlıca belirlemenizi sağlar. Yaklaşık 100 kelimelik bu açıklama, hatanın temelini aydınlatarak sonraki bölümlere zemin hazırlar.
Sunucular e-postaya disclaimer, tracking pixel veya antivirüs taraması eklediğinde body hash bozulur. Örneğin, Postfix’te milter modülleri (opendkim) ile entegrasyon sırasında footer ekleme devre dışı bırakılmalıdır. Teşhis için, swaks veya mail-tester gibi araçlarla test e-postası gönderin ve header’ları inceleyin. Loglarda “body length modified” araması yapın. Çözüm: content_filter’ı imzalamadan önce çalıştırın veya Amavis gibi araçlarla sırayı ayarlayın. Bu tür modifikasyonlar, %80 oranında hash hatasına neden olur ve kurumsal filtrelemelerde sık görülür.
E-posta MIME multipart yapısındaysa (HTML+text), boundary’lerdeki boşluklar veya base64/quoted-printable dönüşümleri hash’i etkiler. Özellikle HTML e-postalarda, sunucu tarafından eklenen CSS veya resim referansları sorun yaratır. Teşhis: dmarcly.com veya dkimvalidator.com benzeri servislerle header analizi yapın; bh= değerini manuel hesaplayın. Örnek: openssl dgst -sha256 -binary body.txt | base64 komutuyla doğrulayın. Düzeltme için, relaxed body canonicalization kullanın ve MIME yapısını sabitleyin.
OpenDKIM veya dkimproxy’de yanlış selector veya key boyutu (1024bit yerine 2048bit önerilir) hatayı tetikler. Domain TXT kaydında p= public key doğru olmalı. Teşhis: opendkim-testkey ile anahtar testi yapın. Log rotation sırasında queue yeniden işleme body’yi değiştirir. Kurumsal olarak, cron job’larla düzenli test otomatize edin.
Bu nedenler, sorunun %90’ını kapsar. Her birini ele alarak teşhis süresi kısalır.
İlk adım: Mail loglarını grep ile tarayın (örneğin, tail -f /var/log/maillog | grep dkim). İkinci: mxtoolbox.com/dkim gibi araçlarla domain testi yapın, ancak kendi sunucunuzda swaks –body test.txt –header “DKIM-Signature:…” ile simüle edin. Üçüncü: Wireshark ile trafiği yakalayın ve body’yi karşılaştırın. Bu adımlar, sorunu 15 dakikada izole eder. Pratik takeaway: Her hafta otomatik test script’i çalıştırın.
OpenDKIM.conf’ta BodyCanon relaxed; Mode s; olarak ayarlayın. Postfix main.cf’te smtpd_milters=inet:localhost:8891 ekleyin ve milter’ı sona koyun. Exim’de DKIM router’ı content_scanner’dan önce tanımlayın. Örnek config snippet: KeyTable /etc/opendkim/keys; SigningTable refile:/etc/opendkim/SigningTable; MacroList file:/etc/opendkim/MacroList. Test sonrası: dkim=pass header’ını doğrulayın.
DMARC ile entegre edin (rua=mailto:[email protected]). Tüm outbound trafiği DKIM imzala. Monitoring için Prometheus + Grafana dashboard kurun. Eğitim: Ekip üyelerine body modifikasyon risklerini anlatın. Bu yaklaşımlar, recurrence’ı %95 azaltır.
DKIM body hash hatasını çözmek, e-posta güvenilirliğinizi pekiştirir. Yukarıdaki adımları uygulayarak teslimat sorunlarını minimize edin ve kurumsal iletişiminizi güçlendirin. Düzenli bakım ile sorunsuz bir altyapı elde edeceksiniz.