12 Uygulama katmanı: web, e-posta ve dosya aktarımı

6. haftada portları ve bir web isteğinin dört adımını gördün. O adımlarda bağlantıyı TCP kuruyor, paketi IP taşıyordu. Bu hafta en üst katmana, uygulamaların kendi aralarında konuştuğu dile bakıyoruz. Tarayıcı web sunucusuyla HTTP konuşur, e-posta programı posta sunucusuyla SMTP ve IMAP konuşur, dosya aktaran program FTP ya da SFTP konuşur. Her protokolün kendi kuralları, kendi hata mesajları ve kendi portu vardır. Bir şikâyet geldiğinde hangi protokolün işinin bozulduğunu bilirsen aramaya doğru yerden başlarsın.

URL’nin parçaları, HTTP durum kodları, HTTPS ve kilit simgesi, e-postanın yolu, IMAP ile POP3 farkı ve dosya aktarımının özeti.

URL’nin parçaları, HTTP durum kodları, HTTPS ve kilit simgesi, e-postanın yolu, IMAP ile POP3 farkı ve dosya aktarımının özeti.
NotBu haftanın kapsamı

Sınavda sorulur: URL’nin parçaları (protokol, alan adı, port, yol); HTTP isteği ve yanıtı, GET ile POST farkı; durum kodu grupları ve 200, 301, 404, 500; HTTPS’te TLS’in iki işi (şifreleme ve sertifikayla sunucunun kimliğini doğrulama) ve kilit simgesinin neyi göstermediği; SMTP, IMAP ve POP3’ün görevleri; IMAP ile POP3 farkı; tarayıcıdan girilen e-postanın HTTPS kullanması; MX kaydı; e-postadaki “Kimden” satırının kanıt olmaması; FTP ile SFTP farkı; soruda verilen bir portu protokolüyle eşleştirme.

Sınav dışı (bilgi amaçlı): e-posta ve dosya aktarımı portlarının numaraları (soruda geçerse protokolüyle birlikte verilir), SPF, DKIM ve DMARC’ın nasıl çalıştığı, FTP’nin aktif ve pasif modu, HTTP/2 ile HTTP/3 farkı, çerez ve oturum.

12.1 Bir URL’nin parçaları

Tarayıcının adres çubuğuna yazdığın satıra URL denir. URL bir kaynağın internetteki tam adresidir: hangi protokolle, hangi sunucuya, hangi porttan bağlanılacağını ve sunucudan ne isteneceğini söyler.

https://okul-sunucu.example:8443/duyurular/sinav.html
└─┬─┘   └────────┬────────┘ └┬─┘└─────────┬─────────┘
protokol      alan adı      port         yol
Parça Örnekte Kim kullanır
Protokol https Tarayıcı hangi dili konuşacağını ve varsayılan portu buradan seçer
Alan adı okul-sunucu.example DNS bunu IP adresine çevirir (6. ve 9. hafta)
Port 8443 TCP bu porta bağlanır. Yazılmazsa protokolün varsayılan portu kullanılır: https için 443, http için 80
Yol /duyurular/sinav.html Sunucu hangi sayfayı göndereceğine buna bakarak karar verir

URL’nin her parçası farklı bir adımda kullanılır. Alan adı yanlışsa DNS hata verir, port kapalıysa bağlantı kurulamaz, yol yanlışsa sunucu “bu sayfa yok” der. Hata mesajı hangi parçanın sorunlu olduğunu gösterir.

12.2 Vaka 1: Adres doğru görünüyor, sayfa yok

Bir öğrenci sınav takviminin adresini mesajlaşma grubundan kopyalıyor. Sayfa açılmıyor, tarayıcıda “404 Not Found” yazıyor. Öğrenci “Okulun interneti yine gitti” diye düşünüyor. Aynı adresi komutla deniyoruz:

> curl.exe -I https://okul-sunucu.example/duyuru/sinav-takvimi
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8

-I seçeneği curl’e sayfanın kendisini değil, yalnız yanıtın başlık satırlarını getirmesini söyler. Windows PowerShell’de curl yazınca başka bir komut çalıştığı için komutun adı curl.exe diye yazılır (4. hafta).

12.2.1 Kanıt ne söylüyor

Çıktının ilk satırı durum satırıdır. Sunucu her yanıtın başına üç basamaklı bir durum kodu koyar. Kodun ilk basamağı yanıtın hangi gruba girdiğini söyler:

Grup Anlamı Sık görülen kod
2xx İstek başarılı 200 OK: sayfa gönderildi
3xx Kaynak başka bir adreste, tarayıcı oraya gider 301 Moved Permanently: sayfa kalıcı olarak taşındı
4xx İstekte sorun var 404 Not Found: bu yolda sayfa yok
5xx Sunucu isteği işlerken hataya düştü 500 Internal Server Error: sunucudaki yazılım hata verdi

