Sunucunuzu yeni kurdunuz, sağlayıcı otomatik olarak bir IPv6 bloğu tanımladı ve her şey yolunda görünüyor. Sonra Gmail'e gönderdiğiniz mailler tek tek reddedilmeye başlıyor: 550-5.7.1 Our system has detected that this message does not meet IPv6 sending guidelines regarding PTR records and authentication. Aynı mail IPv4 üzerinden sorunsuz gidiyordu. Mail sunucusunda IPv6 yapılandırması bu yüzden "açtım, çalışıyor" işi değildir; IPv6 üzerinden gönderim yaparken alıcı sunucular sizden IPv4'te olduğundan daha katı şartlar bekler.
Bu yazıda IPv6'yı mail sunucunuzda doğru şekilde devreye almayı anlatacağım: AAAA ve MX kayıtlarının nasıl kurulacağı, IPv6 PTR kaydının neden pazarlık konusu olmadığı, SPF kaydına ip6 mekanizmasının nasıl ekleneceği, Postfix'in hangi adresten çıkacağını nasıl belirleyeceğiniz ve güvenlik duvarı ile fail2ban tarafında nelerin ikinci kez yapılması gerektiği. Ayrıca IPv6'yı kapatmanın ne zaman doğru karar olduğunu da konuşacağız.
IPv6'ya Geçmeden Önce Bilinmesi Gerekenler#
IPv6 üzerinden mail göndermenin IPv4'ten temel farkı, alıcı sunucuların IPv6 kaynaklarına karşı çok daha az toleranslı olmasıdır. Bunun sebebi adres bolluğudur: bir saldırgan IPv4'te birkaç adres bulabilirken IPv6'da milyarlarca adres arasından istediğini seçebilir, dolayısıyla IP tabanlı itibar geçmişi IPv6'da neredeyse anlamsızdır. Filtreler bu boşluğu, gönderenden daha güçlü kanıt isteyerek kapatır.
Pratikte bu üç somut şart anlamına gelir. Birincisi, gönderim yaptığınız IPv6 adresinin mutlaka bir PTR kaydı olmalıdır — IPv4'te eksik bir PTR puan kaybettirirken IPv6'da doğrudan ret sebebidir. İkincisi, SPF veya DKIM'den en az birinin geçmesi beklenir; IPv4'te bunlar olmadan da teslimat mümkün olabilirken IPv6'da genellikle değildir. Üçüncüsü, gönderim yaptığınız adresin sabit ve bilinen olması gerekir; sunucu her yeniden başlatıldığında farklı bir IPv6 adresinden çıkıyorsanız hiçbir itibar birikmez.
Buna karşılık IPv6'nın gelen taraftaki hikâyesi çok daha basit ve risksizdir: alan adınıza AAAA kaydı ekleyip mail almak, giden tarafa göre neredeyse hiç ek şart getirmez. Bu yüzden makul bir yol haritası şudur: önce gelen tarafı açın, giden tarafı ancak PTR, SPF ve DKIM eksiksiz olduğunda devreye alın.
| Konu | IPv4'te | IPv6'da |
|---|---|---|
| PTR kaydı eksikse | Puan kaybı | Genellikle doğrudan ret |
| SPF/DKIM yoksa | Zor ama mümkün | Pratikte imkânsız |
| IP itibar geçmişi | Anlamlı | Blok bazında, daha zayıf |
| DNSBL kapsamı | Geniş | Sınırlı |
| Adres sabitliği | Doğal | Elle sabitlenmeli |
AAAA Kaydı ve MX Kayıtlarının IPv6 Tarafı#
MX kaydı bir IP adresi tutmaz; bir isme işaret eder ve o ismin arkasındaki A ile AAAA kayıtları teslimatın hangi adreslere yapılacağını belirler. Yani IPv6 üzerinden mail almak için MX kaydınızı değiştirmeniz gerekmez; MX'in gösterdiği ana makine adına bir AAAA kaydı eklemeniz yeterlidir.
; MX kaydı değişmez, sadece isme işaret eder
firmaniz.com. 3600 IN MX 10 mail.firmaniz.com.
; Aynı isim hem IPv4 hem IPv6 adresine bağlanır
mail.firmaniz.com. 3600 IN A 185.12.34.56
mail.firmaniz.com. 3600 IN AAAA 2001:db8:3c4d:15::25
Bu üç satır yayına girdiğinde, IPv6 destekleyen gönderici sunucular size doğrudan IPv6 üzerinden teslimat yapmaya başlar. Kritik nokta şudur: AAAA kaydını yayınladığınız anda o adresin gerçekten 25 portunda dinlediğinden ve güvenlik duvarında açık olduğundan emin olmalısınız. Aksi halde gönderici sunucular önce IPv6'yı dener, zaman aşımına uğrar ve ancak sonra IPv4'e döner — yani her mailiniz gereksiz bir gecikmeyle gelir. Daha kötüsü, bazı gönderici yapılandırmaları IPv4'e hiç düşmeden teslimatı erteler.
Yayına almadan önce dışarıdan test edin:
# AAAA kaydı yayında mı
dig +short mail.firmaniz.com AAAA
# IPv6 üzerinden 25 portu gerçekten cevap veriyor mu
nc -6 -vz mail.firmaniz.com 25
# SMTP selamlaşmasını IPv6 üzerinden gör
openssl s_client -6 -connect mail.firmaniz.com:25 -starttls smtp -brief
MX kayıtlarınızın genel sağlığında bir şüpheniz varsa maillerim gelmiyor MX sorunu yazısındaki kontrol akışı IPv6 eklemeden önce iyi bir temel oluşturur.
IPv6 PTR Kaydı: Pazarlık Konusu Değil#
Giden tarafta yapılacak en kritik iş budur ve atlanırsa geri kalan her şey boşa gider. IPv6 PTR kayıtları ip6.arpa bölgesinde tutulur ve adresin her onaltılık basamağı tersten, noktayla ayrılarak yazılır — yani elle yazması hataya çok açık bir biçimdir. Neyse ki dig bu dönüşümü sizin için yapar:
# IPv6 adresinin PTR kaydını sorgula (dig ip6.arpa dönüşümünü kendi yapar)
dig +short -x 2001:db8:3c4d:15::25
# Beklenen çıktı:
# mail.firmaniz.com.
# İleri yön doğrulaması: aynı isim aynı adrese çözümlenmeli
dig +short mail.firmaniz.com AAAA
# Beklenen çıktı:
# 2001:db8:3c4d:15::25
Bu iki sorgunun birbirini doğrulaması gerekir; buna ileri-doğrulanmış ters DNS denir ve büyük sağlayıcıların IPv6'da aradığı asgari şarttır. PTR kaydı IP bloğunun sahibinde ayarlanır, yani sunucu sağlayıcınızda. Panelden düzenleyemiyorsanız destek talebiyle isteyin ve hangi adresi kullanacağınızı önceden belirleyin: IPv6'da genellikle koca bir /64 blok tahsis edilir ve blok içindeki her adres için ayrı ayrı PTR kaydı yapılmaz. Tek bir adres seçin, ona PTR verin ve sunucunun daima o adresten çıkmasını sağlayın.
Bu son cümle, IPv6'ya geçen mail sunucularının en sık düştüğü tuzağa işaret ediyor: Linux, SLAAC veya geçici adres (privacy extension) yapılandırmasıyla kendine ek IPv6 adresleri atayabilir ve giden bağlantılar için bunlardan birini seçebilir. O adresin PTR kaydı olmadığı için mailleriniz reddedilir — üstelik AAAA kaydınızdaki adresin PTR'si düzgün olmasına rağmen. Sunucudaki durumu şöyle görürsünüz:
# Arayüzdeki tüm IPv6 adreslerini ve türlerini listele
ip -6 addr show scope global
# Dışarıya çıkarken hangi kaynak adresin seçildiğini gör
ip -6 route get 2001:4860:4860::8888
# Geçici (privacy) adresleri kapat - kalıcı hale getirmek için sysctl.d altına yazın
sysctl -w net.ipv6.conf.all.use_tempaddr=0
sysctl -w net.ipv6.conf.default.use_tempaddr=0
SPF Kaydına ip6 Mekanizmasını Eklemek#
SPF kaydınız yalnızca ip4 mekanizmaları içeriyorsa, IPv6 üzerinden gönderdiğiniz her mail SPF'ten kalır. Bu, IPv6'ya geçtikten sonra "dün çalışıyordu bugün spam'e düşüyor" şikâyetinin en yaygın sebebidir. Çözüm basittir: ip6 mekanizmasını ekleyin.
; Tek adres olarak
firmaniz.com. 3600 IN TXT "v=spf1 ip4:185.12.34.56 ip6:2001:db8:3c4d:15::25 include:servis.net -all"
; Ya da tahsis edilen blok olarak (sunucu blok içinde adres değiştirebiliyorsa)
firmaniz.com. 3600 IN TXT "v=spf1 ip4:185.12.34.56 ip6:2001:db8:3c4d:15::/64 include:servis.net -all"
İki biçim arasında seçim yaparken şu dengeyi gözetin: tek adres yazmak en dar ve en güvenli tanımdır, ama sunucu kaynak adresini değiştirdiği anda SPF kırılır. Blok yazmak dayanıklıdır, ancak o /64 bloğu başka müşterilerle paylaşıyorsanız onların gönderimlerine de yetki vermiş olursunuz. Blok size özel tahsis edildiyse /64 yazmak makul, paylaşımlı bir ortamdaysanız tek adres yazmak doğrudur.
ip4 ve ip6 mekanizmaları DNS sorgusu üretmediği için 10 sorgu limitine dahil değildir; yani ip6 eklemek limitinizi zorlamaz. Kaydın sonundaki niteleyiciyi (~all mı -all mı) seçerken SPF SoftFail ve HardFail farkı yazısındaki karar akışını izleyin; IPv6 eklerken doğrudan -all'a geçmek, henüz doğrulamadığınız bir adresten çıkan mailleri kesme riski taşır.
DKIM tarafında IPv6'ya özel bir iş yoktur — imza mesajın içinde taşınır ve adres ailesinden bağımsızdır. Bu, IPv6'da DKIM'i daha da kıymetli kılar: SPF adres tabanlı olduğu için IPv6 geçişinde kırılganken, DKIM geçiş boyunca sizi ayakta tutar. Aynı sebeple DMARC hizalamasının DKIM bacağını sağlam kurmak önemlidir; ayrıntılar için DMARC alignment nedir yazısına bakın.
Postfix'te IPv6 Ayarları#
Postfix'te IPv6, inet_protocols parametresiyle kontrol edilir ve bu tek ayar hem gelen hem giden tarafı etkiler. Varsayılan değer dağıtıma göre değişir, bu yüzden önce mevcut durumu okuyun:
postconf inet_protocols inet_interfaces smtp_bind_address6 smtp_address_preference
Tam IPv6 desteği için main.cf şu şekilde yapılandırılır:
# /etc/postfix/main.cf
# Hem IPv4 hem IPv6 kullan (ipv4 / ipv6 / all)
inet_protocols = all
inet_interfaces = all
# GİDEN bağlantılarda hangi IPv6 adresinden çıkılacağını SABİTLE
# Bu satır olmadan çekirdek başka bir adres seçebilir ve PTR eşleşmez
smtp_bind_address6 = 2001:db8:3c4d:15::25
smtp_bind_address = 185.12.34.56
# Karşı tarafta hem A hem AAAA varsa hangisi tercih edilsin
# any (varsayılan) | ipv6 | ipv4
smtp_address_preference = any
# Yerel ağ tanımına IPv6 karşılıklarını da ekleyin
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
smtp_bind_address6 satırı bu yapılandırmanın en kritik parçasıdır ve genellikle atlanır. Sunucunuzda birden fazla küresel IPv6 adresi varsa — ki SLAAC ile bu çok olağandır — çekirdek giden bağlantı için hangisini seçeceğine kendi karar verir. Seçilen adres AAAA kaydınızdaki ve PTR kaydı bulunan adres olmayabilir; sonuç, IPv4'te sorunsuz giden maillerin IPv6'da reddedilmesidir.
smtp_address_preference ise geçiş döneminde elinizdeki en pratik güvenlik supabıdır. IPv6 gönderiminde bir sorun yaşıyor ve hemen çözemiyorsanız bu değeri ipv4 yaparak giden trafiği IPv4 üzerinden akıtır, gelen IPv6 trafiğini ise kesmezsiniz. Değişikliği uygulayıp doğrulayın:
postfix check && postfix reload
# Gerçekten hangi adresten çıkıldığını log'dan teyit et
grep "connect to" /var/log/mail.log | tail -5
# Bir teslimatı izleyerek IPv6 kullanıldığını gör
grep -E "status=sent.*\[2001:" /var/log/mail.log | tail -3
Dovecot, Güvenlik Duvarı ve fail2ban Tarafı#
IPv6'ya geçerken en sık unutulan şey, IPv4 için yaptığınız her güvenlik ayarını ikinci kez, IPv6 için de yapmanız gerektiğidir. Güvenlik duvarı kuralları, oran sınırlamaları ve fail2ban yasakları ayrı adres ailelerinde ayrı ayrı çalışır; birini yapıp diğerini atlarsanız sunucunuz IPv6 tarafından tamamen korumasız kalır.
Dovecot tarafında dinleme adresini genişletmek yeterlidir:
# /etc/dovecot/dovecot.conf
listen = *, ::
Buradaki * IPv4'ü, :: ise IPv6'yı temsil eder. Yalnızca * yazılıysa Dovecot IPv6 bağlantılarını hiç kabul etmez ve kullanıcılarınız IMAP'e bağlanamaz — ama SMTP çalıştığı için sorun uzun süre fark edilmez.
Güvenlik duvarı tarafında UFW kullanıyorsanız IPv6 desteğinin açık olduğundan emin olun:
# UFW'de IPv6 açık mı (IPV6=yes olmalı)
grep IPV6 /etc/default/ufw
# nftables kullanıyorsanız inet ailesindeki kurallar her ikisini kapsar
nft list ruleset | grep -A5 "table inet"
# Hangi servislerin IPv6'da dinlediğini gör
ss -6 -tlnp
fail2ban tarafında ise yasaklama eyleminin IPv6'yı desteklediğinden emin olun. Modern sürümler allowipv6 = auto ile bunu kendiliğinden algılar, ancak eski iptables tabanlı eylemler yalnızca IPv4'ü yasaklar — yani kaba kuvvet denemesi yapan bir saldırgan IPv6'ya geçtiğinde yasaklanmadan devam eder. fail2ban-client status çıktısındaki yasaklı adresler listesinde hiç IPv6 adresi görmüyorsanız bu ayarı kontrol edin.
Test Etme ve Sık Yapılan Hatalar#
IPv6'yı devreye aldıktan sonra yapılacak en değerli test, gerçek bir alıcıya mail gönderip başlıktaki Received satırında IPv6 adresinizi görmektir. Başlığı nasıl okuyacağınızı mail başlıklarını okuma ve analiz etme yazısında anlattım; köşeli parantez içinde IPv6 adresinizi ve yanında PTR isminizi görmelisiniz.
En sık yapılan dört hatayı sıralayalım. Birincisi ve en pahalısı, AAAA kaydını PTR kaydı hazır olmadan yayınlamaktır. Bu sıralama tersine döndüğünde, PTR'siz bir adresten gönderim yapmaya başlarsınız ve büyük sağlayıcılar sizi reddeder. Doğru sıra şudur: önce PTR kaydını isteyin ve doğrulayın, sonra smtp_bind_address6 ile adresi sabitleyin, en son AAAA kaydını yayınlayın.
İkincisi, smtp_bind_address6 ayarını atlamaktır. Sunucunun birden fazla IPv6 adresi olduğunda çekirdek yanlış olanı seçer ve teşhis oldukça kafa karıştırıcı olur: DNS kayıtlarınız kusursuz görünür ama mailler yine reddedilir. Log'daki connect to satırlarında hangi kaynak adresin kullanıldığını mutlaka doğrulayın.
Üçüncüsü, güvenlik duvarı ve fail2ban kurallarını IPv6 için tekrar etmemektir. IPv4 tarafında sıkı sıkıya kapalı olan bir sunucu, IPv6 tarafında tamamen açık kalabilir. ss -6 -tlnp çıktısı size hangi servislerin IPv6'da dinlediğini gösterir; beklemediğiniz bir servis görüyorsanız hemen kapatın.
Dördüncüsü, SPF kaydına ip6 eklemeyi unutmaktır. Bu hatanın belirtisi çok tipiktir: bazı alıcılara mail gidiyor, bazılarına gitmiyor — çünkü yalnızca IPv6 üzerinden teslim edilen mesajlar SPF'ten kalıyor. Genel bir kontrol yapmak isterseniz e-posta teslim edilebilirlik denetimi listesindeki DNS ve kimlik doğrulama maddelerini IPv6 adresiniz için de tekrarlayın.
Sıkça Sorulan Sorular#
Mail sunucusu için IPv6 zorunlu mu#
Hayır, zorunlu değil. IPv4 üzerinden mail göndermek ve almak bugün de tamamen geçerlidir ve büyük sağlayıcıların hepsi IPv4'ü destekler. IPv6 bir zorunluluk değil, bir hazırlıktır. Yalnız şunu unutmayın: sunucunuza otomatik olarak bir IPv6 adresi atanmışsa, siz hiçbir şey yapmasanız bile Postfix o adresten çıkmaya başlayabilir. Yani "IPv6 kullanmıyorum" demek, IPv6'nın devrede olmadığı anlamına gelmez.
IPv6 PTR kaydı olmadan mail gönderebilir miyim#
Pratikte hayır. Büyük sağlayıcılar IPv6 üzerinden gelen ve PTR kaydı bulunmayan bağlantıları doğrudan reddeder; Gmail bu durumda açıkça IPv6 gönderim kurallarına atıf yapan bir hata mesajı döner. IPv4'te eksik PTR yalnızca puan kaybettirirken IPv6'da kesin ret sebebidir. PTR kaydını sağlayamıyorsanız giden trafiği IPv4'e sabitlemek doğru karardır.
IPv6'yı nasıl kapatırım#
Postfix tarafında en temiz yol inet_protocols = ipv4 yapmaktır; bu hem gelen hem giden tarafta IPv6'yı devre dışı bırakır. Yalnızca giden trafiği IPv4'e yönlendirip gelen IPv6 teslimatını korumak istiyorsanız smtp_address_preference = ipv4 ayarını kullanın. Kapatma kararı verdiyseniz AAAA kaydınızı da kaldırmayı unutmayın, aksi halde göndericiler önce IPv6'yı deneyip zaman aşımına uğrar.
AAAA kaydı eklersem maillerim IPv6'dan mı gelir#
Evet, IPv6 destekleyen gönderici sunucular AAAA kaydını gördüklerinde genellikle onu tercih eder. Bu yüzden AAAA kaydını yayınlamadan önce o adresin 25 portunda gerçekten dinlediğinden ve güvenlik duvarında açık olduğundan emin olun. Adres dinlemiyorsa her teslimat önce bir zaman aşımı yaşar, sonra IPv4'e döner; sonuç, tüm maillerinizin gecikmeli gelmesidir.
SPF kaydına IPv6 adresini nasıl eklerim#
ip6: mekanizmasıyla eklersiniz: tek adres için ip6:2001:db8:3c4d:15::25, tahsis edilen blok için ip6:2001:db8:3c4d:15::/64 biçiminde yazılır. Bu mekanizma DNS sorgusu üretmediği için SPF'in 10 sorgu limitine dahil değildir. Blok yazarken dikkatli olun: blok başka müşterilerle paylaşılıyorsa onların gönderimlerine de yetki vermiş olursunuz.
Sunucumun hangi IPv6 adresinden çıktığını nasıl görürüm#
ip -6 route get 2001:4860:4860::8888 komutu, dışarıya çıkarken hangi kaynak adresin seçileceğini gösterir. Postfix özelinde ise log'daki connect to satırlarına bakın ya da kendinize bir test maili gönderip başlıktaki Received satırında görünen adresi okuyun. Bu adres AAAA ve PTR kayıtlarınızdaki adresten farklıysa smtp_bind_address6 ile sabitlemeniz gerekir.
IPv6 kara listeleri IPv4 gibi çalışır mı#
Tam olarak değil. Birçok DNSBL IPv6 kapsamını sınırlı tutar veya adres bazında değil blok bazında listeleme yapar, çünkü IPv6'da tek tek adres izlemek pratik değildir. Bu, IPv6'da kara liste riskinin daha düşük olduğu anlamına gelmez; sadece itibarın adresten çok bloğa ve kimlik doğrulama kalitenize bağlı olduğu anlamına gelir. IPv6'da SPF, DKIM ve DMARC'ın ağırlığı bu yüzden daha yüksektir.
Kapanış#
IPv6, mail sunucusunda dikkatli bir sıralama isteyen bir geçiş. Aklınızda kalması gereken dört şey: PTR kaydını AAAA kaydından önce hazırlayın, çünkü IPv6'da PTR eksikliği doğrudan rettir; smtp_bind_address6 ile giden adresi sabitleyin, yoksa çekirdek PTR'siz bir adres seçebilir; SPF kaydına ip6 mekanizmasını eklemeyi unutmayın; ve güvenlik duvarı ile fail2ban kurallarını IPv6 için ikinci kez kurun. Bir sorun çıkarsa smtp_address_preference = ipv4 her zaman elinizin altındaki güvenli geri dönüş yoludur.
Kendi mail sunucunuzu kurup bu yapılandırmayı yönetmek isterseniz Postfix, Dovecot, DKIM ve rDNS kaydı hazır teslim edilen SMTP sunucu paketleri sizi ilk kurulum aşamasından kurtarır; daha genel bir altyapı ve tam root erişimi için VDS sunucularına bakabilirsiniz. DNS kayıtlarını tek panelden yönetmek isterseniz alan adı hizmetimiz, PTR ve güvenlik duvarı tarafını bize bırakmak isterseniz sunucu yönetimi hizmetimiz devreye girer.