LIONFIN
SmartHost SMTP Relay

Postfix SmartHost Yapılandırması (relayhost)

5 dk okuma Güncelleme: 8 görüntülenme
Postfix SmartHost Yapılandırması (relayhost)

Bir Linux sunucusunda Postfix smarthost yapılandırması, uygulamalarınızın, cron görevlerinin ve sistem uyarılarının gönderdiği her mesajı tek noktadan itibarlı bir relay’e devretmenin en temiz yoludur. Uygulama başına SMTP ayarı yerine sunucunun posta sistemini yönlendirirsiniz; mail, sendmail ya da PHP mail() kullanan her şey relay üzerinden çıkar.

Bu rehber LIONFIN SmartHost SMTP relay hizmetiyle Debian/Ubuntu ve RHEL türevi dağıtımlarda Postfix’i adım adım yapılandırır. Relay adresi ve kimlik bilgileri müşteri panelindeki Hizmetlerim → SmartHost ekranından alınır; genel kurulum akışı ve DNS kayıtları için SMTP relay kurulumu rehberine bakın.

Ön koşullar ve paket kurulumu

Postfix smarthost kurulumu için gerekenler:

  • root ya da sudo yetkisi,
  • sunucudan RELAY_ADRESI adresine 587 (ya da 465) portundan çıkış izni,
  • SmartHost kullanıcı adı ve şifresi (müşteri paneli → Hizmetlerim → SmartHost).

Postfix çoğu dağıtımda kurulu gelir; SASL kimlik doğrulaması için ek modül gerekir:

# Debian / Ubuntu
sudo apt update
sudo apt install postfix libsasl2-modules ca-certificates

# RHEL / AlmaLinux / Rocky
sudo dnf install postfix cyrus-sasl-plain ca-certificates
sudo systemctl enable --now postfix

Debian ailesinde kurulum sırasında “Internet Site” seçeneğini işaretleyip sistem posta adı olarak sunucunun tam adını (sunucu.sirketiniz.com) verin. Sunucuyu yeni açtıysanız önce alan adının SPF kaydına SmartHost include ifadesini ekleyin; aksi hâlde ilk test mesajı spama düşer. VPS sunucu ve fiziksel sunucularda bu adımlar aynıdır.

Postfix smarthost ayarı: main.cf içinde relayhost ve SASL

/etc/postfix/main.cf dosyasının sonuna aşağıdaki blok eklenir. Var olan bir relayhost satırı varsa üzerine yazın; iki kez tanımlamayın.

# SmartHost relay (587 STARTTLS)
relayhost = [RELAY_ADRESI]:587

# Kimlik dogrulama
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
smtp_sasl_mechanism_filter = login, plain

# TLS zorunlu
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 1

Satırların anlamı: relayhost tüm dış teslimatı belirtilen sunucuya yönlendirir; köşeli parantez, Postfix’in relay adresi için MX sorgusu yapmasını engeller ve doğrudan A kaydını kullanmasını sağlar. smtp_sasl_* satırları kimlik doğrulamayı açar ve şifreyi hangi dosyadan okuyacağını söyler. smtp_tls_security_level = encrypt şifresiz bağlantıyı yasaklar; relay STARTTLS sunmazsa mesaj kuyrukta bekler, düz metinle gönderilmez. RHEL ailesinde CA dosyası yolu /etc/pki/tls/certs/ca-bundle.crt olabilir.

Dikkat: Köşeli parantezi unutursanız Postfix relay adresinin MX kaydını arar; kayıt yoksa ya da farklı bir sunucuyu gösteriyorsa mesajlar yanlış yere gider ya da kuyrukta kalır.

Kimlik bilgileri: sasl_passwd ve postmap

Şifre main.cf içine değil, ayrı ve yalnızca root tarafından okunabilen bir dosyaya yazılır:

sudo nano /etc/postfix/sasl_passwd
# Dosya icerigi (tek satir):
[RELAY_ADRESI]:587    KULLANICI_ADI:SIFRE

Ardından dosyayı Postfix’in okuyabileceği hash veritabanına çevirin, izinleri daraltın ve yapılandırmayı yeniden yükleyin:

sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo postfix check
sudo systemctl reload postfix

Buradaki anahtar ([RELAY_ADRESI]:587) main.cf içindeki relayhost değeriyle birebir aynı olmalıdır; parantez ya da port farkı, Postfix’in şifreyi bulamamasına ve “SASL authentication failed” hatasına yol açar. Şifrede iki nokta (:) karakteri varsa kullanıcı adından sonraki ilk iki nokta ayırıcı sayılır, gerisi şifre olarak alınır.

465 SSL/TLS ile bağlanmak (wrapper mode)

Ağınızda 587 portu engelliyse ya da doğrudan SSL tercih ediyorsanız 465 portunu kullanabilirsiniz. Bu portta STARTTLS komutu yerine bağlantı en baştan şifreli açılır; Postfix bunu “wrapper mode” olarak adlandırır. main.cf içinde şu üç satır değişir:

relayhost = [RELAY_ADRESI]:465
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt

sasl_passwd dosyasındaki anahtarı da [RELAY_ADRESI]:465 olarak güncelleyip postmap ve reload adımlarını tekrarlayın. Çok eski Postfix sürümleri wrapper mode desteklemez; postconf mail_version çıktısı 3.0’dan küçükse 587 STARTTLS ile devam edin. Hangisinin ağınızda açık olduğunu nc -zv RELAY_ADRESI 587 ve nc -zv RELAY_ADRESI 465 komutlarıyla saniyeler içinde görebilirsiniz. Port seçiminin arkasındaki mantık SmartHost nedir yazısında açıklanıyor.