Burada 404 geldi. Bir yanıt geldiyse alan adı çözülmüş, TCP bağlantısı kurulmuş ve sunucu isteği okumuş demektir. Ağ çalışıyor. Sorun URL’nin yol kısmında: mesajlaşma grubundaki adreste duyurular yerine duyuru yazılmış. Doğru yolla istek 200 OK döndürür.

ÖnemliYanlış refleks: durum kodunu “internet yok” diye okumak

404 ve 500 gibi kodları sunucu gönderir. Bu kodu görüyorsan sunucuya ulaşmışsın demektir. Modemi yeniden başlatmak ya da Wi-Fi’ı değiştirmek bu sorunu çözmez. 404 görünce önce adresi, 500 görünce sitenin kendisini sorgula. Ağ sorunu varken durum kodu gelmez, 6. haftada gördüğün Could not resolve host ya da Connection timed out gibi bir hata gelir.

12.2.2 HTTP isteği ve yanıtı

Tarayıcı sunucuya bir HTTP isteği gönderir, sunucu da bir HTTP yanıtı döndürür. İstek kısa ve okunabilir bir metindir:

GET /duyurular/sinav.html HTTP/1.1
Host: okul-sunucu.example

İlk sözcük isteğin türüdür, buna yöntem denir. Bu derste iki yöntem yeter:

  • GET: bir sayfayı ya da dosyayı ister. Adres çubuğuna adres yazıp Enter’a bastığında tarayıcı GET gönderir.
  • POST: sunucuya veri gönderir. Bir giriş formunu ya da ödev yükleme formunu gönderdiğinde tarayıcı POST kullanır.

Yanıtın ilk satırı durum satırıdır (HTTP/1.1 200 OK), ardından başlık satırları ve sayfanın kendisi gelir. Bütün bu metin TCP bağlantısının içinde gider. HTTP’de metin şifrelenmez: aynı ağdaki biri trafiği yakalarsa formda gönderdiğin parolayı da okuyabilir. HTTPS’te aynı istek TLS ile şifrelenmiş bağlantının içinde gider.

12.3 Vaka 2: Gönderen okul, sayfa kilitli, hesap çalındı

Bir öğrenciye şu e-posta geliyor:

Kimden : Bilgi İşlem <[email protected]>
Konu   : Hesabınız 24 saat içinde kapatılacak
İçerik : Hesabınızı doğrulamak için tıklayın:
         https://okul-example-giris.example/oturum

Öğrenci bağlantıya tıklıyor. Açılan sayfa okulun giriş sayfasına benziyor, adres çubuğunda kilit simgesi var. Öğrenci kullanıcı adını ve parolasını giriyor. Ertesi gün hesabından başkası giriş yapmış.

12.3.1 Kanıt ne söylüyor

İki şey öğrenciyi yanılttı: “Kimden” satırı ve kilit simgesi. İkisi de sitenin gerçek olduğunu kanıtlamaz.

“Kimden” satırı kanıt değildir. E-postayı gönderen program “Kimden” satırına istediği adresi yazabilir. E-postayı taşıyan SMTP protokolü bu satırın doğru olup olmadığını kendisi denetlemez. Bugün posta sunucuları sahte göndericiyi yakalamak için ek denetimler yapar ve sahte iletilerin çoğunu istenmeyen posta klasörüne atar. Ama hepsini yakalayamaz.

Kilit simgesi neyi gösterir? HTTPS’te TLS iki iş yapar:

  1. Şifreleme: Tarayıcıyla sunucu arasındaki trafiği şifreler. Yoldaki biri paketleri yakalasa da içeriği okuyamaz.
  2. Kimlik doğrulama: Sunucu tarayıcıya bir sertifika gösterir. Sertifika, sitenin alan adını doğrulayan ve güvenilir bir kuruluşun imzaladığı elektronik belgedir. Tarayıcı imzayı denetler ve sertifikadaki adın adres çubuğundaki alan adıyla aynı olup olmadığına bakar.

Kilit simgesi bu iki denetimin geçtiğini gösterir: “Bağlantı şifreli ve gerçekten okul-example-giris.example adlı sunucuyla konuşuyorsun.” Sitenin dürüst olduğunu göstermez. Sahte sitenin sahibi kendi alan adını almış ve o ada sertifika da almış. Bağlantı şifreli, ama parola doğrudan saldırgana gitmiş.

Asıl kanıt alan adının kendisi. Okulun giriş sayfası okul.example alan adındaysa okul-example-giris.example başka bir alan adıdır, içinde “okul” sözcüğünün geçmesi bir şey değiştirmez. Böyle bir e-posta geldiğinde bağlantıya tıklama, okulun adresini adres çubuğuna kendin yaz.

UyarıSertifika uyarısında devam etme

Tarayıcı “Bağlantınız gizli değil” diye uyarıyorsa ve altında NET::ERR_CERT_COMMON_NAME_INVALID ya da NET::ERR_CERT_DATE_INVALID gibi bir kod varsa sertifika denetimi geçmemiş demektir. Sertifika başka bir ada ait olabilir, süresi dolmuş olabilir ya da araya biri girmiş olabilir. Bu sayfada parola girme. Bu tür saldırıları ve korunma yollarını 13. haftada göreceğiz.

