Kendi Mail Sunucunu Kurmak: VDS'te PTR, SPF, DKIM, DMARC
Kendi mail sunucunu kurmak için temiz bir IP'ye sahip bir VDS, doğru hostname, eşleşen PTR (rDNS) kaydı ve SPF/DKIM/DMARC üçlüsü gerekir. Maillerin spam'e düşmemesi büyük oranda yazılım seçiminden değil, bu DNS ve IP itibarı ayarlarından gelir; aşağıda iRedMail, Mailcow ve Zimbra için pratik bir yol haritası var.
Başlamadan Önce: Gereksinimler
Mail sunucusu "kur ve unut" bir hizmet değildir. Başlamadan şunları netleştirin:
- Temiz IP: Daha önce kara listeye girmemiş bir IPv4 adresi. Teslim aldığınız IP'yi kurulumdan önce kontrol edin.
- Alan adı ve DNS erişimi:
example.comiçin A, MX, TXT kayıtlarını düzenleyebilmelisiniz. - Sabit hostname: Örneğin
mail.example.com. Hostname, A kaydı ve PTR aynı ismi göstermelidir. - Kaynaklar: Mailcow için en az 6 GB RAM, Zimbra için 8 GB ve üzeri, iRedMail için 4 GB RAM pratik bir başlangıçtır (antivirüs/ClamAV bellek tüketir).
- Temiz işletim sistemi: Üzerinde başka web sunucusu çalışmayan, yeni kurulmuş Debian/Ubuntu veya Rocky/AlmaLinux.
Türkiye'deki alıcılara (kurumsal kullanıcılar, yerel ISS'ler) gönderim yapacaksanız İzmir gibi Türkiye lokasyonlu bir VDS, düşük gecikme ve yerel erişim açısından mantıklıdır. Nixcon VDS sunucuları VMware vSphere tabanlıdır ve mail sunucusu için ayrılmış sabit bir IP ile kullanılabilir. Dış SMTP (25. port) erişimi gibi politikaları sipariş öncesinde destek ekibiyle teyit etmeniz iyi olur.
Adım 1: Hostname ve Temel Sistem Ayarları
hostnamectl set-hostname mail.example.com
echo "192.0.2.10 mail.example.com mail" >> /etc/hosts
apt update && apt full-upgrade -y
timedatectl set-timezone Europe/Istanbul
Zaman senkronizasyonu önemlidir; DKIM imzaları ve log analizi için saat doğru olmalıdır (chrony veya systemd-timesyncd).
Güvenlik duvarında şu portları açın:
| Port | Kullanım |
|---|---|
| 25 | SMTP (sunucular arası) |
| 465 / 587 | Gönderim (SMTPS / submission) |
| 143 / 993 | IMAP / IMAPS |
| 80 / 443 | Webmail, Let's Encrypt |
ufw allow 25,80,443,465,587,993/tcp
Adım 2: Yazılım Seçimi — iRedMail, Mailcow, Zimbra
iRedMail, düz bir Debian/Ubuntu veya RHEL türevi üzerine Postfix, Dovecot, Roundcube ve Amavis'i kuran bir betiktir. Hafiftir, klasik yapıyı sevenlere uygundur.
cd /root
wget https://github.com/iredmail/iRedMail/archive/refs/tags/<surum>.tar.gz
tar xf <surum>.tar.gz && cd iRedMail-<surum>
bash iRedMail.sh
<surum> yerine GitHub sürümler sayfasındaki güncel etiketi yazın. Sihirbaz, mail dizini, veritabanı ve ilk alan adını sorar.
Mailcow, Docker tabanlıdır; SOGo webmail, yönetim paneli, Rspamd ve otomatik DKIM üretimi ile gelir. Güncelleme ve yedekleme betikleri hazırdır.
apt install -y git curl
curl -sSL https://get.docker.com | sh
umask 0022
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh # hostname olarak mail.example.com girin
docker compose pull
docker compose up -d
Panele https://mail.example.com adresinden girilir; varsayılan yönetici parolasını ilk girişte mutlaka değiştirin. Mailcow 80/443 portlarını kendisi kullandığı için sunucuda başka bir web servisi çalıştırmayın.
Zimbra, tam bir işbirliği paketidir (takvim, adres defteri, ActiveSync benzeri özellikler). Daha fazla RAM ister ve kurulum paketini ilgili dağıtım/topluluk kaynağından, işletim sistemi sürümünüzle uyumlu olarak temin etmeniz gerekir. Paket açıldıktan sonra kurulum şu şekilde yapılır:
tar xf zcs-*.tgz && cd zcs-*
./install.sh
Kurulumdan önce hostname'in DNS'ten çözüldüğünden emin olun; Zimbra bunu kontrol eder ve çözülemezse durur.
Adım 3: A, MX ve PTR (rDNS) Kaydı
Önce temel DNS kayıtları:
mail.example.com. IN A 192.0.2.10
mail.example.com. IN AAAA 2001:db8::10
example.com. IN MX 10 mail.example.com.
PTR (rDNS), IP'den isme çözümlemedir ve alıcı sunucuların ilk baktığı yerlerden biridir. PTR kaydı DNS sağlayıcınızda değil, IP'nin sahibi olan ağda tutulur; yani Nixcon VDS kullanıyorsanız PTR'yi müşteri panelinden kendi hostname'inize (mail.example.com) ayarlarsınız. Panel menüsünün yerini bulamazsanız destek ekibine başvurabilirsiniz.
Kural basit: PTR → A → HELO üçgeni aynı ismi göstermeli. Kontrol:
dig -x 192.0.2.10 +short # mail.example.com. dönmeli
dig +short A mail.example.com # 192.0.2.10 dönmeli
postconf myhostname # mail.example.com
IPv6 ile de gönderim yapacaksanız IPv6 adresi için de PTR tanımlayın; aksi hâlde IPv6 üzerinden giden mailler reddedilebilir. Emin değilseniz başlangıçta Postfix'i yalnızca IPv4 kullanacak şekilde ayarlayın (inet_protocols = ipv4).
Adım 4: SPF, DKIM ve DMARC
SPF
SPF, hangi IP'lerin alan adınız adına mail gönderebileceğini bildirir:
example.com. IN TXT "v=spf1 mx ip4:192.0.2.10 ip6:2001:db8::10 -all"
Başka bir servis de (örneğin bülten sağlayıcı) mail gönderiyorsa onun include: kaydını ekleyin. Alan adı başına yalnızca bir SPF kaydı olabilir.
DKIM
DKIM, giden maili özel anahtarla imzalar; alıcı genel anahtarı DNS'ten doğrular.
- Mailcow: Yönetim paneli → Configuration → ARC/DKIM keys bölümünden alan adı için 2048 bit anahtar üretin ve gösterilen TXT kaydını DNS'e ekleyin.
- iRedMail: Anahtar, kurulumda Amavis için üretilir. Genel anahtarı şu komutla görün:
amavisd-new showkeys # dağıtıma göre: amavisd showkeys
DNS kaydı şu formattadır:
dkim._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq...(kısaltıldı)"
Uzun anahtar bazı DNS panellerinde 255 karakterlik parçalara bölünmelidir; bölme hatası en sık DKIM sorunudur.
DMARC
DMARC, SPF ve DKIM'in hizalanmasını (alignment) ve başarısızlık politikasını belirler. İzleme modunda başlayın:
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; fo=1"
Birkaç hafta raporları inceleyip meşru tüm kaynaklar geçtikten sonra p=quarantine, ardından p=reject değerine geçin.
Adım 5: TLS ve Doğrulama Testleri
Sertifika için Mailcow ve Zimbra kendi Let's Encrypt akışını sunar; iRedMail'de certbot ile alıp Postfix ve Dovecot'a tanıtabilirsiniz. Sonra test edin:
openssl s_client -starttls smtp -connect mail.example.com:25 -servername mail.example.com
dig +short TXT example.com
dig +short TXT dkim._domainkey.example.com
dig +short TXT _dmarc.example.com
Dışarıya gerçek bir test maili gönderip başlıkları (headers) inceleyin; spf=pass, dkim=pass, dmarc=pass görmelisiniz. swaks ile komut satırından da test edebilirsiniz:
swaks --to test@gmail.com --from info@example.com \
--server mail.example.com --port 587 --tls --auth LOGIN \
--auth-user info@example.com
mail-tester.com gibi araçlar ve Google Postmaster Tools, itibarınızı görmek için iyi yardımcılardır.
Spam'e Düşmemek İçin Pratik Kurallar
- IP'yi ısıtın: Yeni IP ile ilk günden yüzlerce mail göndermeyin; hacmi birkaç haftada kademeli artırın.
- Kara listeleri kontrol edin: IP'nizi Spamhaus, Barracuda ve benzeri listelerde sorgulayın; listedeyseniz ilgili listenin kaldırma sürecini izleyin.
- Açık röle bırakmayın: Yalnızca kimlik doğrulamalı kullanıcılar gönderebilmeli.
swaksile dışarıdan yetkisiz gönderim denemesi yapın. - Güçlü parolalar ve rate limit: Ele geçirilen bir hesap IP itibarınızı günler içinde bitirir. Fail2ban (Mailcow'da yerleşik netfilter servisi) kullanın.
- İçerik ve liste hijyeni: Abonelikten çık bağlantısı koyun, geri dönen (bounce) adresleri listeden temizleyin.
- Reverse DNS ve HELO tutarlı olsun:
smtp_helo_namehostname ile aynı olmalı. - Mail kuyruğunu izleyin:
postqueue -pile kuyruk büyümesini,journalctl -u postfixile reddedilme sebeplerini takip edin.
Sık Yapılan Hatalar ve Çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
550 5.7.25 PTR record required |
PTR yok veya hostname ile uyumsuz | Panelden PTR'yi mail.example.com yapın, A kaydıyla eşleştirin |
spf=softfail/fail |
Gönderen IP SPF'te yok | ip4: değerini düzeltin, tek SPF kaydı olduğundan emin olun |
dkim=none |
Selector adı veya TXT hatalı | dkim._domainkey adını ve anahtar bütünlüğünü kontrol edin |
dmarc=fail |
From alan adı ile SPF/DKIM alan adı hizalı değil | Aynı alan adıyla imzalayın |
| Mail Gmail'de spam | Yeni IP, düşük itibar, içerik | IP'yi ısıtın, Postmaster Tools ile izleyin |
| Port 25 bağlantısı yok | Güvenlik duvarı veya sağlayıcı politikası | ufw kurallarını ve destek teyidini kontrol edin |
Güvenlik ve Süreklilik
Mail sunucuları sürekli deneme saldırılarına (brute force) ve bazen hacimsel saldırılara maruz kalır. SMTP/IMAP portlarını gereksiz yere dünyaya açık tutmayın, yönetim panelini IP ile kısıtlayın ve yedeklerinizi düzenli alın (Mailcow'da helper-scripts/backup_and_restore.sh). Kritik bir mail altyapısı için ağ seviyesinde koruma gerekiyorsa DDoS koruma ve firewall seçeneklerini değerlendirebilirsiniz.
Özet
Sıra şu: hostname → A/MX → PTR → SPF → DKIM → DMARC → TLS → küçük hacimle ısınma. Yazılım seçimi (iRedMail hafif, Mailcow kolay yönetim, Zimbra tam işbirliği) ikincil kalır; asıl fark, DNS tutarlılığı ve IP itibarının korunmasında yaratılır.
Sık sorulan sorular
PTR (rDNS) kaydını nereden ayarlarım?
PTR kaydı IP bloğunun sahibi olan ağ tarafından yönetilir, alan adı DNS'inizden değil. Nixcon VDS kullanıyorsanız müşteri panelinden hostname'inizi (örneğin mail.example.com) PTR olarak tanımlayabilirsiniz; bulamazsanız destek ekibine başvurun.
iRedMail, Mailcow ve Zimbra arasında hangisini seçmeliyim?
Hafif ve klasik Postfix/Dovecot yapısı için iRedMail, Docker tabanlı kolay yönetim ve otomatik DKIM için Mailcow, tam işbirliği ve takvim özellikleri için Zimbra uygundur. Zimbra daha fazla RAM ister.
SPF, DKIM ve DMARC hepsi gerekli mi?
Evet. Büyük sağlayıcılar özellikle toplu gönderimde üçünün de doğru yapılandırılmasını bekler. SPF ve DKIM kimlik doğrular, DMARC ise hizalamayı ve başarısızlık politikasını belirler.
Mailler yine de spam'e düşüyorsa ne yapmalıyım?
Önce PTR-A-HELO tutarlılığını ve SPF/DKIM/DMARC sonuçlarını başlıklardan doğrulayın, IP'nizi kara listelerde sorgulayın, gönderim hacmini kademeli artırın ve Google Postmaster Tools ile itibarınızı izleyin.