SPF, DKIM ve DMARC Yapılandırması
E-posta gönderim güvenliğini artırmak için SPF kaydı oluşturma, DKIM imzalama, DMARC politikası belirleme, DNS kayıtları yapılandırma ve test araçları rehberi.
İçindekiler
Giriş
E-posta gönderiminde güvenilirlik ve teslim edilebilirlik, doğru DNS yapılandırmasına bağlıdır. SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail) ve DMARC (Domain-based Message Authentication, Reporting & Conformance) protokolleri, e-postalarınızın spam klasörüne düşmesini önler ve domain sahteciliğine (spoofing) karşı koruma sağlar.
Bu rehberde, REXE sunucunuzda e-posta gönderim altyapınızı güvenli hale getirmek için SPF, DKIM ve DMARC kayıtlarını adım adım yapılandıracağız.
SPF (Sender Policy Framework) Nedir?
SPF, domain adınız adına e-posta göndermeye yetkili sunucuları tanımlayan bir DNS kaydıdır. Alıcı mail sunucusu, gelen e-postanın SPF kaydında belirtilen IP adreslerinden gelip gelmediğini kontrol eder.
SPF Kaydı Oluşturma
DNS yönetim panelinizde TXT kaydı olarak ekleyin:
@ IN TXT "v=spf1 ip4:SUNUCU_IP_ADRESI -all"
Birden fazla sunucu kullanıyorsanız:
@ IN TXT "v=spf1 ip4:IP_ADRESI_1 ip4:IP_ADRESI_2 include:_spf.google.com -all"
SPF Mekanizmaları
| Mekanizma | Açıklama |
|---|---|
ip4: | Belirli IPv4 adresi veya CIDR bloğu |
ip6: | Belirli IPv6 adresi veya CIDR bloğu |
include: | Başka bir domain'in SPF kaydını dahil et |
a | Domain'in A kaydındaki IP'ye izin ver |
mx | Domain'in MX kaydındaki sunuculara izin ver |
all | Tüm diğer kaynaklar için politika |
SPF Niteleyicileri
+all → Pass (tümüne izin ver — ÖNERİLMEZ)
~all → SoftFail (izin verilmeyenleri işaretle ama reddetme)
-all → Fail (izin verilmeyenleri reddet — ÖNERİLİR)
?all → Neutral (nötr — kontrol yapma)
SPF kaydında mutlaka -all veya en az ~all kullanın. +all kullanmak domain'inizi spoofing'e açık bırakır.
SPF Kaydını Test Etme
# dig ile SPF kaydını sorgulama
dig TXT ornekdomain.com +short
# nslookup ile sorgulama
nslookup -type=TXT ornekdomain.com
Online araçlar:
DKIM (DomainKeys Identified Mail) Nedir?
DKIM, gönderilen e-postalara dijital imza ekleyerek mesajın iletim sırasında değiştirilmediğini doğrulayan bir protokoldür. Gönderen sunucu özel anahtar (private key) ile imzalar, alıcı sunucu DNS'teki genel anahtar (public key) ile doğrular.
DKIM Anahtar Çifti Oluşturma
OpenSSL ile 2048-bit RSA anahtar çifti oluşturun:
# Özel anahtar oluşturma
openssl genrsa -out dkim_private.pem 2048
# Genel anahtarı çıkarma
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem
# Genel anahtarı DNS formatına dönüştürme
cat dkim_public.pem | grep -v '^-' | tr -d '\n'
Postfix ile DKIM Yapılandırması (OpenDKIM)
OpenDKIM kurulumu:
sudo apt update
sudo apt install opendkim opendkim-tools -y
Anahtar oluşturma:
sudo mkdir -p /etc/opendkim/keys/ornekdomain.com
sudo opendkim-genkey -b 2048 -d ornekdomain.com -D /etc/opendkim/keys/ornekdomain.com -s default -v
sudo chown -R opendkim:opendkim /etc/opendkim
OpenDKIM yapılandırma dosyası (/etc/opendkim.conf):
AutoRestart Yes
AutoRestartRate 10/1h
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
Mode sv
SubDomains no
OversignHeaders From
KeyTable refile:/etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
ExternalIgnoreList /etc/opendkim/trusted.hosts
InternalHosts /etc/opendkim/trusted.hosts
Socket inet:8891@localhost
Key table dosyası (/etc/opendkim/key.table):
default._domainkey.ornekdomain.com ornekdomain.com:default:/etc/opendkim/keys/ornekdomain.com/default.private
Signing table dosyası (/etc/opendkim/signing.table):
*@ornekdomain.com default._domainkey.ornekdomain.com
Trusted hosts dosyası (/etc/opendkim/trusted.hosts):
127.0.0.1
localhost
ornekdomain.com
DKIM DNS Kaydı Ekleme
Oluşturulan genel anahtarı DNS'e TXT kaydı olarak ekleyin:
default._domainkey IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhki...(GENEL_ANAHTAR)..."
DKIM anahtarı 2048-bit olmalıdır. 1024-bit anahtarlar artık güvenli kabul edilmemektedir.
Postfix Entegrasyonu
Postfix yapılandırmasına (/etc/postfix/main.cf) ekleyin:
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
Servisleri yeniden başlatın:
sudo systemctl restart opendkim
sudo systemctl restart postfix
DKIM Kaydını Test Etme
# DNS'ten DKIM kaydını sorgulama
dig TXT default._domainkey.ornekdomain.com +short
# OpenDKIM test aracı
opendkim-testkey -d ornekdomain.com -s default -vvv
DMARC (Domain-based Message Authentication) Nedir?
DMARC, SPF ve DKIM sonuçlarını birleştirerek domain sahibine e-posta doğrulama politikası belirleme ve raporlama imkanı sunar. Alıcı sunucu, SPF veya DKIM doğrulaması başarısız olan e-postalar için DMARC politikasına göre hareket eder.
DMARC Kaydı Oluşturma
DNS'e TXT kaydı olarak ekleyin:
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@ornekdomain.com; ruf=mailto:dmarc-forensic@ornekdomain.com; fo=1; adkim=r; aspf=r; pct=100"
DMARC Politika Seviyeleri
| Politika | Açıklama | Kullanım |
|---|---|---|
p=none | Sadece raporla, müdahale etme | İlk aşama — izleme |
p=quarantine | Spam klasörüne yönlendir | Orta seviye koruma |
p=reject | E-postayı tamamen reddet | Tam koruma |
DMARC Tag'leri
| Tag | Açıklama | Örnek |
|---|---|---|
v | Versiyon (zorunlu) | v=DMARC1 |
p | Politika (zorunlu) | p=reject |
rua | Toplu rapor adresi | rua=mailto:rapor@domain.com |
ruf | Forensic rapor adresi | ruf=mailto:forensic@domain.com |
fo | Hata raporlama seçeneği | fo=1 (her hatada) |
adkim | DKIM hizalama modu | r (relaxed) veya s (strict) |
aspf | SPF hizalama modu | r (relaxed) veya s (strict) |
pct | Politika uygulama yüzdesi | pct=100 |
sp | Alt domain politikası | sp=reject |
Kademeli DMARC Uygulama Stratejisi
DMARC'ı aşamalı olarak uygulamak en güvenli yaklaşımdır:
# 1. Aşama: İzleme (2-4 hafta)
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@ornekdomain.com; fo=1"
# 2. Aşama: Karantina (2-4 hafta)
_dmarc IN TXT "v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@ornekdomain.com"
# 3. Aşama: Karantina artırma
_dmarc IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc@ornekdomain.com"
# 4. Aşama: Tam koruma
_dmarc IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@ornekdomain.com; ruf=mailto:dmarc-forensic@ornekdomain.com"
DMARC raporlarını analiz etmek için dmarcian.com, postmarkapp.com/dmarc veya easydmarc.com gibi ücretsiz araçları kullanabilirsiniz.
Tüm Kayıtları Doğrulama
Tüm e-posta güvenlik kayıtlarını tek seferde kontrol edin:
# SPF kontrolü
dig TXT ornekdomain.com +short | grep spf
# DKIM kontrolü
dig TXT default._domainkey.ornekdomain.com +short
# DMARC kontrolü
dig TXT _dmarc.ornekdomain.com +short
# MX kaydı kontrolü
dig MX ornekdomain.com +short
E-posta Gönderim Testi
Komut satırından test e-postası gönderin:
# swaks ile detaylı test
sudo apt install swaks -y
swaks --to test@gmail.com --from info@ornekdomain.com --server localhost --tls
Gönderilen e-postanın başlıklarını kontrol edin:
Authentication-Results: mx.google.com;
dkim=pass header.d=ornekdomain.com;
spf=pass (google.com: domain of info@ornekdomain.com designates SUNUCU_IP as permitted sender);
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=ornekdomain.com
Yaygın Hatalar ve Çözümleri
| Hata | Neden | Çözüm |
|---|---|---|
| SPF PermError | 10'dan fazla DNS lookup | include sayısını azaltın, IP bloklarını birleştirin |
| DKIM fail | Anahtar uyumsuzluğu | DNS'teki public key ile sunucudaki private key eşleşmeli |
| DMARC fail | SPF ve DKIM alignment hatası | From header domain'i ile SPF/DKIM domain'i eşleşmeli |
| Softfail | SPF kaydında ~all kullanımı | -all ile değiştirin |
| Body hash mismatch | E-posta iletimde değiştirilmiş | Canonicalization ayarını relaxed/relaxed yapın |
Sonuç
SPF, DKIM ve DMARC üçlüsü, e-posta güvenliğinin temel taşlarıdır. Bu üç protokolü doğru yapılandırmak, e-postalarınızın teslim edilebilirliğini artırır, domain sahteciliğini önler ve markanızın itibarını korur. DMARC'ı kademeli olarak uygulayarak raporları analiz edin ve tam korumaya geçmeden önce tüm meşru gönderim kaynaklarınızın SPF ve DKIM ile uyumlu olduğundan emin olun.
İlgili Makaleler
Mail Sunucu Kurulumu: Postfix ve Dovecot
Postfix MTA, Dovecot IMAP/POP3, SSL/TLS yapılandırması, sanal domain desteği, spam filtreleme ve Docker Mail Server kurulum rehberi.
E-posta Blacklist'ten Çıkış Rehberi
Blacklist kontrol, delisting başvurusu, Spamhaus/Barracuda/SORBS prosedürleri ve IP itibar yönetimi rehberi.