Postal, kendi mail gönderim altyapınızı kurmak istediğinizde karşınıza çıkan en olgun açık kaynak seçeneklerden biri. Ticari gönderim servislerinin yaptığı işi — API ve SMTP üzerinden mesaj kabul etmek, kuyruğa almak, teslim etmek, dönenleri ve tıklamaları izlemek, alan adı bazında DKIM imzalamak — kendi sunucunuzda yapar. Yani bir bülten yazılımı değil, o yazılımların arkasına koyduğunuz gönderim motorudur.
Bu rehberde Postal'ı sıfır bir sunucuya kurmayı anlatıyorum: kuruluma başlamadan önce doğrulamanız gereken ön koşullar (özellikle 25. port ve rDNS), Docker tabanlı kurulumun adımları, alan adı doğrulaması için gereken DNS kayıtları, mail sunucusu ve kimlik bilgisi oluşturma, uygulamanızı SMTP ya da API ile bağlama, ve üretimde karşılaşacağınız bakım işleri. Baştan uyarayım: bu iş, bir uygulama kurmaktan çok bir altyapı işletmeye benziyor.
Postal Ne İşe Yarar, Ne Zaman Gerekir#
Postal'ı doğru katmana yerleştirmek önemli. Mautic, MailWizz ya da kendi uygulamanız ne göndereceğine karar verir; Postal ise nasıl teslim edileceğiyle ilgilenir. İkisi birbirinin alternatifi değildir, üst üste çalışır.
Postal'ın size verdiği şeyler: alan adı bazında DKIM imzalama, gönderim kuyruğu ve yeniden deneme mantığı, dönen maillerin (bounce) otomatik sınıflandırılması, açılma ve tıklama izleme, webhook bildirimleri, ve gönderim hacminizi organizasyon/mail sunucusu düzeyinde ayırma imkânı. Ticari bir gönderim servisi kullanmak yerine bunu kendiniz işletmenin iki gerçek gerekçesi vardır: maliyet ve veri sahipliği.
Karşılığında üstlendiğiniz sorumluluk da net: IP itibarını siz yönetirsiniz, kara liste takibini siz yaparsınız, sunucu güvenliği ve yedeği sizde olur. Aylık birkaç bin mail gönderiyorsanız bu yük genellikle değmez; düzenli ve yüksek hacimli gönderim yapıyorsanız değer.
| Katman | Sorumluluk | Örnek |
|---|---|---|
| Kampanya yazılımı | İçerik, segment, zamanlama | Mautic, MailWizz, Listmonk |
| Gönderim motoru | Kuyruk, teslimat, DKIM, izleme | Postal |
| Ağ ve itibar | IP, rDNS, kara liste takibi | Sunucu sağlayıcınız ve siz |
Ön Koşullar: Port 25, rDNS ve Kaynaklar#
Kuruluma başlamadan önce üç şeyi doğrulayın; bunlardan biri eksikse kurulum tamamlanır ama tek bir mail teslim edilemez.
1. Giden 25. port açık olmalı. Postal, alıcı posta sunucularına doğrudan 25. porttan bağlanır. Birçok sağlayıcı bu portu kötüye kullanımı önlemek için varsayılan olarak kapatır; açtırmak genellikle bir destek talebi gerektirir. Test edin:
# Herhangi bir posta sunucusunun 25. portuna ulaşabiliyor musunuz
nc -zv gmail-smtp-in.l.google.com 25
# Beklenen: "succeeded" veya "open"
# "Connection timed out" görüyorsanız port kapalıdır, kuruluma başlamayın.
2. rDNS (PTR) kaydı doğru olmalı. Sunucunuzun IP'si, kullanacağınız posta ismine geri çözümlenmeli ve o isim de aynı IP'ye ileri çözümlenmelidir. Bu ikisi tutmuyorsa birçok büyük sağlayıcı bağlantınızı doğrudan reddeder.
dig -x 185.12.34.56 +short # postal.firmaniz.com. dönmeli
dig postal.firmaniz.com A +short # 185.12.34.56 dönmeli
3. Kaynak ve yazılım. Postal, Docker üzerinde MariaDB ve RabbitMQ ile birlikte çalışır. Başlangıç için 2 vCPU ve 4 GB RAM makul bir alt sınırdır; hacim arttıkça RAM ihtiyacı önce artar.
# Docker ve derleme araçları
sudo apt update
sudo apt install -y git curl
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
Kurulum: Bootstrap ve İlk Kullanıcı#
Postal, kurulum ve işletim komutlarını tek bir yardımcı araç üzerinden sunar.
# Kurulum deposunu al ve komutu yola bağla
sudo git clone https://github.com/postalserver/install /opt/postal/install
sudo ln -s /opt/postal/install/bin/postal /usr/bin/postal
# Yapılandırmayı üret (panel için kullanacağınız tam alan adı)
sudo postal bootstrap postal.firmaniz.com
# Veritabanı şemasını kur
sudo postal initialize
# İlk yönetici kullanıcısını oluştur (etkileşimli sorar)
sudo postal make-user
# Servisleri başlat
sudo postal start
sudo postal status
bootstrap komutu /opt/postal/config/ altında postal.yml dosyasını, imzalama anahtarını ve bir ters vekil yapılandırmasını üretir. Bu dizin sizin en kritik yedek hedefinizdir: imzalama anahtarını kaybederseniz mevcut kimlik bilgileri geçersiz hale gelir.
postal.yml içinde ilk gözden geçirmeniz gereken alanlar şunlar:
web:
host: postal.firmaniz.com
dns:
mx_records:
- mx.postal.firmaniz.com
smtp_server_hostname: postal.firmaniz.com
spf_include: spf.postal.firmaniz.com
return_path_domain: rp.postal.firmaniz.com
route_domain: routes.postal.firmaniz.com
track_domain: track.postal.firmaniz.com
Bu isimleri değiştirebilirsiniz ama değiştirirseniz DNS tarafında da aynı isimleri kullanmanız gerekir. Varsayılanlarla devam etmek, sonraki adımı çok basitleştirir.
DNS Kayıtları#
Postal, gönderim yapacağınız her alan adını doğrulamanızı ister ve size gerekli kayıtları arayüzde gösterir. Yapı kabaca şöyledir:
; Panel ve SMTP sunucusunun kendisi
postal.firmaniz.com. 3600 IN A 185.12.34.56
; Return-Path (dönen mailleri Postal'in toplayabilmesi icin)
rp.postal.firmaniz.com. 3600 IN MX 10 mx.postal.firmaniz.com.
mx.postal.firmaniz.com. 3600 IN A 185.12.34.56
; SPF: gonderen alan adinizin kaydina Postal'i dahil edin
firmaniz.com. 3600 IN TXT "v=spf1 include:spf.postal.firmaniz.com ~all"
; DKIM: Postal'in urettigi genel anahtar
postal._domainkey.firmaniz.com. 3600 IN TXT "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkq..."
; Tiklama ve acilma izleme alan adi
track.firmaniz.com. 3600 IN CNAME track.postal.firmaniz.com.
DKIM kaydını komut satırından da alabilirsiniz:
sudo postal default-dkim-record
İki noktaya dikkat edin. Birincisi, SPF kaydınız tek olmalıdır; alan adınızda zaten bir SPF varsa yeni bir satır eklemek yerine mevcut kaydın içine include eklemelisiniz. İki ayrı SPF TXT kaydı, doğrulamanın tamamen başarısız olmasına yol açar. İkincisi, DKIM anahtarı uzun olduğu için TXT değeri 255 karakter sınırına takılabilir; DNS sağlayıcınız parçalamayı otomatik yapmıyorsa değeri elle bölmeniz gerekir — ayrıntısı DKIM TXT kaydı 255 karakter sınırı yazısında.
Kayıtları ekledikten sonra yayılmayı bekleyin ve arayüzdeki doğrulama düğmesine basın. Doğrulama geçmeden gönderim yapmayın; imzasız çıkan mesajlar teslimatınızı ilk günden bozar.
Mail Sunucusu ve Kimlik Bilgileri Oluşturma#
Postal'ın nesne hiyerarşisi üç katmanlıdır: Organization → Mail Server → Credential. Bu ayrım işinize yarar; farklı projeleri ya da müşterileri ayrı mail sunucularına bölerek istatistiklerini ve gönderim izinlerini ayırırsınız.
- Panele giriş yapıp bir organizasyon oluşturun.
- Organizasyon altında bir mail sunucusu ekleyin (
bulten,islemselgibi). - Mail sunucusunun
Domainsbölümünden gönderen alan adınızı ekleyip doğrulayın. Credentialsbölümünden bir SMTP kimlik bilgisi ya da API anahtarı üretin.- Gerekirse
Webhooksbölümünden dönen mail ve tıklama bildirimlerini kendi uygulamanıza yönlendirin.
İşlemsel maillerinizi ve kampanya maillerinizi ayrı mail sunucularına koymanızı öneririm. Böylece kampanya trafiğinde bir sorun çıktığında şifre sıfırlama ve sipariş bildirimi gibi kritik mesajlarınız aynı kuyruktan etkilenmez, istatistiklerini de ayrı okursunuz.
Uygulamanızı Bağlamak: SMTP ve API#
Postal iki arayüz sunar. SMTP arayüzü, mevcut yazılımınızı hiç değiştirmeden bağlamanızı sağlar:
| Ayar | Değer |
|---|---|
| Sunucu | postal.firmaniz.com |
| Port | 25 veya 587 |
| Şifreleme | STARTTLS |
| Kullanıcı adı | Mail sunucusunun kimlik bilgisi adı |
| Parola | Panelde üretilen anahtar |
Bağlantıyı doğrudan sınayın:
swaks --to [email protected] --from [email protected] \
--server postal.firmaniz.com:587 --tls \
--auth-user postal-kullanici --auth-password 'panelde-uretilen-anahtar'
API arayüzü ise kendi uygulamanızdan gönderim yapıyorsanız daha kullanışlıdır; teslimat kimliğini yanıt olarak alır ve mesajı sonradan takip edebilirsiniz:
curl -sS -X POST https://postal.firmaniz.com/api/v1/send/message \
-H "X-Server-API-Key: PANELDE-URETILEN-ANAHTAR" \
-H "Content-Type: application/json" \
-d '{
"to": ["[email protected]"],
"from": "[email protected]",
"subject": "Test mesaji",
"plain_body": "Merhaba, bu bir test mesajidir."
}'
Yanıtta dönen mesaj kimliğini kendi tarafınızda saklarsanız, teslimat durumunu ve dönüş bilgisini sonradan webhook üzerinden eşleştirebilirsiniz.
İzleme, Bakım ve Sık Yapılan Hatalar#
Üretimde takip etmeniz gereken üç şey var: kuyruk uzunluğu, dönüş oranı ve IP itibarı. Kuyruk sürekli büyüyorsa ya alıcı taraf sizi yavaşlatıyordur ya da bir yapılandırma hatası vardır.
# Servislerin durumu
sudo postal status
# Kayıtları izle (sorun anında ilk bakılacak yer)
cd /opt/postal/install && sudo docker compose logs -f --tail=200
# Sürüm yükseltme
sudo postal stop
sudo postal upgrade
sudo postal start
IP itibarı tarafında Outlook için SNDS paneline kaydolmak neredeyse zorunludur; kurulumu ve rapor sütunlarının okunmasını Microsoft SNDS kaydı yazısında anlattım.
En sık yapılan hatalar şunlar. Birincisi, 25. portun kapalı olduğunu kurulumdan sonra fark etmek: her şey doğru görünür, kuyruk dolar ve hiçbir mesaj çıkmaz. İkincisi, rDNS kaydını ayarlamamak; birçok sağlayıcı bağlantıyı daha ilk selamlamada reddeder.
Üçüncüsü, alan adına ikinci bir SPF kaydı eklemek. Dördüncüsü, DKIM doğrulamasını beklemeden gönderime başlamak: imzasız çıkan ilk kampanya, henüz hiç geçmişi olmayan bir IP'nin itibarını doğrudan yakar. Beşincisi, işlemsel ve kampanya trafiğini aynı mail sunucusunda toplamak.
Altıncısı ve en pahalısı, ısınma yapmadan tam hacimle başlamaktır. Yeni bir IP'nin geçmişi yoktur; ilk günlerde küçük ve en kaliteli segmentinize gönderip hacmi birkaç hafta boyunca kademeli artırın. Yedinci olarak, /opt/postal/config dizinini ve veritabanını yedeklemeyi ilk günden rutine bağlayın.
Sıkça Sorulan Sorular#
Postal ücretsiz mi#
Evet, Postal açık kaynaklıdır ve yazılım için ücret ödemezsiniz. Gerçek maliyetiniz sunucu, IP ve işletme zamanınızdır. Buna karşılık gönderdiğiniz mesaj başına ücret ödemezsiniz; bu da yüksek hacimli gönderimlerde ticari servislere göre belirgin bir fark yaratır. Düşük hacimde ise işletme yükü genellikle tasarrufu aşar.
Postal ile Postfix arasındaki fark ne#
Postfix genel amaçlı bir posta sunucusudur; hem gelen hem giden postayı yönetir ve posta kutusu barındırma senaryolarının temelidir. Postal ise özellikle giden uygulama postası için tasarlanmıştır: API arayüzü, mesaj bazında izleme, alan adı bazında DKIM yönetimi ve webhook bildirimleri sunar. Kurumsal posta kutuları için Postfix, uygulama ve kampanya gönderimi için Postal daha uygundur.
Port 25 kapalıysa ne yapabilirim#
Sağlayıcınızdan açmasını talep etmeniz gerekir; bu genellikle kullanım amacınızı açıkladığınız bir destek talebiyle çözülür. Port açılmadan Postal alıcı sunuculara doğrudan teslimat yapamaz. Alternatif olarak Postal'ı bir üst akış SMTP sunucusu üzerinden çıkacak biçimde yapılandırabilirsiniz, ama bu durumda teslimat itibarı o üst akış sağlayıcısının olur ve kendi IP'nizi yönetme avantajınızı kaybedersiniz.
Yeni bir IP ile ne kadar sürede tam hacme çıkabilirim#
Genel kabul gören yaklaşım, birkaç hafta süren kademeli bir ısınmadır. İlk günlerde en aktif ve en kaliteli segmentinize düşük hacimle gönderin, dönüş ve şikâyet oranlarını izleyerek her gün hacmi bir miktar artırın. Aceleci bir artış, henüz geçmişi olmayan IP'nin doğrudan filtrelenmesine yol açar ve toparlanması haftalar sürer.
Dönen mailleri Postal nasıl işliyor#
Postal, gönderdiği her mesaj için kendi return-path alan adı üzerinden benzersiz bir dönüş adresi kullanır. Alıcı sunucu bir hata döndürdüğünde bu adres üzerinden mesajı alır, kalıcı mı geçici mi olduğunu sınıflandırır ve arayüzde ilgili mesajın durumunu günceller. Webhook tanımlarsanız aynı bilgiyi kendi uygulamanıza da iletir; abone listenizi bu bildirimlerle otomatik temizleyebilirsiniz.
Postal kurulumu için hangi sunucu yeterli#
Başlangıç için 2 vCPU ve 4 GB RAM makul bir alt sınırdır; MariaDB ve RabbitMQ ile birlikte çalıştığı için 2 GB'lık bir sunucu sıkışır. Hacim büyüdükçe önce RAM, sonra disk performansı belirleyici olur. Kritik olan bir diğer nokta ise IP'dir: temiz geçmişi olan, rDNS kaydı ayarlanabilen ve 25. portu açık bir IP'ye sahip olmanız gerekir.
Kapanış#
Postal, gönderim altyapısını kiralamak yerine işletmek isteyenler için sağlam bir seçenek; ama sorumluluğun da sizde olduğu bir seçenek. Aklınızda kalması gereken dört alışkanlık şu: kuruluma başlamadan önce 25. portu ve rDNS kaydını mutlaka doğrulayın, SPF kaydınızı tek satırda tutup DKIM doğrulamasını geçmeden gönderime başlamayın, işlemsel ve kampanya trafiğini ayrı mail sunucularına bölün, ve yeni IP'yi haftalara yayılan kademeli bir ısınmayla açın. /opt/postal/config dizini ile veritabanı yedeğini de ilk günden rutine bağlayın.
Bu altyapıyı çalıştırmak için temiz IP'li ve root erişimli bir sunucuya ihtiyacınız var. VDS ve bulut sunucu paketlerimiz Postal için uygun bir zemin sunar; hazır yapılandırılmış bir gönderim yığınıyla başlamak isterseniz Postfix, DKIM ve TLS ayarları kurulu gelen SMTP sunucu paketlerimize bakabilirsiniz. Sunucu bakımını üstlenmemizi isterseniz sunucu yönetimi, kampanya tarafını komple devretmek isterseniz e-posta pazarlama hizmetimiz hazır.