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.
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.
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.
relayhost, SASL ve TLS satırları buraya yazılır. Elle düzenlemek yerine postconf -e kullanılır.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.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.
-
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ınpostconf mail_version postconf -n | grep -E 'relayhost|sasl|smtp_tls' # Yedek cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
-
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ınpostconf -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 = encryptise şifresiz bağlantıya düşmeyi engeller. -
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
-
İ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ınchmod 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ğinizdepostmapkomutunu yeniden çalıştırmanız gerekir; yoksa Postfix eski şifreyi kullanmaya devam eder. -
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ınsystemctl reload postfix # Ayarlar yerine oturdu mu? postconf -n | grep -E 'relayhost|smtp_sasl|smtp_tls_security_level'
-
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ıttano mechanism availablehatası görürsünüz. Bu hata şifrenin yanlış olduğu anlamına gelmez; sunucu kimlik doğrulamayı hiç deneyememiştir. -
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ınecho "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.
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.
# /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.
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.
# 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
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.