Gönderen adresini yeniden yazma

Cron ve sistem servisleri mesajları [email protected] gibi adreslerden gönderir. Relay, yalnızca panelde tanımlı alan adlarından gönderime izin verdiği için bu mesajlar reddedilebilir ya da alıcıda SPF hatası verir. Çözüm, giden gönderen adreslerini relay’e ulaşmadan yeniden yazmaktır:

# main.cf
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
smtp_header_checks = regexp:/etc/postfix/header_checks

# /etc/postfix/sender_canonical
/.+/    [email protected]

# /etc/postfix/header_checks
/^From:.*/    REPLACE From: Sunucu Bildirimleri <[email protected]>

İlk dosya zarf gönderenini (envelope from), ikincisi başlıktaki From: satırını değiştirir; ikisi birlikte kullanılmalıdır. Değişiklikten sonra systemctl reload postfix yeterlidir; regexp tabloları için postmap gerekmez. Yalnızca belirli kullanıcıların adresini değiştirmek isterseniz /.+/ yerine /^root@/ gibi daha dar bir desen kullanın. Sunucudan giden mesajların hepsi tek bir adres taşıyacağı için o adresi gerçek bir posta kutusuna ya da yönlendirmeye bağlamak, geri dönen mesajları görmenizi sağlar; kutu için mail hosting yeterlidir.

İpucu: Postfix mesajları gönderirken hangi adresi kullandığını görmek için mail.log içindeki “from=” alanına bakın; yeniden yazma çalışıyorsa orada bildirim@ adresi görünür.

Test, log okuma ve sık hatalar

Yapılandırmayı doğrulamak için bir test mesajı gönderip günlüğü canlı izleyin:

echo "SmartHost test" | mail -s "Postfix relay testi" [email protected]
sudo tail -f /var/log/mail.log        # RHEL: /var/log/maillog
mailq                                 # kuyrukta bekleyen var mi?
sudo postqueue -f                     # kuyrugu hemen isle

Başarılı gönderimde günlükte relay=RELAY_ADRESI[...]:587, status=sent ve relay’in döndürdüğü kuyruk kimliği görünür. Alıcı tarafta başlıklardaki Authentication-Results satırında spf=pass ve dkim=pass olmalıdır.

SASL authentication failed

Kimlik bilgisi yanlış ya da sasl_passwd anahtarı relayhost ile uyuşmuyor; libsasl2-modules / cyrus-sasl-plain paketinin kurulu olduğunu da doğrulayın.

TLS is required, but was not offered

465 portuna wrapper mode olmadan ya da 587 portuna wrapper mode ile bağlanıyorsunuz; port ve smtp_tls_wrappermode ayarını eşleştirin.

Host or domain name not found

Relay adresi yanlış yazılmış ya da köşeli parantez eksik. host RELAY_ADRESI ile çözümlemeyi kontrol edin.

Connection timed out

Giden 587/465 trafiği güvenlik duvarında kapalı; bulut sağlayıcınızın ağ kuralları ve yerel ufw/firewalld çıkış kurallarını açın. Sunucudaki tüm mesajlar tek hesap üzerinden çıktığı için hesap limitine dikkat edin; sınırlar toplu mail gönderimi ve limitler yazısında, geri dönme ve gecikme senaryoları mail teslim sorunları rehberinde.

Sık Sorulan Sorular

Postfix smarthost ayarı sunucudaki tüm uygulamaları etkiler mi?

Evet; sendmail, mail komutu ve PHP mail() üzerinden gönderen her şey relay’e yönlenir. Kendi SMTP ayarı olan uygulamalar (örneğin doğrudan bir SMTP sunucusuna bağlanan WordPress eklentisi) bundan etkilenmez; onları ayrıca yapılandırmanız gerekir.

Yalnızca belirli alan adlarını relay’e yönlendirebilir miyim?

Evet. relayhost yerine transport_maps kullanarak belirli alıcı alan adlarını SmartHost’a, diğerlerini doğrudan teslimata yönlendirebilirsiniz. Ancak çoğu sunucu için tüm giden trafiği relay’e vermek daha basit ve daha güvenlidir; karma yapılandırma yalnızca özel durumlarda gerekir.

Gelen mesajlar da SmartHost üzerinden mi geçer?

Hayır. relayhost yalnızca giden teslimatı etkiler. Sunucunuza gelen mesajlar alan adınızın MX kaydına göre yönlenir; MX kaydı LIONFIN mail hosting ya da xMail sunucusunu gösteriyorsa gelen posta oraya düşer, Postfix yalnızca gönderim yapar.

Şifremi değiştirince ne yapmam gerekir?

Yalnızca /etc/postfix/sasl_passwd dosyasındaki şifreyi güncelleyin, postmap komutunu yeniden çalıştırın ve Postfix’i reload edin. main.cf değişmez. Kuyrukta bekleyen mesajlar yeni şifreyle otomatik olarak yeniden denenir.

Bu makale yardımcı oldu mu?

Geri bildiriminiz için teşekkürler!

kişi faydalı buldu

Paylaş

X LinkedIn WhatsApp

Sorunuz mu var? Destek ekibimize yazın.