İçeriğe geç
KVKK & GDPR Uyumlu Türkiye Veri Merkezi 7/24 Türkçe Teknik Destek destek@mxgate.com.tr
Yeni: IP itibar izleme artık tüm paketlerde ücretsiz 14 gün ücretsiz deneyin →
ENTEGRASYON REHBERİ · POSTFIX

Postfix Smarthost Kurulumu

Kurulum üç dosyaya dokunur ve tamamı komut satırından yapılır: relayhost ile SASL ayarlarını postconf ile yazar, kimlik bilgilerini ayrı bir dosyaya koyar ve postmap ile derlersiniz. Bundan sonra sunucudan çıkan her e-posta kimlik doğrulamalı ve şifreli bir bağlantıyla MXGate üzerinden iletilir. Gelen posta ayarlarınıza ve MX kaydınıza dokunulmaz.

Süre
Yaklaşık 10 dakika
Gereksinim
Kabuk ve root (sudo) erişimi
Sürüm
Postfix 2.10 ve üzeri
Adres
[smtp.mxgate.com.tr]:587
Kapsam
Yalnızca giden posta
NE DEĞİŞİYOR

Değişen tek şey postanın çıkış yolu

Bugün Postfix, e-postayı alıcının sunucusuna doğrudan gönderiyor; teslim edilip edilmeyeceğini tek başına sunucunuzun IP adresinin sicili belirliyor. Kurulumdan sonra aynı posta önce MXGate’e teslim edilir, orada denetlenir ve itibarı izlenen adreslerden çıkar.

Şu an Postfix Alıcı sunucu Posta doğrudan çıkar. Teslim edilip edilmeyeceğini yalnızca sunucunuzun IP adresinin sicili belirler.
Kurulumdan sonra Postfix relayhost MXGate :587 Alıcı sunucu Posta önce kimlik doğrulamalı ve şifreli bağlantıyla MXGate’e teslim edilir, denetlenir ve itibarı izlenen adreslerden çıkar.
Posta kutuları ve yerel teslimat kuralları yerinde kalır Uygulamalarınızın posta gönderme biçimi değişmez Gelen posta için MX kaydı ayrıca yönlendirilir; bu rehber onu kapsamaz Yönteme genel bakış için Smarthost sayfası, giden trafikte denetim için Outbound Filtreleme
DOKUNULAN DOSYALAR

Kurulum üç dosyaya dokunur

Postfix’te kurulumun kendisi kısa; sorunların çoğu bu üç dosyanın hangisinin ne işe yaradığının karıştırılmasından çıkıyor. Adımlara geçmeden önce haritayı bir kez okuyun.

/etc/postfix/main.cf
Postfix’in ana yapılandırması. relayhost, SASL ve TLS satırları buraya yazılır. Elle düzenlemek yerine postconf -e kullanılır.
644
/etc/postfix/sasl_passwd
Kullanıcı adı ve şifrenin düz metin durduğu tek dosya. Yalnızca root okuyabilmeli; izni açık kalırsa Postfix uyarı verir ve kimlik bilgileriniz sunucudaki diğer hesaplara görünür olur.
600
/etc/postfix/sasl_passwd.db
postmap komutunun ürettiği derlenmiş sürüm. Postfix düz metin dosyayı değil bunu okur; şifreyi her değiştirdiğinizde postmap yeniden çalıştırılmalıdır.
600
KURULUM

Yedi adımda Postfix smarthost kurulumu

