Hoşgeldin Misafir

XenForo Mail Hatası: "Peer certificate CN did not match expected CN" — CP + CF + VDS Çözümü

Stronger_Cracker

25 Tem 2022
6,410 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Selamunaleyküm,

Dün sabah sistemimizin CF tarafında bir kaç ayar değişikliği yaptım. Bu değişikliklerden sonra fark ettim ki mail sunucularımız patlamış :D Hal böyle olunca iş başa düştü.. 2-3 saat uğraşıp bir şekilde problemi çözdüm. Sistemimiz ve Mail servislerimiz sorunsuz çalışmakta. Altın anahtar Reverse DNS aslında ama Google ve XenForo forumlarında bu çözüm yok denecek kadar az.. Bu sebeple çözüm konusu açmaya karar verdim. Hem üyelerimiz, hem de sanal ortamdaki XenForo kullanıcıları CloudFlare ve CyberPanel Mail servislerinde sorun yaşarsa çözümü bizden görsün. :)

Ortam​

  • Panel: CyberPanel
  • Mail: Postfix + Dovecot
  • DNS: Cloudflare
  • Forum: XenForo 2.3.x

Hata Mesajı​

Kod:
Symfony\Component\Mailer\Exception\TransportException:
Unable to connect with STARTTLS: stream_socket_enable_crypto():
Peer certificate CN='stonger.org' did not match expected CN='127.0.0.1'

XenForo test maili gönderirken bu hatayı alıyordum. Host'u 127.0.0.1, localhost mail.stronger.org olarak değiştirdim, port olarak 25, 465, 587 denedim — hepsi hata verdi.

Sorunun Kaynağı​

Aslında tek bir sorun değil, üst üste binen 3 farklı sorun vardı:


1. Postfix yanlış SSL sertifikası kullanıyordu. CyberPanel kurulumunda Postfix, Dovecot'un self-signed sertifikasını (/etc/pki/dovecot/certs/dovecot.pem) kullanıyordu. XenForo'nun Symfony Mailer'ı bağlandığı hostname ile sertifikadaki CN'i karşılaştırıp uyuşmadığı için reddediyordu.

2. PTR (Reverse DNS) kaydı ayarlanmamıştı. SSL sorununu çözdükten sonra mailler XenForo'dan çıkıyordu ama Gmail reddediyordu: "The IP address sending this message does not have a PTR record setup."

3. Postfix IPv6 kullanıyordu. IPv4 için PTR ayarlansa bile Postfix varsayılan olarak IPv6 ile gönderiyordu ve IPv6 PTR'ı henüz yayılmamıştı.


Çözüm Adımları​


1. Postfix SSL sertifikasını düzelt​

Kod:
postconf -e "smtpd_tls_cert_file=/etc/letsencrypt/live/DOMAIN.COM/fullchain.pem
postconf -e "smtpd_tls_key_file=/etc/letsencrypt/live/DOMAIN.COM/privkey.pem"
systemctl restart postfix

2. /etc/hosts'a kayıt ekle​

Sunucu kendi domain'ine bağlanırken Cloudflare proxy'sine gitmesin:
Kod:
echo "127.0.0.1 DOMAIN.COM mail.DOMAIN.COM" >> /etc/hosts

3. XenForo config.php ayarı​

Kod:
$config['emailTransport'] = [
    'smtp' => [
        'host' => 'DOMAIN.COM',
        'port' => 465,
        'encryption' => 'ssl',
        'auth' => true,
        'username' => '[email protected]',
        'password' => 'SIFRENIZ',
    ],
];

4. Kullandığın Servis'de PTR (Reverse DNS) ayarla​


Networking → Primary IPs → Edit Reverse DNS → mail.DOMAIN.COM yaz.
IPv4 ve IPv6 için ayrı ayrı yapılmalı.

5. Postfix hostname'ini güncelle​

Kod:
postconf -e "myhostname=mail.DOMAIN.COM"
systemctl restart postfix

6. IPv4'e zorla​

Kod:
postconf -e "inet_protocols=ipv4"
systemctl restart postfix

Kontrol Komutları​

Kod:
# PTR doğrulama
dig -x SUNUCU_IP +short

# SSL sertifika doğrulama
openssl s_client -connect DOMAIN.COM:465 2>/dev/null | openssl x509 -noout -subject

# Postfix ayarları
postconf -n | grep -E "myhostname|smtpd_tls_cert|inet_protocols"

# Mail logları
tail -50 /var/log/mail.log

Önemli Notlar​

  • Cloudflare'de mail A kaydı mutlaka "DNS only" (gri bulut) olmalı. Turuncu bulut yani proxied mail trafiğini bozar.
  • config.php'deki $config['emailTransport'] ayarı, XenForo Admin Panel'deki mail ayarlarını ezer. (override eder.)
  • /etc/hosts eklenmezse Cloudflare proxy'si nedeniyle sunucu kendi kendine bağlanamaz.

Umarım aynı sorunu yaşayanlara yardımcı olur.
Selametle.