12.4 E-posta nasıl gider?

E-postada tarayıcıdan farklı olarak iki ayrı iş vardır: iletiyi göndermek ve gelen iletiyi okumak. İki işi farklı protokoller yapar. Okuldaki bir öğretim elemanının [email protected] adresine e-posta gönderdiğini düşünelim:

Gönderenin    SMTP     Okulun posta    SMTP      Alıcının posta    IMAP / POP3    Alıcının
programı    ──────→   sunucusu      ──────→    sunucusu        ←──────────    telefonu
                          │                         (posta kutusu)
                          │ DNS: "posta.example'ın postasını
                          │       hangi sunucu alır?" (MX kaydı)
  1. Gönderenin e-posta programı iletiyi SMTP ile okulun posta sunucusuna verir.
  2. Okulun sunucusu alıcının alan adına bakar ve DNS’e sorar: “posta.example’ın postasını hangi sunucu alıyor?” DNS’te bu soruyu cevaplayan kayda MX kaydı denir.
  3. Okulun sunucusu iletiyi yine SMTP ile alıcının posta sunucusuna aktarır. İleti orada alıcının posta kutusunda bekler.
  4. Alıcı telefonunu açınca e-posta uygulaması IMAP ya da POP3 ile posta kutusuna bağlanır ve iletiyi alır.

SMTP iletiyi gönderir ve bir sunucudan ötekine taşır. IMAP ve POP3 posta kutusundaki iletiyi okutur. SMTP posta kutusunu okumaz, IMAP ve POP3 de ileti göndermez. Bu yüzden bir e-posta programını kurarken iki ayrı sunucu bilgisi istenir: gelen posta sunucusu (IMAP ya da POP3) ve giden posta sunucusu (SMTP).

E-postanı tarayıcıdan okuyorsan, örneğin okulun web postasına giriyorsan, bilgisayarın SMTP ya da IMAP konuşmaz. Tarayıcın web sunucusuyla HTTPS konuşur, SMTP ve IMAP işlerini sunucu tarafı yapar. Okul ağı IMAP portunu engellese bile web postası açılır.

12.5 Vaka 3: Postalar bilgisayarda var, telefonda yok

Bir öğretim elemanı okul e-postasını yıllardır bilgisayarındaki e-posta programıyla okuyor. Yeni telefonuna da hesabı ekliyor. Telefonda gelen kutusu boş. Yeni gelen iletiler bir an telefonda görünüyor, bilgisayar açılınca telefondan da kayboluyor.

Bilgisayardaki programın hesap ayarları:

Gelen posta sunucusu : pop.okul.example
Hesap türü           : POP3
[x] İletileri indirdikten sonra sunucudan sil

Telefondaki hesap türü ise IMAP.

12.5.1 Kanıt ne söylüyor

İki protokol posta kutusunu farklı kullanır:

IMAP POP3
İletiler nerede durur? Sunucudaki posta kutusunda Cihaza indirilir
Okundu bilgisi, klasörler Bütün cihazlarda eşitlenir Yalnız indiren cihazda kalır
Birden çok cihaz Hepsi aynı kutuyu görür Her cihaz kendi indirdiğini görür

Bilgisayardaki program POP3 ile bağlanıyor ve “sunucudan sil” ayarı açık. Program her açıldığında yeni iletileri indiriyor ve sunucudan siliyor. Telefon IMAP ile sunucudaki kutuya bakıyor ve kutuyu boş buluyor. Telefonun bağlantısında bir sorun yok, gösterecek ileti kalmamış.

POP3 her zaman silmez. İndirdikten sonra sunucuda kopya bırakmak bir program ayarıdır. Ama kopya kalsa bile okundu bilgisi ve klasörler cihazlar arasında eşitlenmez. Birden çok cihaz kullanılan bugünkü düzende hesabı IMAP ile kurmak gerekir. Çözüm: bilgisayardaki hesabı IMAP ile yeniden kurmak. Eski iletiler bilgisayarda kalır, istenirse programdan sunucudaki klasöre taşınır.

12.6 Vaka 4: Gelen posta geliyor, giden gitmiyor

Bir öğrenci dizüstü bilgisayarındaki e-posta programına okul hesabını elle ekledi. Gelen iletiler sorunsuz iniyor. İleti göndermeye çalışınca program bir süre bekliyor, sonra “Giden posta sunucusuna bağlanılamadı” diyor. Programdaki ayarlar:

Gelen (IMAP) : imap.okul.example   port 993
Giden (SMTP) : smtp.okul.example   port 25

Öğrenci iki portu PowerShell’de Test-NetConnection ile deniyor (6. hafta):

PS> Test-NetConnection imap.okul.example -Port 993

