SMTP (Yandex, Gmail vd) Mail Gönderim hatalarına farklı bir bakış:

Yandex, yaklaşık 5-6 yıl önce Gmail’in ücretli sunduğu kurum mail hizmetine rakip olarak ücretsiz sunduğu Yandex Kurum’u duyurmuştu. Geçtiğimiz 1-2 yıl içerisinde de Yandex Kurum’u, Yandex Connect’e çevirdi ve aynı hizmeti yine ücretsiz olarak sağlamaya devam etti. Hal böyle olunca bu servis üzerinden ciddi bir kullanıcı kazanmış oldu.

İşte bu yaygın servisin yıllardır forumlarda dolaşan, tartışma konusu olan oldukça sık karşılaşılan iki problem var ve maalesef bu sorunlar çoğu kimseler tarafından çözülemeyen ve geliştiricilere – developer’lara saç baş yoldurtan problemler olmuş, gelin hızlıca bir bakalım bunlara.

(Yandex’in ücretsiz sağladığı bu hizmeti ücretli bir servise dönüştürme çalışmaları başlatıldı..)

Bu hatalarla Yandex SMTP Mail gönderimi sırasında karşılaşılır:

İlk hata:

Connection could not be established with host smtp.yandex.com hatasıdır. Biraz derinlere inip console’dan şöyle bir istek attığınızda:

# echo QUIT | openssl s_client -connect smtp.yandex.com:465

Verify return code: 20 (unable to get local issuer certificate) hatasını, alırsınız bunun nedeni ise kullandığınız sunucu sertifikasının geçersiz, süresi dolmuş ya da hatalı olmasıdır.

 

İkinci hata:

Error: Please check your configuration
Expected response code 250 but got code “553”, with message “553 5.7.1 Sender address rejected: not owned by auth user. “

 

Şimdi hızlıca bu hataların çözümlerinden söz edelim, yanıtı kısa olan problemden başlayalım:

1. Hatamız, Error: Please check your configuration Expected response code 250 but got code “553”, with message “553 5.7.1 Sender address rejected: not owned by auth user hatasının nedeni, Yandex’in gönderen e-posta adresi / sender ile SMTP kullanıcı adı – username’in aynı olmasını istemesidir.

Dolayısı ile çözüm olarak sender ve username’i mail’i gönderecek adres olarak aynı tanımlamalısınız. Kullandığınız altyapı, teknoloji fark etmiyor, ASP, PHP, Laravel, Python, WordPress, Opencart, Prestashop vs. hepsi için geçerli bu durum.

 

2. Hata olan, Connection could not be established with host smtp.yandex.com hatasının nedeni ise 465 with SSL olarak ayarladığınız SMTP ayarının sunucunuzda kurulu güvenlik sertifikasına takılmasıdır. SSL versiyonu eski olabilir, geçerlilik süresi dolmuş olabilir, konfigüre hatası olabilir vs. vs.

Yandex SMTP ayarlarını yaparken tavsiye edilen ayarlar:

Bağlantı: SSL ve Port: 465‘tir. İşte buradaki bağlantı seçeneği olan SSL için, sizin sunucunuzla Yandex sunucuları arasındaki el sıkışma işlemi başarısız olursa Yandex yanıt olarak size bu hatayı gönderir. Bunun nedenini ise yukarda paylaştık.

-Ama bizim sitemizde SSL kurulu ve yeşil asma kilit bar aktif yani SSL doğru çalışıyor.- diye düşünebilirsiniz. Bu noktada dikkat etmeniz gereken husus, web sitenizin domain, HTTP protokolü üzerinde kurulu olan SSL (Ücretli SSL, ücretsiz LetsEnc., CloudFlare’in sağladığı default SSL vs.) ile sunucunun sertifikasının (genellikle OpenSSL kullanılır) karıştırılmamasıdır. Console erişimiz olduğunu varsayarak aşağıdaki komutu çalıştırmanızı ve sonucuna bakmanızı rica edeceğim:

# echo QUIT | openssl s_client -connect smtp.yandex.com:465

Çalıştırdığınızda, aşağıdaki gibi (Verify return code: 20 unable to get local issuer certificate) yanıt alacaksınız muhtemelen.

Yandex SMTP SSL Error sending Verify return code 20 unable to get local issuer certificate

 

Bu noktada çözüm için kullandığınız SSL ile ilgili problemi tespit edip çözmeniz gerekecek. Benim karşılaştığım olayda sunucuda OpenSSL kuruluydu ve sertifikanın geçerlilik süresi sona ermişti, güncelleyerek çözdüm. Benzer bir durumla karşı karşıyaysanız;

OpenSSL için tanımlı yolu şöyle görebilirsiniz:

# which openssl

versiyonu öğrenmek için

# openssl version

Gerekli güncelleme işlemlerinden sonra doğru path – yol’u ve dosyayı tanımladığınızdan emin olun ve servisleri yeniden başlattığınızdan emin olun. Örneğin, PHP kullanıyorsanız, hangi site için işlem yapacaksanız phpinfo(); ile genel duruma ve php.ini yoluna bakabilirsiniz,

dosyayı tanımlayacağınız değişken, openssl.cafile = “yol/bla/dosya.pem”

yolu tanımlayacağınız değişken, openssl.capath

diyebilirsiniz. Sorunun ve çözümün ne olduğu anlaşıldı ne de olsa, gerisini halledebileceğinizi düşünerek sözü daha fazla uzatmayayım,

 

OpenSSL’i güncellememek için de buradaki makaleden faydalanabilirsiniz: https://webhostinggeeks.com/howto/how-to-install-and-update-openssl-on-centos-6-centos-7/

 

Kalın sağlıcakla.


Bir önceki yazımız olan Cemal Süreya - Yarımada Şiiri başlıklı makalemizde Cemal Süreya hakkında bilgiler verilmektedir.

Bir Cevap Yazın