E-posta & SMTP Sunucu

    SMTP Relay Nedir, Nasıl Kurulur

    SMTP relay mantığı, Postfix ile relayhost kurulumu ve açık relay tuzağından kaçınma.

    10 dk okuma Güncellendi: 25 Ağustos 2026

    Uygulama sunucundan çıkan şifre sıfırlama mailleri Gmail'e ulaşmıyorsa, ya da beş farklı sunucunun her birinde ayrı ayrı mail ayarı tutmaktan bıktıysan, aradığın şey SMTP relay'dir. SMTP relay, kısaca, maili doğrudan alıcının sunucusuna teslim etmek yerine önce güvendiğin bir aracı SMTP sunucusuna teslim etmek demektir; teslimatın geri kalanını o aracı üstlenir. Bu tek mimari karar, teslimat oranından IP itibarına, günlük yönetimden log takibine kadar pek çok şeyi tek noktada toplar.

    Bu yazıda önce relay'in ne olduğunu ve ne zaman gerçekten gerektiğini netleştireceğim; sonra iki yönlü kurulumu anlatacağım: Postfix'i başka bir relay'e gönderen taraf olarak yapılandırmak ve kendi sunucunu iç ağ için relay hizmeti veren taraf hâline getirmek. Port ve TLS seçimlerini, SASL kimlik doğrulamasını, açık relay tuzağını ve log üzerinden sorun gidermeyi gerçek yapılandırma satırlarıyla göstereceğim. Sonunda elinde çalışan ve kötüye kullanılamayacak bir relay yapılandırması olacak.

    SMTP Relay Nedir, Ne İşe Yarar#

    Normal şartlarda bir mail sunucusu, alıcının alan adının MX kaydına bakar ve mesajı doğrudan o sunucuya teslim etmeye çalışır. Buna doğrudan teslimat denir. SMTP relay'de ise bu zincire bir ara durak eklenir: senin sunucun mesajı aracı sunucuya verir, aracı sunucu da alıcının MX'ine ulaştırır. Aracı, mesajı kabul edip kuyruğuna aldığı anda senin sorumluluğun büyük ölçüde biter.

    Bu ara durağın üç somut faydası vardır. Birincisi teslimat: aracı sunucunun IP'si genellikle uzun süredir kullanılan, itibarı oturmuş bir adrestir; senin yeni sunucunun sıfırdan itibar kazanmasına gerek kalmaz. İkincisi merkezîlik: on farklı uygulama sunucusunun her birinde ayrı DKIM anahtarı, ayrı SPF kaydı ve ayrı kuyruk yönetmek yerine hepsi tek bir relay'e konuşur, kimlik doğrulama ve log tek yerde toplanır. Üçüncüsü ağ kısıtları: birçok veri merkezi ve bulut sağlayıcısı 25. portu dışarıya kapatır; relay kullanmak bu kısıtı 587 üzerinden aşmanın meşru yoludur.

    [Uygulama sunucusu] --587/TLS--> [SMTP Relay] --25--> [Alıcının MX sunucusu]
         senin kodun            kimlik doğrulamalı        doğrudan teslimat
    

    Relay'in maliyeti ise şeffaflığın bir kısmını kaybetmendir: mesaj aracıya geçtikten sonra teslim edilip edilmediğini kendi logundan göremezsin, aracının raporlarına bakman gerekir. Bu yüzden relay seçerken log ve bounce raporu sunup sunmadığına bakmalısın.

    Ne Zaman Relay Kullanmalısın#

    Her sunucunun relay'e ihtiyacı yoktur. Şu durumlardan birindeysen relay doğru karardır:

    SenaryoRelay gerekli miNeden
    Web uygulaması bildirim maili gönderiyorEvetUygulama sunucusunun IP itibarı yok
    Birden fazla sunucu mail gönderiyorEvetTek noktadan kimlik doğrulama ve log
    Bulut sağlayıcı 25. portu kapatmışEvet587 üzerinden meşru çıkış
    Kurumsal posta kutusu sunucun varGenelde hayırZaten kendi MTA'sı teslim ediyor
    Günde 5 mail gönderen küçük siteOpsiyonelBasit kurulumla da çözülür
    Toplu pazarlama mailiEvet, özel servisAyrı IP havuzu ve raporlama gerekir

    Uygulama maillerinin neden ayrı ele alınması gerektiğini ve pazarlama mailinden farkını işlemsel e-posta nedir yazısında ayrıntılı anlattım. Relay yerine sağlayıcının HTTP API'sini kullanmayı da düşünüyorsan, iki yöntemin karşılaştırmasını SMTP mi API mi yazısında bulabilirsin.

    Postfix'i Relay Üzerinden Gönderecek Şekilde Yapılandırma#

    En yaygın senaryo budur: sunucunda Postfix var, mailleri kendisi teslim etmeye çalışıyor ve sen bunu bir relay'e devretmek istiyorsun. İlgili ayar relayhost parametresidir; yanına kimlik doğrulama ve TLS eklemen gerekir.

    # /etc/postfix/main.cf
    
    # Aracı sunucu ve port. Köşeli parantez MX sorgusunu ATLAR — şart.
    relayhost = [smtp.saglayici.com]:587
    
    # SASL kimlik doğrulamasını aç
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_sasl_tls_security_options = noanonymous
    
    # TLS'i zorunlu kıl — parolayı düz metin göndermemek için kritik
    smtp_tls_security_level = encrypt
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
    
    # Kuyrukta bekleyen mesaj için yeniden deneme aralığı
    smtp_connection_cache_on_demand = no
    

    Köşeli parantez ayrıntısını atlama: relayhost = [smtp.saglayici.com]:587 yazdığında Postfix o ismin A kaydına doğrudan bağlanır. Parantezsiz yazarsan Postfix önce o ismin MX kaydını sorgular, bulamazsa bağlanamaz. Bu, relay kurulumlarında en sık yaşanan sessiz hatadır.

    Kimlik bilgilerini ayrı bir dosyada tutar ve karma tabloya çevirirsin:

    # Kullanıcı adı ve parolayı yaz (relayhost satırıyla BİREBİR aynı yazım)
    echo "[smtp.saglayici.com]:587 [email protected]:GucluParola" \
      > /etc/postfix/sasl_passwd
    
    # Dosyayı kilitle — parola içeriyor
    chmod 600 /etc/postfix/sasl_passwd
    chown root:root /etc/postfix/sasl_passwd
    
    # Postfix'in okuyabileceği .db biçimine çevir
    postmap /etc/postfix/sasl_passwd
    
    # Yapılandırmayı yeniden yükle
    systemctl reload postfix
    

    Debian/Ubuntu'da SASL istemci kütüphaneleri kurulu değilse kimlik doğrulama sessizce başarısız olur; apt install libsasl2-modules ile kurmayı unutma. Test etmenin en hızlı yolu swaks aracıdır:

    # Relay üzerinden gerçek bir test maili gönder
    swaks --to [email protected] \
          --from [email protected] \
          --server smtp.saglayici.com:587 \
          --auth LOGIN --auth-user [email protected] \
          --tls
    
    # Ya da doğrudan yerel Postfix üzerinden
    echo "Relay testi" | mail -s "Test" [email protected]
    tail -f /var/log/mail.log
    

    Elinde swaks yoksa ya da hangi komutu çalıştıracağından emin değilsen, SMTP test aracı port/TLS uyumunu kontrol edip sana kopyalayıp yapıştırabileceğin openssl ve swaks komutlarını üretir.

    Kendi Relay Sunucunu Kurmak#

    İkinci senaryo, kendi sunucunu iç ağdaki diğer makineler için relay hâline getirmektir. Burada Postfix'i gönderen değil kabul eden taraf olarak yapılandırırsın ve tek kritik soru şudur: kimin mail göndermesine izin veriyorsun?

    # /etc/postfix/main.cf — relay hizmeti veren sunucu
    
    myhostname = relay.firmaniz.com
    mydestination = localhost
    
    # Kimlik doğrulamasız güvenilecek ağlar — DAR tutulmalı
    mynetworks = 127.0.0.0/8, 10.10.0.0/24
    
    # Relay yetkisi kuralları — sıralama önemli
    smtpd_relay_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        defer_unauth_destination
    
    # Alıcı kabul kuralları
    smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination
    
    # Gelen bağlantılarda TLS sun
    smtpd_tls_security_level = may
    smtpd_tls_cert_file = /etc/letsencrypt/live/relay.firmaniz.com/fullchain.pem
    smtpd_tls_key_file  = /etc/letsencrypt/live/relay.firmaniz.com/privkey.pem
    
    # Kimlik doğrulamayı yalnızca şifreli oturumda kabul et
    smtpd_sasl_auth_enable = yes
    smtpd_tls_auth_only = yes
    
    # Mesaj boyutu üst sınırı (25 MB)
    message_size_limit = 26214400
    

    Buradaki defer_unauth_destination satırı sunucunun kalkanıdır: yetkisiz bir istemci senin üzerinden dışarıya mail atmaya kalktığında istek reddedilir. Sertifikayı henüz kurmadıysan Postfix'e Let's Encrypt TLS sertifikası kurma yazısındaki adımları önce tamamla; TLS olmadan SASL kimlik doğrulaması parolayı ağ üzerinde açık taşır.

    Yapılandırmayı yükledikten sonra 587 portunu master.cf içinde açtığından emin ol:

    # /etc/postfix/master.cf — submission (587) servisi
    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
    

    Port Seçimi ve TLS Modu#

    Relay kurulumlarında yaşanan bağlantı sorunlarının yarısı yanlış port/TLS eşleşmesinden çıkar. Üç port ve iki TLS modu vardır; hangisinin hangisiyle çalıştığını bilmek gerekir:

    PortTLS moduKullanımNot
    25STARTTLS (opsiyonel)Sunucudan sunucuya teslimatBulut sağlayıcıları sık kapatır
    587STARTTLS (zorunlu)İstemci/uygulama gönderimiStandart submission portu, ilk tercih
    465Örtük TLS (SMTPS)İstemci gönderimiBağlantı en baştan şifreli açılır
    2525STARTTLSAlternatifStandart değil, bazı sağlayıcılar sunar

    Kural basittir: 465 kullanıyorsan STARTTLS deme, 587 kullanıyorsan örtük TLS deme. İkisini karıştırmak, istemcinin el sıkışma sırasında takılıp zaman aşımına düşmesine yol açar ve log'da anlamsız görünen bir hata bırakır. Bağlantının gerçekten şifreli açılıp açılmadığını şöyle görürsün:

    # 587 + STARTTLS testi
    openssl s_client -connect smtp.saglayici.com:587 -starttls smtp
    
    # 465 + örtük TLS testi
    openssl s_client -connect smtp.saglayici.com:465
    

    Çıktıda Verify return code: 0 (ok) görüyorsan sertifika zinciri de sağlıklıdır.

    Açık Relay Tuzağı ve Güvenlik#

    Kendi relay sunucunu kuruyorsan bilmen gereken en tehlikeli hata açık relay (open relay) bırakmaktır. Açık relay, kimlik doğrulaması yapmadan herkesin senin sunucun üzerinden istediği adrese mail göndermesine izin veren yapılandırmadır. Bunu bırakırsan sunucun saatler içinde spam botları tarafından bulunur, IP'n kara listelere düşer ve gerçek mailerin de teslim edilmez olur. Toparlanması haftalar sürer.

    En sık yapılan hata mynetworks alanını geniş tutmaktır. mynetworks = 0.0.0.0/0 yazmak sunucunu doğrudan açık relay yapar; mynetworks_style = subnet bırakmak da bulut ortamlarında beklediğinden çok daha geniş bir aralığa güvenmene yol açabilir. Kendi durumunu şöyle test edersin:

    # Dışarıdan bir makineden, kimlik doğrulaması OLMADAN dene
    swaks --to [email protected] --from [email protected] \
          --server relay.firmaniz.com:25
    
    # Beklenen cevap:
    # 554 5.7.1 <[email protected]>: Relay access denied
    

    "Relay access denied" görüyorsan yapılandırman doğrudur. Mesaj kabul edildiyse derhal smtpd_relay_restrictions satırını düzelt ve mynetworks içeriğini daralt. Ek koruma katmanı olarak güvenlik duvarında 25 ve 587 portlarını yalnızca gerçekten ihtiyaç duyan kaynaklara aç:

    # Sadece iç ağdan 587'ye izin ver
    ufw allow from 10.10.0.0/24 to any port 587 proto tcp
    
    # Genel internetten gelen 25'i kabul et (posta almak için gerekiyorsa)
    ufw allow 25/tcp
    

    Bir de gönderim hızını sınırlamayı ihmal etme: ele geçirilmiş bir uygulama hesabı, saniyede binlerce mail göndererek IP'ni birkaç dakikada yakabilir. Postfix'te smtpd_client_message_rate_limit gibi kısıtlarla makul bir tavan koymak, kötü günde hasarı sınırlar.

    Sorun Giderme: Log Okuma ve Kuyruk#

    Relay sorunlarının tamamı mail logunda görünür; sadece nereye bakacağını bilmek gerekir. Postfix her teslimat denemesi için tek satırlık bir özet yazar ve o satırdaki status= alanı sana her şeyi söyler.

    # Canlı takip
    tail -f /var/log/mail.log
    
    # Sadece relay üzerinden çıkanları filtrele
    grep "relay=smtp.saglayici.com" /var/log/mail.log | tail -20
    
    # Kimlik doğrulama hatalarını ara
    grep -i "SASL authentication failed" /var/log/mail.log
    
    # Kuyrukta ne var
    postqueue -p
    
    # Takılı bir mesajın içeriğini incele
    postcat -q A1B2C3D4 | head -40
    
    # Kuyruğu hemen yeniden dene
    postqueue -f
    

    En sık karşılaşılan durum kodları ve anlamları şöyledir:

    Log ifadesiAnlamıYapılacak
    status=sentRelay mesajı kabul ettiSorun yok
    status=deferredGeçici hata, tekrar denenecekBağlantı/kimlik doğrulamayı kontrol et
    status=bouncedKalıcı retAlıcı adresi ve relay kurallarını kontrol et
    SASL authentication failedKullanıcı adı/parola hatalısasl_passwd ve postmap kontrolü
    Connection timed outPort kapalı ya da güvenlik duvarıPortu ve çıkış kurallarını kontrol et
    Relay access deniedRelay sende yetki vermemişmynetworks / SASL kurulumu

    status=deferred görüp de sebebini bulamıyorsan, ilk bakılacak yer parola dosyasıdır: relayhost satırındaki yazım ile sasl_passwd içindeki yazımın birebir aynı olması gerekir. [smtp.saglayici.com]:587 yazıp parola dosyasına smtp.saglayici.com yazarsan eşleşme olmaz ve Postfix kimlik bilgisi göndermez. Bu ayrıntı, kurulum sırasında saatler kaybettiren klasik bir tuzaktır.

    Sıkça Sorulan Sorular#

    SMTP relay ücretsiz mi#

    Kendi sunucunu relay olarak kurmak yazılım tarafında tamamen ücretsizdir; Postfix açık kaynaktır ve TLS sertifikasını Let's Encrypt üzerinden bedelsiz alırsın. Maliyet, sunucunun kendisinde ve bakım emeğindedir. Dışarıdan bir relay hizmeti kullanacaksan çoğu sağlayıcı aylık gönderim hacmine göre ücretlendirir ve düşük hacimli ücretsiz kademeler sunar.

    Relay kullanınca SPF kaydımı değiştirmem gerekir mi#

    Evet, gerekir. SPF kaydı alan adın adına hangi sunucuların mail gönderebileceğini söyler; relay üzerinden çıkan mailler artık senin IP'nden değil relay'in IP'sinden gelir. Bu yüzden relay sağlayıcısının verdiği include: ifadesini ya da IP aralığını SPF kaydına eklemen gerekir. Eklemezsen SPF kontrolü başarısız olur ve teslimat oranın düşer.

    Port 25 kapalıysa ne yapmalıyım#

    Bulut sağlayıcılarının çoğu spam'i önlemek için 25. portu varsayılan olarak kapatır. Doğru çözüm, 587 üzerinden kimlik doğrulamalı bir relay kullanmaktır; bu zaten önerilen yöntemdir. Bazı sağlayıcılar talep üzerine 25'i açar ama bu genelde bir doğrulama süreci gerektirir. Alternatif olarak 465 portunu destekleyen bir relay de kullanabilirsin.

    Açık relay olup olmadığımı nasıl anlarım#

    Sunucunun dışındaki bir makineden, kimlik doğrulaması yapmadan kendi sunucun üzerinden dış bir adrese mail göndermeyi dene. Sunucu 554 5.7.1 Relay access denied benzeri bir hatayla reddediyorsa yapılandırman güvenlidir. Mesaj kabul edilirse açık relaysin demektir; mynetworks değerini daralt ve smtpd_relay_restrictions içinde defer_unauth_destination bulunduğundan emin ol.

    Relay kullanmak mail gecikmesine yol açar mı#

    Pratikte fark edilir bir gecikme yaratmaz; mesaj relay'e teslim edildikten sonra genelde saniyeler içinde asıl alıcıya iletilir. Gecikme yaşanıyorsa sebep genellikle relay'in kuyruğunda değil, alıcı tarafındaki greylisting uygulamasındadır. Alıcı sunucu ilk denemeyi geçici olarak reddedip birkaç dakika sonra kabul eder; bu durum relay olmadan da yaşanır.

    Birden fazla alan adı için tek relay kullanabilir miyim#

    Evet, bu relay'in en güçlü yanlarından biridir. Aynı relay üzerinden farklı alan adları adına mail gönderebilirsin; tek şart her alan adının SPF kaydında relay'i yetkilendirmesi ve mümkünse kendi DKIM anahtarıyla imzalanmasıdır. Postfix tarafında sender_dependent_relayhost_maps ile gönderen adrese göre farklı relay'lere yönlendirme de yapabilirsin.

    Kapanış#

    SMTP relay, mail altyapısında karmaşıklığı tek noktada toplayan sade bir mimari tercihtir. Aklında kalması gereken dört alışkanlık şunlar: relayhost değerini köşeli parantezle yazıp MX sorgusunu atla, kimlik bilgisi dosyasını chmod 600 yapıp postmap ile derlemeyi unutma, TLS'i zorunlu tut ki parola ağda açık dolaşmasın ve kendi relay'ini kuruyorsan mynetworks alanını olabildiğince dar tutup açık relay testini mutlaka dışarıdan yap.

    Uygulama maillerini posta kutularından ayırmak istiyorsan Postfix, Dovecot ve DKIM kurulu hâlde teslim edilen SMTP sunucu paketimiz doğrudan bu iş için hazırlanmıştır. Relay'i kendi sunucunda çalıştırmayı tercih ediyorsan VDS paketlerimizde tam root erişimiyle kendi yapılandırmanı kurabilir, kurulum ve bakım yükünü devretmek istersen sunucu yönetimi hizmetimizden yararlanabilirsin. Toplu bilgilendirme gönderimi planlıyorsan e-posta pazarlama tarafındaki ayrı altyapı daha uygun bir başlangıç olur.

    SMTPPostfixRelay

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.