Öyle bir seyir defteri…

Telnet ile SMTP doğrulama ile e-posta gönderiminin test edilmesi

08 Haziran 2014 Pazar, 14:44 | Gezegen

Herhangi bir sunucudan e-posta gönderip gönderemediğinin en temel yöntemi, telnet komutuyla herhangi bir e-posta istemcisinin haberleşmesini taklit etmek. Böylece sorunun (varsa) nerede olduğunu tespit etmek mümkün. Eğer telnet’le e-posta gönderirken sorun yaşamıyorsanız, sorun kullanmak istediğiniz istemci ayarlarında demektir.

İstemciler her zaman anlamlandırabileceğimiz hata mesajları da vermeyebiliyor, telnet ile gönderim, bir sorun varsa hangi noktada olduğunu tespit etmekte de yararlı olabilir.

Eğer karşı sunucuya relay hakkınız varsa, isim/parola girmeden kolaylıkla e-posta gönderebilirsiniz. Aşağıdaki anlatımda “AUTH LOGIN” ile “235 2.7.0 Authentication successful” satırları arasında kalan kısmı toptan pas geçebilirsiniz.

Eğer çoğu durumda olduğu gibi e-posta gönderimi için isim/parola doğrulaması yapmanız gerekiyorsa, bu bilgileri base64 kodlayarak göndermeniz gerekiyor. Bunu aşağıdaki perl satırı ile bu kodlamayı yapabiliriz:

perl -MMIME::Base64 -e 'print encode_base64("icerik");'

Örneğin,

[dfisek@karadut ~]$ perl -MMIME::Base64 -e 'print encode_base64("gonderen@alanadi.com");'
Z29uZGVyZW4uY29t
[dfisek@karadut ~]$ perl -MMIME::Base64 -e 'print encode_base64("parolacim");'
cGFyb2xhY2lt

Şimdi e-posta gönderimini test edebiliriz:

[dfisek@karadut ~]$ telnet eposta.alanadi.com 25
Trying 195.112.152.4...
Connected to 195.112.152.4.
Escape character is '^]'.
220 eposta.alanadi.com ESMTP Postfix
AUTH LOGIN
334 VXNlcm5hbWU6

Burada belirtilen VXNlcm5hbWU6 ifadesi, size base64 kodlanmış olarak kullanıcı adınızı girmenizi istiyor. Girelim biz de (üstte kodladığımız ifadeyle):

Z29uZGVyZW4uY29t
334 UGFzc3dvcmQ6

Bu kez de bize base64 kodlanmış olarak parolamızı sordu. Girelim yine (üstte kodladığımız ifadeyle):

cGFyb2xhY2lt
235 2.7.0 Authentication successful

Parola doğrulama işlemini bitirdik. Artık e-postamızla ilgili sunucuya bilgi verebiliriz:

MAIL FROM: gonderen@alanadi.com
250 2.1.0 Ok
RCPT TO: alici@alanadi.com
250 2.1.0 Ok
DATA
354 End data with .

Bu başlıklar, e-postanın kimden kime gideceğini e-posta sunucusuna söyledi. Biz de e-postanın içeriğini yazmak istediğimizi DATA komutuyla e-posta sunucusuna söyledik.

Önce e-postanın başlıklarını yazıyoruz (küçüktür-büyüktür işaretlerinden önce/sonra gelen boşlukları siliniz):

From: Gonderen Adi < gonderen@alanadi.com >
To: Alici Adi < alici@alanadi.com >
Subject: E-posta gönderim testi

İlk “MAIL FROM” e-posta sunucusuna bilgi verirken, burada kullandığımız ikinci “FROM:” göndermek istediğiniz postanın içinde yer alıyor. Artık e-postanın gövdesini yazabiliriz. Yazdıklarımız bittiğinde bir kez boş satıra enter’a, daha sonra bir kez . yazıp enter’a, son olarak da tekrar boş satıra enter’a basmamız gerekiyor. Böylece e-postanın bittiği anlaşılıyor:

E-postam geldiyse beni iki kere pingle.

.
250 2.0.0 Ok: queued as 384E125B587

E-postamız başarıyla kuyruğa alındı.

Bu aşamalardan herhangi birinde takılıyorsanız, gönderimde tam sorunun nerede olduğunu buldunuz demektir.

  1. “Telnet ile SMTP doğrulama ile e-posta gönderiminin test edilmesi” İçin Yapılan 2 Yorum

  2. Turker Sezer 09 Haziran 2014 Pazartesi günü dedi ki :

    Merhabalar,

    Eskiden, telnet ile eposta gonderimi yerimlerimde en on saflarda yer alan konulardan biriydi. Benim okudugum orneklerde de senin verdigin ornekte oldugu gibi base64 icin perl komutu kullaniliyordu. Bu yuzden her seferinde belgeyi acip kopyala yapistir yapiyordum. Lakin sonradan `base64` komutunun [0] daha pratik oldugunu kesfettim. Sen de perl kullaninca base64 yerine ornekteki komutun kullanilmasinin bir sebebi var mi merak ettim.

    Bir de kullanici adi kisminda verdigin hash’i decode edince “gonderen.com” donuyor, typo olmus :)

    [0]: echo -n “Z29uZGVyZW4uY29t” | base64 -d

  3. Do 09 Haziran 2014 Pazartesi günü dedi ki :

    Yok yav, tamamen senin gibi base64 komutunu kaçırmaktan kaynaklanıyor :D.

Bir Yorum Yazın

You are logged in as . To logout, click here.