Teknoloji

VPS’te E‑posta Sunucusu Kurulumu: Postfix + Dovecot + rspamd ile Teslim Edilebilirlik ve IP Isıtma Adım Adım

İçindekiler

E‑postayı Kendi Evinde Ağırlamak: Neden, Ne Zaman, Nasıl?

Hiç başınıza geldi mi? Özenle yazdığınız bir toplu duyuru, basit bir parola sıfırlama postası ya da müşteriye gönderdiğiniz teklif… ve hop, karşı tarafın spam klasörüne düşüyor. Bir sabah kahvemle otururken, küçük bir ekibin e‑postaları sürekli spam’e takıldığı için aylarca cevap alamadığını anlattığı anı hatırladım. “Kendi sunucumuzu kursak?” dediler. O anda içimden geçen netti: Kendi e‑posta sunucunu kurmak, biraz sabır ve doğru taşları yerine dizmek istiyor; ama bir kere oturunca, kontrol hissi parmaklarının ucunda oluyor.

Bu yazıda seni adım adım yanımda götüreceğim. Bir VPS üstünde Postfix ile gönderimi, Dovecot ile IMAP/POP tarafını, rspamd ile süzgeçleri kuracağız. Sonra posta kabuğunun en kritik kısmına, yani teslim edilebilirlik ve IP ısıtma sürecine dalacağız. DNS kayıtlarından sertifikalara, loglardan küçük test ipuçlarına kadar, ilk günden spam’e saplanmadan ilerlemenin pratik yolunu konuşacağız. Mesela şöyle düşün: Bir fırını ilk kez yakıyorsun; ısıyı yavaş yavaş vermezsen ekmek kabarmıyor. E‑posta IP’si de buna benziyor; acele yok, düzenli adımlar var.

Yol Haritasını Çizelim: Temeller, DNS ve Ufak Hazırlıklar

Önce alan adı ve isimlendirme

Bir e‑posta sunucusunun kimliği öncelikle alan adınla başlar. “mail.example.com” gibi net bir A kaydı oluştur, sonra alan adının MX kaydını bu host’a yönlendir. Sunucu sağlayıcından rDNS/PTR kaydını da “mail.example.com” olarak ayarlamasını iste. Bu üçlü, posta dünyasında “merhaba” dediğin ilk saniyeyi belirliyor. Ardından SPF, DKIM ve DMARC kayıtlarıyla kimlik kartını tamamlayacağız.

VPS hazırlığı: Saat doğru, kapılar kontrollü

Sunucuda saat dilimi ve NTP senkronu düzgün olsun; logları okurken zaman kayması insanı yorar. Güvenlik duvarında 22 (SSH), 25 (SMTP), 587 (Submission) ve 993 (IMAPS) portlarını aç. İlk kurulumda işi yalın tutmak iyi gelir. Daha sonra fail2ban ile kaba kuvvet denemelerini törpüleriz. Bu arada, tekrar üretilebilir kurulumlar istemiyorsan bile bir gün gerekecek; buna cloud‑init ve Ansible ile tekrar üretilebilir VPS kurulumunu anlattığım yazıyı bırakıyorum, gün gelir “iyi ki” dersin.

Postfix ile Gönderim: Sakin, Temiz ve Anlaşılır Bir Kurgu

Kurulum ve temel ayarlar

Ubuntu/Debian gibi bir dağıtımda kurulum hızlıca şöyle başlar:

sudo apt update
sudo apt install postfix

Kurulum sihirbazında “Internet Site” seçip “mail.example.com” adını ver. Ardından aşağıdaki /etc/postfix/main.cf iskeleti, ilk adımdan taşları yerine oturtur:

myhostname = mail.example.com
mydomain = example.com
myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2

inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8 [::1]/128
relayhost =

# Maildir teslimi
home_mailbox = Maildir/
recipient_delimiter = +

# TLS
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file  = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_security_level = may
smtp_tls_security_level  = may
smtpd_tls_auth_only = yes

# SASL (Dovecot)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# Temel politikalar
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname
smtpd_recipient_restrictions = 
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unauth_destination

# rspamd milter
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = $smtpd_milters