Komutların tamamı root (veya sudo) ile çalıştırılır. Yalnızca üçüncü adımdaki kullanıcı adı ve şifre yer tutucularını değiştirmeniz gerekir.

  1. Mevcut durumu görün ve yedek alın

    Değişikliğe başlamadan önce Postfix sürümünü ve tanımlı ayarları görün, ardından yapılandırmanın yedeğini alın. Sunucuda halihazırda bir relayhost tanımlıysa bunu bilerek başlamak gerekir.

    KABUK · DURUM kopyalayın
    postconf mail_version
    postconf -n | grep -E 'relayhost|sasl|smtp_tls'
    
    # Yedek
    cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
  2. Ayarları postconf ile yazın

    main.cf dosyasını elle açmak yerine postconf -e kullanın. Bu komut satırı zaten varsa günceller, yoksa ekler; böylece aynı ayarın iki kez tanımlanması ve sonrakinin öncekini sessizce geçersiz kılması engellenir.

    KABUK · AYARLAR kopyalayın
    postconf -e 'relayhost = [smtp.mxgate.com.tr]:587'
    postconf -e 'smtp_sasl_auth_enable = yes'
    postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
    postconf -e 'smtp_sasl_security_options = noanonymous'
    postconf -e 'smtp_tls_security_level = encrypt'
    
    # CA paketi yolu dağıtıma göre değişir
    # Debian / Ubuntu
    postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt'
    # RHEL / Rocky / AlmaLinux
    postconf -e 'smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt'
    Adresi köşeli parantezle yazın: [smtp.mxgate.com.tr]:587. Parantez, Postfix’e adı doğrudan çözmesini ve MX kaydı aramamasını söyler. smtp_tls_security_level = encrypt ise şifresiz bağlantıya düşmeyi engeller.
  3. Kimlik bilgisi dosyasını oluşturun

    sasl_passwd dosyasına tek satır yazılır: relayhost ile birebir aynı adres, ardından kullanıcı adı ve şifre. Adresin main.cf içindekiyle harfi harfine aynı olması gerekir, aksi halde Postfix eşleşme bulamaz.

    /etc/postfix/sasl_passwd kopyalayın
    # Tek satır: adres, boşluk, kullanıcı:şifre
    [smtp.mxgate.com.tr]:587 KULLANICI:SIFRE
  4. İzni kısıtlayın ve postmap ile derleyin

    Önce dosyayı yalnızca root okuyabilecek hale getirin, sonra postmap ile derleyin. Postfix düz metin dosyayı değil, postmap’in ürettiği .db dosyasını okur; bu komut atlanırsa yaptığınız değişikliğin hiçbir etkisi olmaz.

    KABUK · İZİN VE DERLEME kopyalayın
    chmod 600 /etc/postfix/sasl_passwd
    chown root:root /etc/postfix/sasl_passwd
    postmap /etc/postfix/sasl_passwd
    En sık atlanan adım budur. Şifreyi ileride her değiştirdiğinizde postmap komutunu yeniden çalıştırmanız gerekir; yoksa Postfix eski şifreyi kullanmaya devam eder.
  5. Yapılandırmayı yeniden yükleyin

    Postfix’i durdurmanız gerekmez; reload komutu yapılandırmayı kuyruğu boşaltmadan yeniden okur. Ardından ayarların gerçekten yerine oturduğunu postconf ile doğrulayın.

    KABUK · YENİDEN YÜKLE kopyalayın
    systemctl reload postfix
    
    # Ayarlar yerine oturdu mu?
    postconf -n | grep -E 'relayhost|smtp_sasl|smtp_tls_security_level'
  6. SASL modüllerinin kurulu olduğunu doğrulayın

    Postfix’in kimlik doğrulaması yapabilmesi için istemci tarafı SASL modülleri sistemde bulunmalıdır. Bunlar birçok kurulumda varsayılan olarak gelmez ve eksik olduklarında ayarlar doğru olsa bile kimlik doğrulama başarısız olur.

    KABUK · SASL MODÜLLERİ kopyalayın
    # Debian / Ubuntu
    apt install libsasl2-modules
    
    # RHEL / Rocky / AlmaLinux
    dnf install cyrus-sasl-plain
    
    systemctl reload postfix
    Modüller eksikken kayıtta no mechanism available hatası görürsünüz. Bu hata şifrenin yanlış olduğu anlamına gelmez; sunucu kimlik doğrulamayı hiç deneyememiştir.
  7. Bir e-posta gönderip kaydı okuyun

    Sunucudan dışarıya bir e-posta gönderin ve posta kaydında iletinin MXGate üzerinden çıktığını doğrulayın. Kayıtta relay adresini ve 250 yanıtını görüyorsanız kurulum çalışıyor demektir.

    TEST · KAYIT kopyalayın
    echo "test" | mail -s "MXGate test" siz@ornek.com
    
    # Canlı posta kaydı
    tail -f /var/log/maillog        # RHEL ailesi
    tail -f /var/log/mail.log       # Debian / Ubuntu
    
    # Kayıtta görmeniz gereken satır
    status=sent (250 2.0.0 Ok: queued) relay=smtp.mxgate.com.tr[…]:587
    Kurulum tamam. Bu satırı gördüğünüzde sunucudan çıkan tüm posta kimlik doğrulamalı ve şifreli olarak MXGate üzerinden gidiyor demektir.
İLERİ SEVİYE

Sunucunun tamamı yerine belirli göndericiler

relayhost ayarı sunucu genelindedir. Bazı gönderen adreslerini farklı bir yola almak isterseniz Postfix bunu gönderen bazında yönlendirmeyle yapar; bu tanım relayhost ayarından önceliklidir.

sender_dependent_relayhost_maps isteğe bağlı
# /etc/postfix/sender_relay — soldaki gönderen, sağdaki yol
bulten@ornek.com    [smtp.mxgate.com.tr]:587
@baska-alan.com     [smtp.mxgate.com.tr]:587

# Tanımlayın, derleyin, yeniden yükleyin
postconf -e 'sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay'
postmap /etc/postfix/sender_relay
systemctl reload postfix

Bu dosyada listelenmeyen göndericiler relayhost ayarını kullanmaya devam eder. Kimlik bilgileri yine sasl_passwd dosyasındaki adresten eşleştirilir, dolayısıyla ayrı bir kullanıcı tanımlamanız gerekmez.

SORUN GİDERME

Posta kaydında gördüğünüz hata ne anlama geliyor?

Aşağıdaki altı satır, Postfix smarthost kurulumundan sonra karşılaşılan hataların neredeyse tamamını kapsar. Kaydınızdaki metni soldaki sütunda arayın.