ComputerName     : imap.okul.example
RemoteAddress    : 203.0.113.24
RemotePort       : 993
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.1.34
TcpTestSucceeded : True

PS> Test-NetConnection smtp.okul.example -Port 25
WARNING: TCP connect to (203.0.113.25 : 25) failed

ComputerName           : smtp.okul.example
RemoteAddress          : 203.0.113.25
RemotePort             : 25
InterfaceAlias         : Wi-Fi
SourceAddress          : 192.168.1.34
PingSucceeded          : True
PingReplyDetails (RTT) : 18 ms
TcpTestSucceeded       : False

PS> Test-NetConnection smtp.okul.example -Port 587
...
TcpTestSucceeded : True

12.6.1 Kanıt ne söylüyor

Gelen postanın çalışması bilgisayarın ağa bağlı olduğunu, DNS’in çalıştığını ve okulun sunucusuna ulaşılabildiğini gösteriyor. Sorun yalnız gönderme tarafında. Gönderme SMTP’nin işi, okuma IMAP’ın işi: biri çalışırken öteki bozuk olabilir.

İkinci çıktıda sunucu ping’e cevap veriyor ama 25 numaralı porta bağlantı kurulamıyor. Sunucu ayakta, sorun portta. SMTP’nin iki ayrı kullanımı vardır:

  • Sunucudan sunucuya aktarım: posta sunucuları birbirine TCP 25 üzerinden ileti aktarır.
  • Programdan sunucuya gönderme: e-posta programı iletiyi kendi sunucusuna TCP 587 üzerinden, kullanıcı adı ve parolayla verir.

Pek çok internet sağlayıcısı ve kurum ağı, sıradan bilgisayarların dışarıya 25 numaralı porttan bağlanmasını engeller. Ele geçirilmiş bilgisayarların istenmeyen posta göndermesini böyle önlerler. Öğrencinin programı da 25’i deniyor. Üçüncü test 587’nin açık olduğunu gösteriyor. Giden sunucu portu 587 yapılıp kimlik doğrulama açılınca ileti gidiyor.

ÖnemliYanlış refleks: “Gelen geliyor, demek ki e-posta sağlam”

Gelen posta ile giden posta ayrı protokollerle, ayrı portlardan ve çoğu zaman ayrı sunucularla çalışır. Birinin çalışması ötekinin çalıştığını göstermez. ping’in sunucudan cevap alması da hizmetin portunun açık olduğunu göstermez.

12.7 Dosya aktarımı: FTP ve SFTP

Bir web sitesinin dosyalarını sunucuya yüklemek ya da sunucudan bir yedeği indirmek için dosya aktarım protokolü kullanılır.

FTP, en eski dosya aktarım protokollerinden biridir. İstemci önce sunucunun TCP 21 portuna bağlanır, komutlar bu bağlantıdan gider. Dosyanın kendisi ayrı bir veri bağlantısıyla aktarılır. FTP hiçbir şeyi şifrelemez: kullanıcı adı, parola ve dosya ağda açık gider. Kafeteryadaki ortak Wi-Fi’da FTP ile siteye dosya yükleyen biri parolasını aynı ağdaki herkese göstermiş olur.

SFTP, dosyayı 6. haftada gördüğün SSH bağlantısının içinden aktarır. Bu yüzden SSH’in portu olan TCP 22’yi kullanır ve her şeyi şifreler. Sunucuda SSH ile giriş yapabiliyorsan çoğu zaman SFTP ile dosya da aktarabilirsin. Windows’ta komut hazır gelir:

PS> sftp [email protected]
[email protected]'s password:
Connected to okul-sunucu.example.
sftp> put rapor.pdf
Uploading rapor.pdf to /home/ogrenci/rapor.pdf
sftp> exit

Adları benzese de SFTP, FTP’nin bir sürümü değildir, SSH’in üstünde çalışan ayrı bir protokoldür. FTP’yi TLS ile şifreleyen sürüme FTPS denir. Bugün yeni bir kurulumda dosya aktarmak için SFTP ya da HTTPS üzerinden çalışan bir yükleme sayfası kullanılır, şifresiz FTP kullanılmaz.

12.8 Hepsi bir arada

Ne yapıyorsun? Protokol Taşıma ve port Şifreli mi?
Web sayfası açmak HTTP TCP 80 Hayır
Web sayfası açmak HTTPS TCP 443 Evet, TLS
E-posta programından ileti göndermek SMTP TCP 587 Evet, TLS
İletiyi bir posta sunucusundan ötekine aktarmak SMTP TCP 25 Sunucular anlaşırsa
Posta kutusunu birden çok cihazda kullanmak IMAP TCP 993 Evet, TLS
İletiyi posta kutusundan cihaza indirmek POP3 TCP 995 Evet, TLS
E-postayı tarayıcıdan okumak HTTPS TCP 443 Evet, TLS
Bir alan adının posta sunucusunu bulmak DNS (MX kaydı) UDP 53 Hayır
Dosya aktarmak FTP TCP 21 Hayır
Dosya aktarmak SFTP TCP 22 (SSH) Evet, SSH