Submission (587) portu son kullanıcı için can damarı. Bu yüzden /etc/postfix/master.cf içine uygun satırları ekleyelim:

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Buradaki “encrypt” seviyesi, 587 üzerinden gelen istemcilerin şifreli bağlantı kurmasını şart koşuyor. Küçük ama kritik bir dokunuş. Bu noktada Let’s Encrypt sertifikaları edinmek için kısa bir nefeslik durağı hak ediyoruz. Web sunucun yoksa bile standalone modda sertifika alabilirsin; sonra Postfix ve Dovecot’a göstereceğiz.

Dovecot ile IMAP ve Kimlik Doğrulama: Postaları Rahatça Okumak

Kurulum ve temel yapılandırma

Dovecot tarafı iki işi sırtlıyor: IMAP/POP hizmeti ve Postfix’e kimlik doğrulama. Kurulum basit:

sudo apt install dovecot-core dovecot-imapd dovecot-lmtpd

Ardından temel ayarları yapalım. /etc/dovecot/dovecot.conf ve ilgili dosyalarda şu iskelet iş görür:

protocols = imap lmtp
mail_location = maildir:~/Maildir

ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key  = </etc/letsencrypt/live/mail.example.com/privkey.pem

auth_mechanisms = plain login

passdb {
  driver = pam
}
userdb {
  driver = passwd
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Bu kurgu, sistem kullanıcılarıyla basit bir şekilde başlamak için yeterli. Maildir dizinleri “~/Maildir” altında oluşur, IMAP istemcileri (Thunderbird, Apple Mail gibi) hemen bağlanabilir. Bir nefes alıp “ilk e‑posta”yı atmaya hazırız.

rspamd ile Zırhı Kuşanmak: DKIM, DMARC, SPF ve İnce Ayar

Kurulum ve milter bağlama

rspamd, hafif ama güçlü bir süzgeç. Kurulumdan sonra Postfix milter’ına bağlanınca hem içerik skorlama yapar, hem de DKIM/ARC gibi imzaları oluşturabilir. Ubuntu/Debian’da:

sudo apt install rspamd redis-server
sudo systemctl enable --now rspamd redis-server

Postfix tarafında milter’ı zaten main.cf’e ekledik. Şimdi DKIM’i açalım. /etc/rspamd/local.d/dkim_signing.conf içine:

domain { example.com { selector = default; path = "/var/lib/rspamd/dkim/example.com.key"; } }
use_domain = sign;
allow_envfrom = true;
signing_table = "*";

Önce anahtar üretelim ve izinleri sıkı tutalım:

sudo mkdir -p /var/lib/rspamd/dkim
sudo rspamadm dkim_keygen -b 2048 -s default -d example.com -k /var/lib/rspamd/dkim/example.com.key 
  | sudo tee /var/lib/rspamd/dkim/default.example.com.txt
sudo chown -R _rspamd:_rspamd /var/lib/rspamd/dkim
sudo chmod 600 /var/lib/rspamd/dkim/example.com.key

Komut çıktısındaki TXT kaydını DNS’e ekle. Kayıt adı genellikle default._domainkey.example.com olur. Ardından basit bir SPF ve DMARC çizelgesi kuralım:

# SPF (TXT)
example.com. IN TXT "v=spf1 mx a:mail.example.com ~all"

# DMARC (TXT)
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1"

İlk günlerde DMARC “p=none” ile gözlemli modda kalsın; raporları izleyerek sıkılaştırma adımını sonra atarız. DMARC tarafında daha ileri konuları, BIMI dâhil, başka bir günün kahvesine sakladım; yine de meraklısına DMARC raporlarından BIMI’ye uzanan bu derinleşme rehberini bırakıyorum.

Test, Günlükler ve Küçük Zaferler: İlk Postayı Uçuralım

Bağlantı ve TLS kontrolü

Sunucu konuşuyor mu, önce buna bakalım. Submission portu için basit bir STARTTLS testi:

openssl s_client -starttls smtp -connect mail.example.com:587 -servername mail.example.com

Bağlantı kuruluyor, sertifika doğru görünüyor mu? Tamamsa ilk e‑postayı kendine gönder. Eğer ara ara “relay access denied” veya “authentication failed” gibi hatalar alırsan, genelde küçük bir yapılandırma noktası gözden kaçmıştır. Kimlik doğrulamanın Dovecot üzerinden aktığını, 587’nin şifreli zorunlu olduğunu hatırla.

Logları okumayı sevmek

Postfix ve Dovecot logları insana çok şey fısıldar. Ben çoğu sorunu /var/log/mail.log ve /var/log/syslog ikilisinde çözdüm. İçerik skorunu ve DKIM imzasını doğrulamak için bir test servisine de göz atabilirsin; örneğin mail‑tester ile içerik ve yapı puanını görmek bazen tek bakışta ışığı yakar.

Teslim Edilebilirlik: Spam Fısıltısını Susturmanın İnce Yolu

İtibar dediğin şey, düzenli ve sabırlı bir akış

E‑postada itibar, bir gecede inşa olmuyor. Yeni bir IP ise, onu yavaşça ısıtmak gerekiyor. İlk günlerde, gerçekten e‑postanı bekleyen, senden duymaya alışık bir alıcı grubuna gönder. Bu, alıcı taraf davranışlarına olumlu sinyal verir; açılma ve etkileşim başı sıvazlar. Sonra hacmi çok yavaş büyüt. Hızlı zıplamalar, hele hele bir anda kalın bir liste, hemen duvar örer. Mesela şöyle düşün: İlk hafta nazik bir yürüyüş, ikinci hafta tempolu adım; koşu ileride.

Altyapı düzeni: SPF, DKIM, DMARC ve rDNS dörtlüsü

DNS tarafında SPF/DKIM/DMARC temiz, rDNS birebir eşleşmiş olsun. Gönderen alan adınla DKIM’inin “d=” alanı uyumlu kalsın. “From” ve “Return‑Path” dağılmasın. Bu küçük detayı ihmal eden çok olur, sonra “neden spam?” diye sorarlar. Bir de içerik tarafında sade ve net olmayı unutma; gereksiz link çokluğu, garip ekler, tek görselden ibaret postalar risklidir.

İtibar panelleri: Ölçmezsen iyileştiremezsin

Gönderen sağlığını izlemek için Gmail Postmaster Tools üzerinden gönderen itibarınızı izlemek güzel bir başlangıç. Microsoft tarafında ise Microsoft’un SNDS panelinden IP sağlığını kontrol etmek yol gösterir. Buralar, geri bildirim döngüleri ve istenmeyen posta şikayetleri gibi sinyalleri önüne koyar. Kapıda bekçisi çok olan mahalledeyiz; komşular ne diyor, duymak lazım.

IP Isıtma: Küçük Adımlar, Temiz Loglar, Tutarlı Rutin

Günün planı: Az, ilgili ve özenli

IP ısınırken en sevdiğim kural şu: Az gönder, ilgili gönder, tutarlı gönder. Her gün aynı saatlerde küçük partiler. İlk halka gerçek kullanıcıların olduğu, seninle iletişim kurmayı bekleyen adresler. Geri dönüş alamadığın bir grubu ısrarla zorlamamak, liste sağlığını korur. Tıpkı spor yaparken eklem saklamayan ritim gibi; tutarlılık bütün işi değiştirir.

Hatalarla barış: Soft bounce başka, hard bounce başka

Geri dönen postalar ikiye ayrılır. Sunucu meşgul gibi geçici nedenler “soft bounce” der; sonra tekrar deneyebilir. “Böyle bir adres yok” gibi kalıcı nedenler “hard bounce” olur; bu adresi listeden çıkar. Bu ayrımı düzgün yönetmek, itibarın can simidi. rspamd ve Postfix logları zaten neyin ne olduğunu söyler; bir de “nedenleri not alayım” dersen, kendi küçük ısıtma günlüğün olsun, ileride çok iş görür.

Güvenlik ve Sağlamlık: Kapıları Açık Bırakmadan Misafir Ağırlamak

UFW, Fail2ban ve basit sınırlar

Güvenlik duvarında sadece ihtiyacın olan portlar açık kalsın. 587 ve 993 dış dünya için, 25 ise MTA’lar arası konuşma için dursun. Kaba kuvvet girişimlerini törpülemek için fail2ban eklemek iyi fikirdir. Bunu kurarken ipuçları ararsan, UFW ve Fail2ban’ı tatlı tatlı kurma üzerine bu güvenlik rehberindeki püf noktalarını sevebilirsin; konu WordPress diye geçme, sistem tarafı aynıdır.

Hız ve limitler: Abartma, ayarında kal

Postfix’in küçük limitleri bazen hayat kurtarır. Bir istemcinin çok hızlı çok mail atmasını sevmeyiz. Aşırı uçlarda kalmadan, ritmi yumuşatmak için şu fikirler cebinde dursun: “anvil” süre birimiyle saniyeyi büyütmek, istemci başına mesaj limitini ufak tutmak, bir anda bağlantı sayısını kısmak. Hepsi ayrı birer emniyet supabı gibi çalışır. Hacim büyüdüğünde gerçek hayatta “bunu biraz kısalım” dediğin ilk nokta burası oluyor.

Sık Karşılaşılan Tuzaklar: Yolda Taş Varsa Erken Fark Edelim

Port 25 kapalıysa

Bazı sağlayıcılar port 25’i kapatır. Bu durumda giden posta için bir SMTP relay kullanabilirsin; ya da sağlayıcı desteğine ulaşıp açtırmayı denersin. Relay kullanırken DKIM/DMARC hizalamasını korumaya dikkat et, yoksa kendi doğrulamalarının faydasını göremeyebilirsin.

rDNS ve hostname uyuşmazlığı

Gönderici IP’nin rDNS’i “mail.example.com” değilse ya da host adınla çatışıyorsa, birçok alıcı kapıdan çevirir. Sağlayıcı panelinden rDNS’i düzeltmek çoğu zaman tek tık. Sonra bir test postası at, logda “reverse mapping” itirazlarının susup susmadığını gör.

DMARC raporları göz ardı edilirse

Raporlar bazen sıkıcı görünür ama orada altın var. Hangi alt alan adları nasıl davranmış, DKIM nerede patinaj çekmiş, hepsi çıkar. Bu raporları yol haritasına dönüştürmeden “p=reject” demek cesaret ister. Aceleye gerek yok; önce gözlem, sonra sıkılaştırma. Tekrar hatırlatayım, ayrıntı meraklısına DMARC ve BIMI üzerine adım adım bir rehber var.

Küçük Otomasyonlar: Aynı Adımları İki Kez Yazma

DNS ve altyapı tekrarları

Her yeni alan adında aynı SPF/DKIM/DMARC kayıtlarını elle yazmak bir süre sonra başa bela olur. “Kodla yönet, hızlı yaşa” mantığını seviyorsan, Terraform ile VPS ve DNS otomasyonu tam aradığın şey olabilir. Bir kez şablonlayıp, yeni projelerde tekrar tekrar çağırırsın. Sunucu tarafında da cloud‑init ve Ansible ile tekrar üretilebilir VPS yaklaşımı, Postfix/Dovecot/rspamd üçlüsünü “oynat” demeye kadar getirir.

DNS ve Sertifikalar: Bir Defa Kur, Hep Rahat Et

Örnek kayıtlar

Özet mahiyetinde, bir alan adı için şu örnekleri düşünebilirsin:

# A kaydı
mail.example.com. IN A 203.0.113.10

# MX kaydı
example.com. IN MX 10 mail.example.com.

# PTR/rDNS (sağlayıcı panelinden): 203.0.113.10 -> mail.example.com

# SPF (TXT)
example.com. IN TXT "v=spf1 mx a:mail.example.com ~all"

# DKIM (TXT)
default._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=..."

# DMARC (TXT)
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1"

Sertifikada Let’s Encrypt işini severim; yenileme otomatik olur. Web sunucun yoksa bile standalone veya DNS doğrulamayla alabilirsin. Dovecot ve Postfix’e aynı sertifikayı gösterdiğinde, istemcilerin “güven” ışığını hemen yakar.

Gerçek Dünyadan Minik Bir Akış: İlk Haftanın Ritmi

1. gün: Sade test, kendine mektup

Önce kendine, farklı alıcı kutularına (kişisel, iş, bir iki ücretsiz servis) küçük notlar yolla. Konu ve içerik doğal, link az, ek yok. “Merhaba, bu bir testtir; cevap verirsen sevinirim” kadar samimi ve kısa. Dönüş alıyorsan yol açık.

2–4. gün: Tanıdık halka, az ama düzenli

Gerçekten bekleyen küçük bir kitleye günlük aynı saatlerde gönder. Hacmi büyütme, ritmi koru. Spam şikayetleri yoksa, açılma iyi gidiyorsa ufak ufak artır. Tutan düzeni bozma; itibar panellerini kontrol et.

5–7. gün: İçeriği çeşitlendirmek

Basit bir duyuru, bir rehber linki, minik bir görsel… Ama her şey ölçülü. Bu sırada bounce’ları not et, geçici ve kalıcı ayrımına göre listeni temizle. Bir bakmışsın, ikinci haftaya eli yüzü düzgün bir itibarla giriyorsun.

Sorun Giderme: Birkaç Komut, Birkaç Püf

Çıkış testi ve içerik başlığı

Komut satırında swaks kullanmak pratik:

sudo apt install swaks
swaks --to [email protected] --from [email protected] --server mail.example.com:587 
  --auth-user [email protected] --auth-password 'parola' --tls

Başlıkların düzgün, DKIM imzasının eklendiğini, SPF’in “pass” verdiğini gör. Bu üçlü düzgünse kalan çoğu mesele içerik ve itibar tarafında düzelir. Bir de gönderen alan adının süresi yaklaşmış mı, gözden kaçmasın; bu konuyu merak edersen alan adının süresi dolarsa ne olur, adım adım yol haritası yazısı huzur verir.

Kapanış: Evdeki Fırını Isıtmak

VPS üzerinde Postfix + Dovecot + rspamd kurup ilk postayı uçurmak, sanıldığı kadar ürkütücü değil. Birkaç temel taş yerine oturunca, işin büyüsü teslim edilebilirlik ve itibar yönetiminde yatıyor. Acele etmeden, her gün küçük ama düzenli adımlarla ilerlediğinde IP ısınır, alıcılar seni tanır ve posta kutuları kapılarını açar. İlk günlerde testleri ihmal etme; loglara kulak ver, DMARC raporlarını cebe at, içerikte sade ol. Günün sonunda aradığın duygu şu: “Kontrol bende.”

Bu rehberi kapatırken sana minik bir hatırlatma bırakayım. Otomasyonu ufaktan dene; Terraform ve Ansible yaklaşımları ileride çok zaman kazandırır. Güvenlikte kapıları aralık değil, ayarında tut; UFW ve Fail2ban gibi küçük yardımcılar huzur verir. Ve en önemlisi, gönderdiğin e‑postanın diğer ucunda gerçekten bir insan var; ilgili, net ve saygılı olursan, teknik taraf zaten yolunu açıyor. Umarım bu yazı işine yarar; bir sonraki yazıda daha da derine dalarız, görüşmek üzere.

Sıkça Sorulan Sorular

Evet, tutarlı bir saat ve ritim fayda sağlar. Küçük partiler hâlinde, gerçekten sizi bekleyen alıcılara düzenli gönderim yapın. Hızlı hacim artışlarından kaçınmak itibar için en güvenli yoldur.

Önce SPF, DKIM ve DMARC kayıtlarının düzgün çalıştığını doğrulayın. Ardından rDNS ve host adınızın uyuştuğundan emin olun. İçeriği sadeleştirip gereksiz link ve ekleri azaltmak da çoğu zaman hızlı sonuç verir.

Kullanabilirsiniz ama giden postalar için bir SMTP relay’e ihtiyaç duyarsınız. Alternatif olarak sağlayıcınıza başvurup portu açtırmayı deneyin. Hangi yolu seçerseniz seçin, DKIM ve DMARC hizalamasını korumaya dikkat edin.