Kayıttaki hata Ne anlama gelir Çözüm
SASL authentication failed: no mechanism available İstemci tarafı SASL modülleri kurulu değil Debian ve Ubuntu’da libsasl2-modules, RHEL ailesinde cyrus-sasl-plain paketini kurun ve Postfix’i yeniden yükleyin. Bu hata şifrenin yanlış olduğu anlamına gelmez.
SASL authentication failed: authentication failure Kullanıcı adı veya şifre kabul edilmedi sasl_passwd dosyasındaki adresin relayhost ile birebir aynı olduğunu doğrulayın ve dosyayı değiştirdikten sonra postmap komutunu çalıştırdığınızdan emin olun.
Host or domain name not found Adres MX kaydı aranarak çözülmeye çalışılıyor Adresi köşeli parantezle yazın: [smtp.mxgate.com.tr]:587. Parantez olmadan Postfix ad için MX kaydı arar ve bulamaz.
postmap: fatal: unsupported dictionary type: hash Dağıtımda Berkeley DB desteği yok Yeni RHEL sürümlerinde hash yerine lmdb kullanılır. Dosyayı postmap lmdb:/etc/postfix/sasl_passwd ile derleyin ve smtp_sasl_password_maps ayarını lmdb: ile güncelleyin.
Connection timed out 587 portuna çıkış engelleniyor Sunucu güvenlik duvarında ve sağlayıcınızın ağında giden 587 portuna izin verin. Bağlantıyı openssl s_client -starttls smtp -connect smtp.mxgate.com.tr:587 ile sınayabilirsiniz.
certificate verification failed CA paketinin yolu yanlış veya paket eksik smtp_tls_CAfile ayarını dağıtımınıza göre verin: Debian ve Ubuntu’da /etc/ssl/certs/ca-certificates.crt, RHEL ailesinde /etc/pki/tls/certs/ca-bundle.crt.

Geri dönüş

Kurulumdan vazgeçmek isterseniz relayhost ayarını boşaltmanız yeterli; kimlik bilgisi dosyasını silmenize gerek yoktur. Birinci adımda aldığınız yedeği geri yüklemek de aynı sonucu verir.

KABUK · GERİ DÖNÜŞ isteğe bağlı
# Yönlendirmeyi kaldırın
postconf -e 'relayhost ='
postconf -e 'smtp_sasl_auth_enable = no'
systemctl reload postfix

# Ya da yedeği geri yükleyin
cp /etc/postfix/main.cf.bak /etc/postfix/main.cf
systemctl reload postfix
SIK SORULAN SORULAR

Sistem yöneticilerinden gelen sorular

main.cf dosyasını elle mi düzenlemeliyim, postconf mu kullanmalıyım?

postconf -e tercih edilir. Komut, ayar zaten tanımlıysa satırı günceller, tanımlı değilse dosyanın sonuna ekler. Elle düzenlemede en sık yapılan hata aynı ayarı iki kez yazmaktır: Postfix son tanımı geçerli sayar, dosyanın başındaki satır sessizce etkisiz kalır ve sorunu bulmak zorlaşır.

postmap komutunu neden çalıştırmam gerekiyor?

Postfix, sasl_passwd dosyasını düz metin olarak okumaz; postmap komutunun ürettiği derlenmiş .db dosyasını okur. Bu yüzden dosyayı düzenlemek tek başına yetmez. Şifreyi ileride her değiştirdiğinizde postmap komutunu yeniden çalıştırmanız gerekir, aksi halde Postfix eski şifreyi kullanmaya devam eder.

Şifre dosyada düz metin duruyor, bu güvenli mi?

Dosyanın izni 600 ve sahibi root olduğu sürece yalnızca root okuyabilir; sunucudaki diğer kullanıcılar erişemez. İzin açık bırakılırsa Postfix bunu kayıtta uyarı olarak bildirir. Kimlik bilgileri sunucuda tutulan diğer sırlar gibi ele alınmalı, yedeklere ve sürüm kontrolüne dahil edilmemelidir.

Sunucudaki tüm gönderim bu yoldan mı gidecek?

Evet. relayhost ayarı sunucu genelindedir ve yerel olmayan tüm adreslere giden posta bu yolu kullanır. Belirli göndericileri farklı bir yola almak isterseniz sender_dependent_relayhost_maps ile gönderen adrese göre ayrı bir yönlendirme tanımlayabilirsiniz.

Bu kurulum gelen e-postaları etkiler mi?

Hayır. relayhost yalnızca sunucudan çıkan postanın hangi yoldan gideceğini belirler. MX kayıtlarınız, posta kutularınız ve gelen posta ayarlarınız olduğu gibi kalır. Gelen tarafı da MXGate üzerinden geçirmek ayrı bir adımdır ve MX kaydı üzerinden yapılır.

Son güncelleme: · Geçerli sürümler: Postfix 2.10 ve üzeri · Debian, Ubuntu, RHEL ailesi