Bu tablodaki e-posta ve dosya aktarımı portlarını ezberlemen gerekmez. 6. haftadaki dört port (HTTP 80, HTTPS 443, DNS 53, SSH 22) yeter. Bir soruda başka bir port geçerse protokolüyle birlikte verilir, senden beklenen o protokolün ne iş yaptığını bilmendir. IMAP ve POP3’ün şifresiz eski portları da vardır (143 ve 110), bugün TLS’li sürümleri kullanılır.

12.9 Ekranda ne gördük

Derste aşağıdaki komutlar canlı çalıştırılır. Senin bilgisayarında adresler ve süreler farklı çıkabilir. Komutları Windows’ta PowerShell’de çalıştır (6. haftanın “Ekranda ne gördük” kısmında nasıl açılacağı yazıyor).

> curl.exe -I http://emrecan.dev
HTTP/1.1 301 Moved Permanently            ← 3xx: kaynak başka adreste
Location: https://emrecan.dev/            ← tarayıcı buraya gider: HTTP'den HTTPS'e

> curl.exe -I https://emrecan.dev/yok-boyle-sayfa
HTTP/2 404                                ← sunucu cevap verdi: ağ çalışıyor, yol yanlış

> nslookup -type=mx gmail.com
Non-authoritative answer:
gmail.com  MX preference = 5,  mail exchanger = gmail-smtp-in.l.google.com
gmail.com  MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com
gmail.com  MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com
                                          ← gmail.com'a gelen postayı bu sunucular alır
                                          ← küçük sayı önce denenir, ötekiler yedektir

PS> Test-NetConnection smtp.gmail.com -Port 587
TcpTestSucceeded : True                   ← gönderme portu açık

PS> Test-NetConnection imap.gmail.com -Port 993
TcpTestSucceeded : True                   ← okuma portu açık

İlk komutta adres http ile yazıldı. Sunucu sayfayı göndermek yerine 301 ile HTTPS adresine yönlendirdi. Tarayıcıya http:// yazdığında adres çubuğunun kendiliğinden https://’e dönmesinin nedeni bu yönlendirmedir. İkinci yanıt HTTP/2 ile geldi: aynı protokolün daha yeni bir sürümü, durum kodları aynıdır.

12.10 Sınav provası

Önce kendi cevabını seç; sonra cevap anahtarında her şıkkın neden doğru veya yanlış olduğunu oku. Sınav soruları bu mantıkla yazılır.

1. Bir öğrenci tarayıcıya şu adresi yazıyor:

https://okul-sunucu.example:8443/odev/teslim

Bu adresteki 8443 neyi belirtir?

  • A. Tarayıcının sunucuda bağlanacağı TCP portunu
  • B. Sunucunun IP adresinin son bölümünü
  • C. Sertifikanın seri numarasını
  • D. Sunucuda istenen sayfanın klasör numarasını
  • E. Kullanılan HTTP sürümünü

2. Bir öğrenci ödev sayfasını açamıyor. Teknisyen şu komutu çalıştırıyor:

> curl.exe -I https://odev.okul.example/teslim
HTTP/1.1 500 Internal Server Error

Bu çıktı neyi gösterir?

  • A. İstek sunucuya ulaştı, sunucu isteği işlerken hataya düştü
  • B. Öğrencinin bilgisayarının internet bağlantısı kopuk
  • C. Alan adı DNS’te çözülemedi
  • D. Sunucunun 443 portu kapalı, bağlantı kurulamadı
  • E. Adresin yol kısmı yanlış yazılmış, böyle bir sayfa yok

3. Bir öğrenci e-postadaki bağlantıya tıklıyor. Açılan sayfanın adresi https://okul-example-giris.example/oturum, adres çubuğunda kilit simgesi var. Okulun gerçek giriş sayfası okul.example alan adında. Kilit simgesi bu durumda neyi gösterir?

  • A. Sayfanın zararlı bir içerik barındırmadığını
  • B. Sitenin okula ait olduğunu ve okulun sertifikasını taşıdığını
  • C. Bağlantının şifreli ve sertifikanın bu alan adına ait olduğunu
  • D. E-postanın gerçekten okulun bilgi işleminden geldiğini
  • E. Girilen parolanın okulun sunucusuna gideceğini

4. Bir e-posta programı kurulurken “gelen posta sunucusu” ve “giden posta sunucusu” diye iki ayrı bilgi isteniyor. Bu iki işi hangi protokoller yapar?

  • A. İkisi de SMTP, yalnız portları farklı
  • B. Gelen: SMTP. Giden: IMAP ya da POP3
  • C. İkisi de IMAP, yalnız yönleri farklı
  • D. Gelen: IMAP ya da POP3. Giden: SMTP
  • E. Gelen: HTTPS. Giden: SMTP

