STARTTLS, düz metin olarak başlayan bir SMTP bağlantısını aynı port üzerinde TLS'e yükselten bir SMTP uzantısıdır (RFC 3207). Sunucu yeteneklerini EHLO yanıtında bildirir; istemci STARTTLS komutunu verirse el sıkışma başlar.
Fırsatçı ve zorunlu TLS
Sunucular arası 25. portta STARTTLS çoğunlukla fırsatçıdır: karşı taraf destekliyorsa şifrelenir, desteklemiyorsa düz metin devam eder. Araya giren bir saldırgan STARTTLS yeteneğini yanıttan silerek (downgrade) bağlantıyı şifresiz bırakabilir. Bu yüzden önemli alan adları için zorunlu TLS veya MTA-STS gibi politikalar kullanılır.
Postfix yapılandırması
# Gelen bağlantılar
smtpd_tls_cert_file = /etc/ssl/mail/fullchain.pem
smtpd_tls_key_file = /etc/ssl/mail/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_protocols = >=TLSv1.2
# 587 portunda kimlik doğrulamalı gönderim
# master.cf: submission ... -o smtpd_tls_security_level=encrypt
# Giden bağlantılar
smtp_tls_security_level = may
smtp_tls_loglevel = 1
587. portta encrypt seviyesi kullanıcıların şifresiz parola göndermesini engeller. Belirli bir alan adı için zorunlu TLS gerekiyorsa smtp_tls_policy_maps ile ayrı politika tanımlanabilir.
Doğrulama adımları
- STARTTLS'in ilan edildiğini ve el sıkışmanın sürdüğünü görmek için:
openssl s_client -connect mail.ornek.com:587 -starttls smtp -servername mail.ornek.com - Çıktıda sertifika zincirini ve
Verify return codesatırını inceleyin. - Postfix günlüklerinde
TLS connection establishedsatırlarını arayın.
Sık hatalar
- Sertifika ana bilgisayar adıyla eşleşmiyor.
- Anahtar dosyası izinleri Postfix'in okumasına izin vermiyor.
- Sertifika yenilendi ama
postfix reloadçalıştırılmadı. - Eski istemciler için TLS 1.0 açık bırakılmış.
Sertifikanızı dışarıdan görmek için SSL Checker, genel hataların elenmesi için SSL sorun giderici kullanılabilir.
Özetle STARTTLS kurulumu kolaydır, ancak fırsatçı modun sınırlarını bilmek ve kritik rotalarda zorunlu TLS uygulamak gerekir.