O karmaşık e-posta haberleşmesinin nasıl çalıştığını hiç düşündünüz mü? Üstten bakışla ne kadar karmaşık görünüyor değil mi. Oysa, gerçekte, hiç te o kadar zor sayılmaz. Öncelikle sistemin nasıl çalıştığını bilmek gerekir. Bu yazıda Sistemin nasıl çalıştığı ile fikir sahibi olmanız için sistemi örneklerle anlatmaya çalışıcam
E-posta sistemi 2 bölümden oluşur
1-Post office protokol(POP3):
POP3 bizim posta kutumuza gelen mesajları oradan almamız için e-posta programımızla (Netscape Messenger veya Outlook Express gibi.) abonesi olduğumuz POP3 server'i arasında geçen konuşup anlaşma protokulüdür. Bu protokolün nasıl işlediğini kendimiz de, e-posta programı kullanmadan TELNET vasıtasıyla görerek deneyebiliriz. Ayrıca bu bize başka yararlar da sağlayacaktır. Örneğin e-mail programıyla alamadığımız bazı postaları hiç almadan posta kutusundan silmemiz mümkün olacaktır. Ya da kendi SMTP server'imizi hiç kullanmadan istediğimiz birisinin posta kutusuna kısa mesajlar bırakabiliriz.
POP3 protokolü sırasında e-mail programı bazı standart komutlar kullanmak zorundadır.
Bunlar:
USER <KullanıcıAdı> :Bunu yazarak POP3 server'e hangi kullanıcı olarak bağlandığımızı belirtmiş oluruz.
Örneğin
PASS <Parola> :Bunu yazarak bağlanılan kullanıcının parolasını veririz. Eğer parola yanlışsa bağlanamayız.
Örneğin
STAT :Posta kutumuzun durumunu almak için kullanılan komuttur. Yani posta kutusunda kaç mesaj var ve toplam büyüklüğü nedir, sorularının yanıtını bu komutla alırız.
veya
LIST [MsgNo] :Mesajların listesini ve her birinin büyüklüğünü verir. Eğer MsgNo yazılırsa aynı işlemi sadece o nolu mesaj için yapar.
Mesaj nosu yazmadan komutu verirsek
Şeklinde bir liste verir bize ve en sonunda da bittiğini göstermek için sadece ilk kolonunda . (nokta) olan bir satır gönderir. Böylece biz (e-mail programı anlar ki tüm mesajlar bunlarmış.)
Mesaj nosu yazarak (1 nolu mesaj) komutu verirsek
UIDL [MsgNo] :Her mesajın, başka bir mesajda aynısı olayan (benzersiz, unique) bir kodu vardır. Bu komut bize o kodu verir. Özellikle e-mail programlarında (örneğin Outlook Express 5'te Tools|Accounts|<xx internet account> Properties menüsünde Advanced sayfasındaki Leave a copy of messages on server işaretlendiğinde aldığın mesajları posta kutusundan silme, kalsın anlamına gelir. Dolayısıyla tekrar bağlanılıp mesajlar alınırken Outlook Express 5 daha önce aldığı mesajları işte bu mesaj ID'si yardımıyla tesbit ederek onları birdaha tekrar almaz. Eğer mesajlar Outlook Express Inbox'tan ve Deleted Items'dan silinirse aynı mesajları tekrar alacaktır. Eğer Leave a copy of messages on server İşaretli değilse Outlook Express bu kontrolu yapmaz, dolayısıyla herhangi bir nedenle bağlantı kesilirse daha sonra mesajları tekrar çekmeye kalktığımızda aynı mesajları tekrar alacaktır.
Komutlar Telnetten yazılırsa
TOP <MsgNo> <SatırNo> : Belirtilen numaralı mesajın satır nosu olarak verilen en üstten (mesaj gövdesi başladıktan itibaren) o kadar satırı server'den okumak için kullanılır. Server en sonunda ilk kolonunda nokta olan bir satır gönderir. Böylece gönderimin bittiği anlaşılır.
RETR <MsgNo> :Belirtilen numaralı mesajın tümünü almak için bu komut verilir. Server mesajın sonunda, ilk kolonunda nokta olan bir satır gönderir. Böylece mesajın bittiği anlaşılır.
DELE <MsgNo> :Belirtilen mesajı sil komutudur. Örneğin 5 nolu mesajı silmek için
yazdığımızda
yanıtını veren server 5 nolu mesajı sildiğini bu şekilde belirtecektir.
QUIT :Server'le bağlantının kesileceği komutunu verir. Bu komut verilir verilmez Server posta kutusundaki güncellemeleri yaparak bağlantıyı keser. Bağlantı başka şekillerde (örneğin Telnet penceresini kapatarak veya menüden Disconnect'e basarak) kesilirse çoğu server'de posta kutusu güncellenmez, dolayısıyla QUIT komutuyla çıkmaya dikkat etmek gerekir.
ve bağlantı kesilir, Telnet penceresi boşalır.
LAST :Son mesaja konumlanmayı sağlar. Çok kullanılmayan bir komuttur.
RSET :Bir server'den bağlantıyı kesmeden başka bir kullanıcı ile login olmayı sağlar.
Örneğin
gibi.
NOOP :İşlem yapma demek. Ne için kullanıldığını bilmiyorum. Bir işe yarıyordur mutlaka ama önemli olduğunu sanmıyorum. Belki yeni serverler buna hata mesajı veriyor olabilirler. Bunun için ilgili RFC'ye bakmak lazım. Uzun iş…
Tabii bunların sonucunda şu soru sorulabilir.
"Biz tüm bunları yapıyoruz ama bunların hepsi Text formatında ve şifrelenmemiş yazılar tarzında, bu hacker'lar için bir ziyafet değil mi ?"
Ne yazık ki bu doğru! Adamcağızlar uğraşmış didinmişler ve son derece esnek harika bir sistem kurmuşlar. Şimdi hacker'lar yüzünden bunu değiştirecek miyiz. Bence gerek yok. Onlara karşı en iyi korunma mesajların ulaşılmaz derecede çok olması olacaktır. İnternette o kadar çok mesaj dolaşıyor ki garipler hangi birini inceleyecekler.
Mustafa Özpınara yazısından ötürü teşekkürler.
E-posta sistemi 2 bölümden oluşur
1-Post office protokol(POP3):
POP3 bizim posta kutumuza gelen mesajları oradan almamız için e-posta programımızla (Netscape Messenger veya Outlook Express gibi.) abonesi olduğumuz POP3 server'i arasında geçen konuşup anlaşma protokulüdür. Bu protokolün nasıl işlediğini kendimiz de, e-posta programı kullanmadan TELNET vasıtasıyla görerek deneyebiliriz. Ayrıca bu bize başka yararlar da sağlayacaktır. Örneğin e-mail programıyla alamadığımız bazı postaları hiç almadan posta kutusundan silmemiz mümkün olacaktır. Ya da kendi SMTP server'imizi hiç kullanmadan istediğimiz birisinin posta kutusuna kısa mesajlar bırakabiliriz.
POP3 protokolü sırasında e-mail programı bazı standart komutlar kullanmak zorundadır.
Bunlar:
USER <KullanıcıAdı> :Bunu yazarak POP3 server'e hangi kullanıcı olarak bağlandığımızı belirtmiş oluruz.
Örneğin
Kod:
>USER aguler /Bizim yazdığımız
Bu kullanıcı server'de tanımlıysa Server'in yanıtı,
<+OK welcome aguler
eğer bu kullanıcı olmasaydı
<-ERR … şeklinde olacaktır. (Bazı server'ler kullanıcı yoksa hatayı PASS komutundan sonra verirler.)
PASS <Parola> :Bunu yazarak bağlanılan kullanıcının parolasını veririz. Eğer parola yanlışsa bağlanamayız.
Örneğin
Kod:
>PASS ozelbisiy
doğruysa
<+OK …
yanlışsa
<-ERR invalid password (veya –ERR …) şeklinde yanıt verecektir.
STAT :Posta kutumuzun durumunu almak için kullanılan komuttur. Yani posta kutusunda kaç mesaj var ve toplam büyüklüğü nedir, sorularının yanıtını bu komutla alırız.
Kod:
>STAT
<+OK 0 0<t> Posta kutusunda hiç mesaj yokmuş
Kod:
<+OK 6 15978<t> Posta kutusunda 6 adet mesaj varmış ve toplam büyüklüğü 15978 (byte|octet) miş
LIST [MsgNo] :Mesajların listesini ve her birinin büyüklüğünü verir. Eğer MsgNo yazılırsa aynı işlemi sadece o nolu mesaj için yapar.
Mesaj nosu yazmadan komutu verirsek
Kod:
>list
<+OK 11 messages (218146 octets)
<1 940
<2 7044
<3 165064
<4 863
<5 1907
<6 907
<7 2500
<8 2091
<9 4445
<10 1223
<11 31162
<.
Şeklinde bir liste verir bize ve en sonunda da bittiğini göstermek için sadece ilk kolonunda . (nokta) olan bir satır gönderir. Böylece biz (e-mail programı anlar ki tüm mesajlar bunlarmış.)
Mesaj nosu yazarak (1 nolu mesaj) komutu verirsek
Kod:
>list 1
<+OK 1 940
UIDL [MsgNo] :Her mesajın, başka bir mesajda aynısı olayan (benzersiz, unique) bir kodu vardır. Bu komut bize o kodu verir. Özellikle e-mail programlarında (örneğin Outlook Express 5'te Tools|Accounts|<xx internet account> Properties menüsünde Advanced sayfasındaki Leave a copy of messages on server işaretlendiğinde aldığın mesajları posta kutusundan silme, kalsın anlamına gelir. Dolayısıyla tekrar bağlanılıp mesajlar alınırken Outlook Express 5 daha önce aldığı mesajları işte bu mesaj ID'si yardımıyla tesbit ederek onları birdaha tekrar almaz. Eğer mesajlar Outlook Express Inbox'tan ve Deleted Items'dan silinirse aynı mesajları tekrar alacaktır. Eğer Leave a copy of messages on server İşaretli değilse Outlook Express bu kontrolu yapmaz, dolayısıyla herhangi bir nedenle bağlantı kesilirse daha sonra mesajları tekrar çekmeye kalktığımızda aynı mesajları tekrar alacaktır.
Komutlar Telnetten yazılırsa
Kod:
>uidl
<+OK
<1 4cf6ef281a0eaae6f906669ad5d097e9
<2 49ba75aeb7a13ad9925979c91b8b67fe
<3 74af7f5470ec50e639c5c0e750b99e99
<4 c335fced9d3004aa794e636646ed84c9
<5 B0003006265.MSG
<6 <[email protected]>
<7 84fe916939f91687ad3487c45237cfce
<8 2691d46fc915d63f488e797fb860ba7e
<9 B0003018571.MSG
<10 <[email protected]>
<11 B0003020608.MSG
<.
>uidl 1
<+OK 1 4cf6ef281a0eaae6f906669ad5d097e9 şeklinde sonuçlar alınacaktır.
TOP <MsgNo> <SatırNo> : Belirtilen numaralı mesajın satır nosu olarak verilen en üstten (mesaj gövdesi başladıktan itibaren) o kadar satırı server'den okumak için kullanılır. Server en sonunda ilk kolonunda nokta olan bir satır gönderir. Böylece gönderimin bittiği anlaşılır.
Kod:
>TOP 5 1
<……
<…..
<…..
<.
RETR <MsgNo> :Belirtilen numaralı mesajın tümünü almak için bu komut verilir. Server mesajın sonunda, ilk kolonunda nokta olan bir satır gönderir. Böylece mesajın bittiği anlaşılır.
Kod:
>RETR 5
<……
<……
<……
<.
DELE <MsgNo> :Belirtilen mesajı sil komutudur. Örneğin 5 nolu mesajı silmek için
Kod:
>DELE 5
Kod:
<+OK
yanıtını veren server 5 nolu mesajı sildiğini bu şekilde belirtecektir.
QUIT :Server'le bağlantının kesileceği komutunu verir. Bu komut verilir verilmez Server posta kutusundaki güncellemeleri yaparak bağlantıyı keser. Bağlantı başka şekillerde (örneğin Telnet penceresini kapatarak veya menüden Disconnect'e basarak) kesilirse çoğu server'de posta kutusu güncellenmez, dolayısıyla QUIT komutuyla çıkmaya dikkat etmek gerekir.
Kod:
>QUIT
<+OK ………
ve bağlantı kesilir, Telnet penceresi boşalır.
LAST :Son mesaja konumlanmayı sağlar. Çok kullanılmayan bir komuttur.
RSET :Bir server'den bağlantıyı kesmeden başka bir kullanıcı ile login olmayı sağlar.
Örneğin
Kod:
>USER agil
<+OK …..
>PASS ghtj
<+OK
>LIST
<+OK 0 messages (0 octets)
<.
>RSET
<+OK
>USER ggg
<+OK …..
>PASS hhhh
<+OK ….
>LIST
<+OK 0 messages (0 octets)
<.
gibi.
NOOP :İşlem yapma demek. Ne için kullanıldığını bilmiyorum. Bir işe yarıyordur mutlaka ama önemli olduğunu sanmıyorum. Belki yeni serverler buna hata mesajı veriyor olabilirler. Bunun için ilgili RFC'ye bakmak lazım. Uzun iş…
Tabii bunların sonucunda şu soru sorulabilir.
"Biz tüm bunları yapıyoruz ama bunların hepsi Text formatında ve şifrelenmemiş yazılar tarzında, bu hacker'lar için bir ziyafet değil mi ?"
Ne yazık ki bu doğru! Adamcağızlar uğraşmış didinmişler ve son derece esnek harika bir sistem kurmuşlar. Şimdi hacker'lar yüzünden bunu değiştirecek miyiz. Bence gerek yok. Onlara karşı en iyi korunma mesajların ulaşılmaz derecede çok olması olacaktır. İnternette o kadar çok mesaj dolaşıyor ki garipler hangi birini inceleyecekler.
Mustafa Özpınara yazısından ötürü teşekkürler.