5. Bir öğretim elemanı e-postasını bilgisayarındaki programla okuyor. Yeni telefonuna da hesabı ekliyor ama telefonda gelen kutusu boş. Bilgisayardaki ayarlar şöyle:

Hesap türü : POP3
[x] İletileri indirdikten sonra sunucudan sil

Telefonda hesap IMAP ile kurulmuş. En güçlü açıklama hangisidir?

  • A. Telefonun internet bağlantısı yok
  • B. IMAP yalnız tek cihazda çalışır, telefon bilgisayarla yarışıyor
  • C. Okulun MX kaydı yalnız bilgisayarın adresini gösteriyor
  • D. Bilgisayar iletileri indirip sunucudan siliyor, telefon boş kutuyu görüyor
  • E. Telefon gelen iletileri SMTP ile almaya çalışıyor

6. Okulun posta sunucusu [email protected] adresine bir ileti gönderecek. Sunucu posta.example için DNS’e bir kayıt soruyor:

> nslookup -type=mx posta.example
posta.example  MX preference = 10, mail exchanger = mx1.posta.example
posta.example  MX preference = 20, mail exchanger = mx2.posta.example

Bu kayıt neyi söyler?

  • A. posta.example web sitesinin hangi IP adresinde olduğunu
  • B. posta.example alan adına gelen postayı hangi sunucuların aldığını
  • C. İletinin SMTP ile mi IMAP ile mi gideceğini
  • D. posta.example kullanıcılarının iletilerini hangi sunucudan okuyacağını
  • E. posta.example adresinden gelen iletilerin gerçek olduğunu

7. Bir öğrencinin e-posta programında gelen iletiler iniyor, ama gönderme “Giden posta sunucusuna bağlanılamadı” hatası veriyor. Giden sunucu ayarı smtp.okul.example, port 25. Öğrenci şu testleri yapıyor:

PS> Test-NetConnection smtp.okul.example -Port 25
PingSucceeded    : True
TcpTestSucceeded : False

PS> Test-NetConnection smtp.okul.example -Port 587
TcpTestSucceeded : True

Kanıta en uygun sonraki adım hangisidir? (SMTP sunucular arasında TCP 25, e-posta programından gönderirken TCP 587 kullanır.)

  • A. Sunucu kapalı olduğu için bilgi işleme arıza kaydı açmak
  • B. DNS önbelleğini ipconfig /flushdns ile temizlemek
  • C. Wi-Fi’dan çıkıp kablolu ağa bağlanmak
  • D. Gelen sunucuyu IMAP’tan POP3’e çevirmek
  • E. Giden sunucu portunu 587 yapıp kimlik doğrulamayı açmak

8. Bir öğrenci kafeteryadaki ortak Wi-Fi’dan web sitesinin dosyalarını sunucuya yükleyecek. Elinde iki seçenek var: FTP ve SFTP. Hangisini seçmeli, neden?

  • A. FTP, çünkü dosya aktarmak için yapılmış asıl protokol odur
  • B. FTP, çünkü Wi-Fi şifresi trafiği zaten korur
  • C. İkisi de aynı, SFTP yalnız FTP’nin yeni sürümünün adı
  • D. SFTP, çünkü dosyayı FTP’den daha hızlı aktarır
  • E. SFTP, çünkü parolayı da dosyayı da SSH ile şifreler

1. Doğru: A. Alan adından sonra iki noktayla yazılan sayı porttur. Tarayıcı varsayılan 443 yerine sunucunun 8443 portuna bağlanır.

  • B yanlış: IP adresleri de sayılardan oluştuğu için karışabilir. Ama sunucunun adresini DNS alan adından bulur. 8443 tek başına bir sayıdır ve IPv4 octet’i en çok 255 olabilir.
  • C yanlış: Adres https ile başladığı için sayının sertifikayla ilgili olduğu düşünülebilir. Ama sertifika URL’ye yazılmaz. Sunucu bağlantı kurulurken tarayıcıya gösterir.
  • D yanlış: Sayı adresin ortasında durduğu için yolun bir parçası sanılabilir. Ama yol eğik çizgiyle başlar: /odev/teslim. İki noktadan sonraki sayı yola değil, porta aittir.
  • E yanlış: HTTP’nin sürümleri olduğu için sayı bir sürüm numarası gibi görünebilir. Ama sürüm URL’de yazmaz. Tarayıcıyla sunucu bunu kendi aralarında anlaşır.

