SSL sertifikanızı yeniledikten sonra e-posta istemciniz veya sunucunuz bağlantı hatası veriyorsa yalnız değilsiniz. Bu durum, yanlış yapılandırılmış sertifika zincirlerinden kaynaklanan bir protokol sorunudur ve birkaç sistematik adımla tamamen çözülebilir.
STARTTLS hatası alıyorsanız büyük ihtimalle ara sertifika (intermediate CA) zinciri eksik ya da eski sertifika hâlâ servise yüklü. Postfix/Dovecot'ta smtpd_tls_cert_file ve ssl_cert yollarını güncelleyin, tam zinciri (fullchain.pem) kullanın ve servisi yeniden başlatın.Pek çok sistem yöneticisi SSL sertifikasını yeniledikten sonra işin bittiğini varsayar. Oysa e-posta protokolleri — SMTP (RFC 5321), IMAP ve POP3 — TLS anlaşması (handshake) sırasında web tarayıcılarından çok daha katı doğrulama adımları uygular. Tarayıcılar ara sertifikaları bazen AIA (Authority Information Access) uzantısı üzerinden dinamik olarak indirebilirken, e-posta istemcileri ve sunucuları bu esnekliği büyük ölçüde desteklemez.
Sonuç olarak, Let's Encrypt, DigiCert veya Sectigo gibi bir CA'dan aldığınız sertifikayı sunucuya yüklerken yalnızca cert.pem dosyasını kopyaladığınızda istemci tarafında şu hata ailesiyle karşılaşırsınız:
SSL_CTX_use_certificate_file: no certificate or crl foundTLS error: no shared ciphercertificate verify failed (unable to get local issuer certificate)140DB08810F0: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failedSorunun tam kaynağını belirlemek için aşağıdaki araçları sırasıyla kullanın.
SMTP (port 587, STARTTLS) için:
openssl s_client -connect mail.siteniz.com:587 -starttls smtp 2>&1 | grep -E 'Verify|depth|error'
IMAPS (port 993) için:
openssl s_client -connect mail.siteniz.com:993 2>&1 | grep -E 'Verify|depth|Cert'
Çıktıda Verify return code: 0 (ok) görmek istiyorsunuz. 21 (unable to verify the first certificate) veya 20 (unable to get local issuer certificate) kodları zincirin eksik olduğuna işaret eder.
Tarayıcı tabanlı araçlardan SSL Labs Mail Server Test (https://www.ssllabs.com/ssltest/) ve MX Toolbox SuperTool, sertifika zincirini, TLS versiyonunu ve cipher suite uyumluluğunu görsel olarak raporlar. Özellikle Google Postmaster Tools ile izlediğiniz alan adlarında bu test skoru, spam filtresi kararlarını doğrudan etkiler.
Postfix için:
journalctl -u postfix --since "1 hour ago" | grep -i 'tls\|ssl\|cert'
Dovecot için:
grep -i 'ssl\|tls\|cert' /var/log/dovecot.log | tail -50
Let's Encrypt'in ISRG Root X1 zinciri veya DigiCert'in hiyerarşisi gibi modern CA yapılarında en az bir ara sertifika bulunur. Sunucunuza yalnızca son kullanıcı (leaf) sertifikasını yüklediyseniz, CA kök sertifikasını kendi güven deposunda barındırmayan istemciler bağlantıyı reddeder.
Çözüm: CA'nın size sağladığı fullchain.pem (ya da chain.pem + cert.pem) dosyasını kullanın. Bu dosya, leaf sertifikayı ve tüm ara sertifikaları sıralı biçimde içerir.
Postfix (/etc/postfix/main.cf):
smtpd_tls_cert_file = /etc/letsencrypt/live/siteniz.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/siteniz.com/privkey.pem
Dovecot (/etc/dovecot/conf.d/10-ssl.conf):
ssl_cert = </etc/letsencrypt/live/siteniz.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/siteniz.com/privkey.pem
Değişiklikten sonra servisleri yeniden yükleyin:
systemctl reload postfix
systemctl reload dovecot
Bazı kontrol panelleri (cPanel, Plesk, DirectAdmin) e-posta servisleri için ayrı bir sertifika deposu kullanır. Web sunucusunuzdaki sertifikayı güncellediniz; ancak Postfix ve Dovecot hâlâ eski sertifikayı sunabilir. Şu komutla hangi sertifikanın aktif olduğunu kontrol edin:
openssl x509 -in /etc/postfix/ssl/smtpd.crt -noout -dates
notAfter değeri geçmiş bir tarihe işaret ediyorsa sertifika dosyasını yeni fullchain.pem ile değiştirip servisi yeniden başlatmanız yeterlidir.
Tek IP üzerinde birden fazla alan adı barındırıyorsanız ve TLS için SNI (Server Name Indication) kullanıyorsanız, istemcinin gönderdiği sunucu adı ile sertifikadaki CN veya SAN alanı eşleşmeyebilir. Özellikle eski Outlook sürümleri ve bazı kurumsal güvenlik duvarları SNI desteği olmadan bağlantı kurmaya çalıştığında varsayılan sertifika sunulur ve bu sertifika doğru alan adını kapsamıyorsa bağlantı kesilir. Sertifikanızın SAN listesini doğrulayın:
openssl x509 -in fullchain.pem -noout -ext subjectAltName
SSL sertifikası yenilemesiyle doğrudan ilgisi olmasa da, bazı yöneticiler bu süreçte sunucu hostname veya IP adresini değiştirdiğinde SPF kaydındaki (RFC 7208) ip4: veya a: mekanizmaları geçersiz hale gelir. DKIM (RFC 6376) özel anahtarı da taşınan sunucularda kaybolabilir. Bu durum, alıcı sunucularda 550 5.7.26 This message does not have authentication information veya DMARC policy of ... disallows (RFC 7489) hatası olarak görünür. Google Workspace ve Microsoft 365 kaynaklı reddedilen iletileri Google Postmaster Tools ve Microsoft SNDS panellerinden takip edebilirsiniz.
SSL yenileme sırasında bazen güvenlik duvarı kuralları da değiştirilir. E-posta için kritik portları şu şekilde kontrol edin:
ss -tlnp | grep -E '25|465|587|993|995'
| Hata Kodu / Mesajı | Olası Neden | Çözüm Yönü |
|---|---|---|
Verify return code: 20 |
Yerel veren sertifika bulunamadı | fullchain.pem kullan, servis yeniden başlat |
Verify return code: 21 |
İlk sertifika doğrulanamıyor | Ara sertifika zinciri eksik |
TLS error: no shared cipher |
TLS versiyonu veya cipher uyumsuzluğu | TLSv1.2+ ve ECDHE cipher'larını etkinleştir |
certificate has expired |
Eski sertifika hâlâ sunucuda aktif | Doğru dosya yolunu yapılandırmaya yaz |
hostname mismatch |
SNI veya SAN uyuşmazlığı | Sertifika SAN listesini ve istemci hostnamını kontrol et |
550 5.7.26 |
SPF/DKIM/DMARC doğrulama hatası | DNS kayıtlarını ve DKIM özel anahtarını doğrula |
421 4.7.0 TLS required |
Alıcı sunucu TLS zorunlu kılıyor, istemci başaramıyor | STARTTLS veya SMTPS yapılandırmasını etkinleştir |
cert.pem değil, tüm zinciri içeren dosyayı belirtin.privkey.pem yalnızca root veya ilgili servis kullanıcısı tarafından okunabilir olmalı (chmod 600).reload ile mevcut bağlantılar kesilmeden yeni sertifika aktif hale gelir.Verify return code: 0 (ok) görene kadar adımları tekrarlayın.Let's Encrypt kullanıyorsanız certbot renew komutu sertifikayı günceller; ancak Postfix ve Dovecot'u otomatik olarak yeniden yüklemez. /etc/letsencrypt/renewal-hooks/deploy/ dizinine aşağıdaki gibi bir betik ekleyin:
#!/bin/bash
systemctl reload postfix
systemctl reload dovecot
Bu betiği çalıştırılabilir yapın: chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-mail.sh. Böylece sertifika her yenilendiğinde servisler otomatik olarak güncel sertifikayı devreye alır.
İlk olarak openssl s_client -connect mail.siteniz.com:993 komutuyla sertifika zincirini doğrulayın. "Verify return code: 0 (ok)" görmüyorsanız Dovecot yapılandırmasında ssl_cert yolunun fullchain.pem'e işaret ettiğinden ve servisi yeniden yüklediğinizden emin olun. Outlook eski profillerde önbelleğe alınmış sertifika hatası gösterebilir; hesabı kaldırıp yeniden eklemek sorunu çözer.
Doğrudan değil. SSL sorunu bağlantıyı keser; iletiler ulaşmıyorsa SPF, DKIM veya DMARC kaydınız geçersizleşmiş olabilir. Özellikle sunucu taşıma veya IP değişikliği yaptıysanız SPF kaydını (RFC 7208) güncelleyip DKIM anahtarını yeniden yayınlayın. Google Postmaster Tools paneli bu sorunları açıkça raporlar.
Yalnızca /etc/letsencrypt/renewal-hooks/deploy/ dizinine servis yeniden yükleme betiği eklemezsek evet. Bu betiği bir kez tanımladıktan sonra certbot renew her çalıştığında Postfix ve Dovecot otomatik olarak yeni sertifikayı devreye alır ve sorun tekrarlanmaz.
Sunucu ile istemci ortak bir şifreleme algoritması (cipher suite) üzerinde anlaşamıyor. TLSv1.0 ve TLSv1.1 desteği artık yaygın olarak kaldırıldığından eski istemciler bu hatayı üretir. Postfix'te smtpd_tls_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 ile TLSv1.2 ve üstünü zorunlu kılıp ECDHE tabanlı cipher'ları öncelikli sıraya alın.
Evet. cPanel'in "SSL/TLS" bölümündeki sertifika, web sunucusunu (Apache/LiteSpeed) etkiler. E-posta servisleri (Exim, Dovecot) için "E-posta > SSL/TLS Hizmetleri" menüsünden ayrıca sertifika ataması yapmanız gerekir. AutoSSL etkinse bunu otomatik yapabilir; ancak atama başarılı oldu mu servis loglarından doğrulayın.
STARTTLS, bağlantı şifreli başlamaz; düz metin olarak başlar ve ardından STARTTLS komutuyla yükseltilir (RFC 5321, §3.3). Güvenlik duvarınız veya bir proxy bu komutu filtreliyorsa ya da Postfix'te smtpd_tls_security_level = encrypt ayarı eksikse el sıkışması başarısız olabilir. Port 465 (SMTPS, örtülü TLS) ile test yaparak sorunun STARTTLS'e özgü olup olmadığını doğrulayın.
Android'in güven deposu (trust store) işletim sistemi sürümüne bağlıdır. Android 7.1 ve öncesi, Let's Encrypt'in ISRG Root X1 sertifikasını güven deposunda bulundurmaz ve DST Root CA X3 sertifikasının süresi 2021'de dolduğundan bu cihazlarda doğrulama başarısız olur. Çözüm ya cihazı güncellemek ya da istemcinin kendi güven deposunu içeren bir uygulama sürümü kullanmaktır (örn. Thunderbird for Android).
Sertifika zincirinde bir ara sertifika, doğrulanamayan başka bir sertifika tarafından imzalanmış demektir; bu genellikle CA bundle dosyasının eksik veya yanlış sıralanmış olduğunu gösterir. fullchain.pem dosyasının leaf sertifikadan başlayıp kök CA'ya kadar doğru sırada birleştirildiğini openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt fullchain.pem komutuyla doğrulayın.
SSL, iletim güvenliğini sağlar; spam sınıflandırması ise içerik, gönderen itibarı, SPF/DKIM/DMARC uyumu ve IP itibarıyla belirlenir. Ancak TLS kullanımı Google ve Microsoft gibi büyük alıcılar için pozitif bir sinyaldir. Sorun çözüldükten sonra Google Postmaster Tools'daki alan adı itibarı grafiğini birkaç gün izleyerek iyileşme olup olmadığını değerlendirin.
Reklamsız, KVKK uyumlu; kurulum ve geçiş ücretsiz, mailleri biz taşırız.
Kurulum + migrasyon ücretsiz. KVKK uyumlu, Türkiye'de barındırma. 7/24 Türkçe destek.
Kampanya 30 Haziran'a kadar geçerlidir.