2. Doğru: A. 5xx kodlarını sunucu gönderir. Kod geldiyse alan adı çözülmüş, bağlantı kurulmuş ve sunucu isteği okumuştur. Hata sunucunun kendi yazılımında.

  • B yanlış: Sayfa açılmadığı için önce bağlantıdan şüphelenilir. Ama bağlantı kopuk olsaydı sunucudan hiç yanıt gelmezdi. Durum kodu sunucuya ulaşıldığını gösterir.
  • C yanlış: Sayfa açılmadığında DNS sık suçlanır. Ama ad çözülemeseydi curl Could not resolve host derdi. Yanıt geldiyse ad çözülmüştür.
  • D yanlış: Hata bir sunucu sorunu gibi göründüğü için port da akla gelir. Ama port kapalı olsaydı Failed to connect hatası gelirdi. Durum kodu, bağlantının kurulduğunu gösterir.
  • E yanlış: Yanlış yol da bir hata kodu döndürdüğü için karışabilir. Ama sayfa yoksa sunucu 404 döndürür. 500 sunucunun isteği işlerken kendi içinde hataya düştüğünü söyler.

3. Doğru: C. Kilit, trafiğin şifrelendiğini ve sertifikanın adres çubuğundaki alan adına ait olduğunu gösterir. Alan adının kime ait olduğunu ve sitenin dürüst olup olmadığını göstermez. Bu ad okulun alan adı değil.

  • A yanlış: Kilit “güvenli” sözcüğüyle birlikte anıldığı için içeriğin de denetlendiği sanılır. Ama TLS içeriği denetlemez, yalnız bağlantıyı şifreler ve sunucunun adını doğrular.
  • B yanlış: Kilit güven verici bir simge olduğu ve sayfa okulunkine benzediği için böyle düşünülür. Ama sahte sitenin sahibi de kendi alan adına sertifika alabilir. Okulun alan adı okul.example.
  • D yanlış: Bağlantı e-postadan geldiği için kilit e-postayı da doğruluyormuş gibi görünebilir. Ama kilit yalnız tarayıcıyla web sunucusu arasındaki bağlantıyla ilgilidir. E-postanın kimden geldiği hakkında bir şey söylemez.
  • E yanlış: Bağlantı şifreli olduğu için parolanın doğru yere gittiği düşünülebilir. Ama şifreli bağlantı parolayı adres çubuğundaki sunucuya taşır: burada sahte sitenin sunucusuna.

4. Doğru: D. SMTP iletiyi gönderir ve sunucudan sunucuya aktarır. IMAP ve POP3 posta kutusundaki iletiyi okutur. Bu yüzden program iki ayrı sunucu bilgisi ister.

  • A yanlış: SMTP’nin gerçekten iki portu var (25 ve 587), bu yüzden böyle düşünülebilir. Ama bu iki port gönderme ile aktarmayı ayırır. Posta kutusunu okumak SMTP’nin işi değildir.
  • B yanlış: Protokol adları ezberlenirken yönleri karışabilir. Ama SMTP gönderme protokolüdür. IMAP ve POP3 ileti göndermez.
  • C yanlış: IMAP iletileri cihazlar arasında eşitlediği için her iki yönde çalıştığı sanılabilir. Ama IMAP posta kutusunu okutur, yeni ileti göndermez. Gönderme SMTP’nin işidir.
  • E yanlış: Tarayıcıdan e-posta okunurken HTTPS kullanıldığı için akla gelir. Ama burada bir e-posta programı kuruluyor. Program gelen postayı IMAP ya da POP3 ile alır.

5. Doğru: D. POP3 iletileri cihaza indirir. Bu ayar açıkken indirilen ileti sunucudan silinir. IMAP ile bağlanan telefon sunucudaki kutuya bakar ve orada ileti bulamaz.

  • A yanlış: Telefonda ileti görünmeyince önce bağlantıdan şüphelenilir. Ama telefon sunucuya bağlanıp kutuyu açabiliyor. Kutu boş olduğu için ileti göstermiyor.
  • B yanlış: İki cihaz aynı kutuya bağlandığı için çakıştıkları düşünülebilir. Ama IMAP birden çok cihazın aynı kutuyu görmesi için tasarlanmıştır. Sorun bilgisayardaki POP3 ayarı.
  • C yanlış: MX kaydı e-postayla ilgili olduğu için akla gelir. Ama MX kaydı postayı alan sunucuyu gösterir, iletileri okuyan cihazları değil.
  • E yanlış: Gelen ile giden protokoller sık karıştırılır. Ama telefonda hesap IMAP ile kurulmuş, yani gelen postayı doğru protokolle alıyor.

6. Doğru: B. MX kaydı bir alan adının postasını alan sunucuları listeler. Gönderen sunucu iletiyi SMTP ile bu sunuculardan birine aktarır. Önce küçük sayılı olan denenir.

  • A yanlış: Web sitesi de DNS’te arandığı için karışabilir. Ama web sitesinin adresini başka bir kayıt verir. MX kaydı yalnız posta sunucularını gösterir.
  • C yanlış: Kayıt e-postayla ilgili olduğu için protokolü de belirlediği düşünülebilir. Ama sunucudan sunucuya aktarım her zaman SMTP ile yapılır. MX kaydı yalnız hedef sunucuyu söyler.
  • D yanlış: Kayıt posta sunucusu adları verdiği için okuma sunucusu da sanılabilir. Ama MX kaydı gelen postayı kabul eden sunucuyu gösterir. Kullanıcının okuma için bağlandığı sunucu e-posta programına ayrıca yazılır.
  • E yanlış: DNS’te tanımlı bir kayıt resmî bir onay gibi görünebilir. Ama MX kaydı gönderen adresin doğru olup olmadığını denetlemez, yalnız postanın nereye teslim edileceğini söyler.

7. Doğru: E. Sunucu ayakta, 587 açık, 25’e bağlantı kurulamıyor. Programdan gönderme 587’nin işidir. Pek çok ağ, sıradan bilgisayarların dışarıya 25’ten bağlanmasını engeller.

  • A yanlış: Gönderme çalışmayınca sunucu suçlanır. Ama ping cevap veriyor ve 587 portu açık. Sunucu ayakta.
  • B yanlış: Bağlantı sorunlarında önbellek temizlemek sık önerilir. Ama Test-NetConnection sunucunun adını çözüp ona ping atabildi. DNS çalışıyor.
  • C yanlış: Bağlantı türünü değiştirmek genel bir deneme gibi görünür. Ama ağ çalışıyor: gelen posta iniyor, sunucuya ping gidiyor. Sorun belirli bir portta.
  • D yanlış: E-postada bir sorun olunca hesap türünü değiştirmek akla gelir. Ama gelen posta zaten çalışıyor. Sorun gönderme tarafında, gönderme de SMTP’nin işi.

8. Doğru: E. SFTP dosyayı SSH bağlantısının içinden aktarır, her şey şifreli gider. Ortak bir ağda trafiği yakalayan biri parolayı okuyamaz.

  • A yanlış: FTP adı “dosya aktarım protokolü” anlamına geldiği için doğru seçim gibi görünür. Ama FTP kullanıcı adını, parolayı ve dosyayı şifresiz taşır. Ortak ağda parola okunabilir.
  • B yanlış: Wi-Fi parolası bağlantıyı koruyormuş gibi görünür. Ama ortak bir ağda parolayı bilen herkes aynı ağdadır. Uygulamanın kendi trafiği şifrelenmezse aynı ağdaki biri onu okuyabilir.
  • C yanlış: Adlar benzediği için SFTP’nin FTP’nin bir sürümü olduğu sanılır. Ama SFTP SSH’in üstünde çalışan ayrı bir protokoldür.
  • D yanlış: SFTP doğru seçim, ama nedeni hız değil. SFTP’yi seçmenin nedeni şifrelemedir. Aktarım hızı daha çok bağlantıya ve sunucuya bağlıdır.

12.11 Tek sayfa özet

  • URL dört parçadır: protokol, alan adı, port, yol. Port yazılmazsa protokolün varsayılanı kullanılır.
  • HTTP istek ve yanıttır. GET sayfa ister, POST veri gönderir.
  • Durum kodu gruplarını ilk basamaktan oku: 2xx başarılı, 3xx yönlendirme, 4xx istekte sorun, 5xx sunucuda hata. Durum kodu geldiyse sunucuya ulaşılmıştır.
  • HTTPS trafiği şifreler ve sertifikayla sunucunun alan adını doğrular. Kilit simgesi sitenin dürüst olduğunu göstermez: alan adını kendin oku.
  • E-postadaki “Kimden” satırı kanıt değildir, SMTP bu satırı denetlemez.
  • SMTP gönderir ve sunucudan sunucuya aktarır. IMAP ve POP3 posta kutusunu okutur. Gelen ile giden ayrı çalışır.
  • IMAP iletileri sunucuda tutar ve cihazları eşitler. POP3 iletileri cihaza indirir.
  • MX kaydı, bir alan adına gelen postayı hangi sunucunun aldığını söyleyen DNS kaydıdır.
  • Tarayıcıdan okunan e-posta HTTPS kullanır.
  • FTP parolayı ve dosyayı şifresiz taşır. SFTP SSH’in içinden, şifreli aktarır.

12.12 Bu bölümün kazanımları

Bu bölümü bitiren öğrenci:

  • URL’yi protokol, alan adı, port ve yol olarak ayırır ve her parçanın hangi adımda kullanıldığını açıklar.
  • HTTP durum kodunu doğru gruba bağlar ve sorunun ağda mı sunucuda mı olduğunu ayırt eder.
  • HTTPS’in şifrelemeyle ve sertifikayla neyi doğruladığını, kilit simgesinin neyi göstermediğini açıklar.
  • SMTP, IMAP ve POP3’ün görevlerini ve tarayıcıdan okunan e-postanın HTTPS kullandığını açıklar.
  • IMAP ile POP3’ün posta kutusunu nasıl kullandığını karşılaştırır.
  • MX kaydının işini ve e-postadaki “Kimden” satırının neden kanıt olmadığını açıklar.
  • Gelen ve giden posta sorununda kanıtı doğru protokole ve porta bağlar.
  • FTP ile SFTP’yi şifreleme ve kullandığı bağlantı bakımından ayırt eder.
Başa dön