# IMAP
 - YÖNLENDİRME 
Bilgi işlemde, İnternet Mesaj Erişim Protokolü (IMAP), e-posta istemcilerinin bir TCP/IP bağlantısı üzerinden bir posta sunucusundan e-posta mesajları almak için kullandığı bir İnternet standart protokolüdür. IMAP, RFC 9051 tarafından tanımlanır.
IMAP, bir e-posta kutusunun birden çok e-posta istemcisi tarafından tam olarak yönetilmesine izin vermek amacıyla tasarlanmıştır. Bu nedenle istemciler genellikle, kullanıcı bunları açıkça silene kadar iletileri sunucuda bırakır. Bir IMAP sunucusu genellikle 143 numaralı bağlantı noktasını dinler. SSL/TLS üzerinden IMAP'e (IMAPS) ise 993 numaralı bağlantı noktası atanmıştır.
Neredeyse tüm modern e-posta istemcileri ve sunucuları, önceki POP3 (Postane Protokolü) ile birlikte e-posta alımı için en yaygın iki standart protokol olan IMAP'i destekler .  Gmail ve Outlook.com gibi birçok web posta hizmeti sağlayıcısı, hem IMAP hem de POP3 için destek sağlar.
IMAP4 olarak de bilinen IMAP, yerel kullanıcıların uzaktaki bir e-posta sunucusuna erişmesini sağlayan bir uygulama katmanı protokolüdür. En son sürümü IMAP sürüm 4 Revizyon 1 (IMAP4rev1) olup, RFC 3501'de tanımlanmıştır. IMAP4 TCP 143. portu kullanarak çalışır.
E-posta sunucularından mesaj çekmek için kullanılan en yaygın protokollerden biridir (bkz. POP3). Modern e-posta sunucularının neredeyse tamamı tarafından desteklenir.


## E-posta protokolleri.
İnternet İleti Erişim Protokolü, bir e-posta istemcisinin uzak posta sunucusundaki e-postaya erişmesine izin veren bir uygulama katmanı İnternet protokolüdür. Geçerli sürüm, RFC 9051 tarafından tanımlanır. Bir IMAP sunucusu genellikle iyi bilinen 143 numaralı bağlantı noktasını dinlerken SSL/TLS üzerinden IMAP (IMAPS) 993 kullanır.
Gelen e-posta mesajları, mesajları alıcının e-posta kutusunda saklayan bir e-posta sunucusuna gönderilir. Kullanıcı, çeşitli e-posta alma protokollerinden birini kullanan bir e-posta istemcisiyle iletileri alır. Bazı istemciler ve sunucular tercihen satıcıya özgü, tescilli protokolleri kullanırken, neredeyse tamamı e-posta almak için POP ve IMAP'yi destekler; istemcilerin diğer sunucularla birlikte kullanılmasına izin verir.
IMAP kullanan e-posta istemcileri genellikle iletileri, kullanıcı açıkça silene kadar sunucuda bırakır. IMAP işleminin bu ve diğer özellikleri, birden çok istemcinin aynı posta kutusunu yönetmesine izin verir. Çoğu e-posta istemcisi, mesajları almak için Postane Protokolüne (POP) ek olarak IMAP'yi destekler. IMAP, posta deposuna erişim sunar. İstemciler mesajların yerel kopyalarını saklayabilir, ancak bunlar geçici bir önbellek olarak kabul edilir.


## Tarih.
IMAP, 1986 yılında #YÖNLENDİRME tarafından, bir posta kutusunun içeriğini basitçe almak için kullanılan bir protokol olan yaygın olarak kullanılan POP'un aksine, bir uzaktan erişim posta kutusu protokolü olarak tasarlanmıştır.
Mevcut VERSION 4rev1'den (IMAP4) önce, aşağıda ayrıntıları verildiği gibi bir dizi yinelemeden geçti:


### Orijinal IMAP.
Orijinal "Geçici Posta Erişim Protokolü, bir" Xerox Lisp Machine istemcisi ve bir TOPS-20 sunucusu olarak uygulandı.
Orijinal geçici protokol spesifikasyonunun veya yazılımının hiçbir kopyası mevcut değildir.  Bazı komutları ve yanıtları IMAP2'ye benzer olsa da, geçici protokolde komut/yanıt etiketlemesi yoktu ve bu nedenle sözdizimi diğer tüm IMAP sürümleriyle uyumsuzdu.


### IMAP2.
Geçici protokolün yerini, RFC 1064'te (1988'de) tanımlanan ve daha sonra RFC 1176'da (1990'da) güncellenen "Etkileşimli Posta Erişim Protokolü (IMAP2) aldı." IMAP2, komut/yanıt etiketlemeyi tanıttı ve halka açık ilk sürüm oldu.


### IMAP3.
IMAP3, son derece nadir bir IMAP çeşididir. 1991'de RFC 1203 olarak yayınlandı. Kendisi IMAP2'de değişiklikler öneren RFC 1176 karşı bir öneri olarak özel olarak yazılmıştı. IMAP3, pazar yeri tarafından hiçbir zaman kabul edilmedi.  IESG, 1993 yılında RFC 1203 "Etkileşimli Posta Erişim Protokolü - Sürüm 3"ü Tarihi protokol olarak yeniden sınıflandırdı. IMAP Çalışma Grubu, başlangıç noktası olarak RFC 1203 (IMAP3) yerine RFC 1176 (IMAP2) kullandı.


### IMAP2bis.
MIME'nin gelişiyle, IMAP2, MIME gövde yapılarını desteklemek ve IMAP2'de bulunmayan posta kutusu yönetim işlevselliğini (oluşturma, silme, yeniden adlandırma, mesaj yükleme) eklemek için genişletildi. Bu deneysel revizyona IMAP2bis adı verildi; spesifikasyonu hiçbir zaman taslak olmayan biçimde yayınlanmadı. Ekim 1993'te IETF IMAP Çalışma Grubu tarafından bir IMAP2bis internet taslağı yayınlandı. Bu taslak şu önceki spesifikasyonlara dayanıyordu: yayınlanmamış "IMAP2bis.TXT" belgesi, RFC 1176 ve RFC 1064 (IMAP2). IMAP2bis.TXT taslağı "," Aralık 1992 itibarıyla IMAP2 uzantılarının durumunu belgelemiştir.  Pine, IMAP2bis desteğiyle geniş çapta dağıtıldı (Pine 4.00 ve sonrası, IMAP4rev1'i destekler).


### IMAP4.
1990'ların başında IETF içinde oluşturulan bir IMAP Çalışma Grubu, IMAP2bis tasarımının sorumluluğunu üstlendi. IMAP ÇG (Çalışma Grubu), karışıklığı önlemek için IMAP2bis'i IMAP4 olarak yeniden adlandırmaya karar verdi.


## Uygulanması.
Genel kullanımda, bir kullanıcının e-posta istemcisini (Outlook, Apple Mail, Outlook Express, Mozilla Thunderbird; Hotmail ve Gmail web arabirimleri vb.) kullanarak yolladığı e-posta mesajları, önce kullanıcının oturum açtığı e-posta sunucusu tarafından kabul edilir ve genellikle SMTP kullanarak alıcının posta kutusunu içinde barındıran başka bir e-posta sunucusuna gönderilir. Bu aşamada alıcının göndericinin mesajlarına ulaşabilmesi için bunu e-posta istemcisi ile çekmesi gereklidir. Fakat SMTP tek yönlü bir protokoldür (sadece gidiş). Kullanıcının isteği üzerine posta kutunuzda bulunan e-posta mesajının istemcinize inmesini sağlayamaz. Bu aşamada yapılandırmaya bağlı olarak POP3 veya IMAP devreye girerek ilgili mesajın oturum açmış ve talep etmiş istemciye çekilmesi sağlanır.
IMAP ve POP3 kullanımı arasındaki temel fark IMAP ile e-posta sunucusuna bağlantı kurulduğunda, posta kutusunda birikmiş e-postaların sadece başlık bilgilerini istemciye getirilir. POP3 ise bütün mesajları istemciye çeker.
Genel prensip olarak kullanıcı ve e-posta sayısının çokluğuyla doğru orantılı olarak kullanılır. Uygulamada web postası kullanan neredeyse bütün sunucularda IMAP protokolü kullanılır.


## POP3'e göre avantajları.
### Bağlantı şekli.
Bir e-posta sunucusuna POP3 ile bağlanıldığında bütün yeni mesajlar istemciye çekilir ve bağlantı kapatılır. IMAP kullanıldığında oturum açıldıktan sonra bağlantı sadece istek olduğu durumlarda açık kalır (Bir mesajın açılması ve içeriğinin görüntülenmesi gibi...).
Büyük boyutlu posta kutularında bu özellik içeriğin görüntülenmesini de sağlar.


### Çoklu kullanıcı desteği.
POP3 aynı posta kutusunda aynı anda tek kullanıcıyı destekler. Tersi durumda işleyiş tarzı sorun yaratır.
IMAP ise çok kullanıcıyı destekler. Bir kullanıcının yaptığı değişiklik eşzamanlı olarak diğer oturum açmış kullanıcı tarafından görülebilir.


### MIME mesajlarına parçasal erişim.
Neredeyse bütün e-posta mesajları MIME (Multipurpose Internet Mail Extensions-Çok işlevli Internet Posta Uzantıları) formatında gönderilir. Bir e-posta yazı bölümü, ekli dosya bölümü gibi bölümlere ayrılır. IMAP bu bölümleri birbirinden bağımsız olarak çekebilir. Örnek: Mesajı açmadan mesaj ekindeki bir dosyayı bilgisayarınıza kopyalamak.


## POP'a göre avantajlar.
### Bağlı ve bağlantısız modlar.
POP kullanırken, istemciler genellikle e-posta sunucusuna kısa süreliğine, yalnızca yeni iletileri indirmek için gereken süre kadar bağlanır. IMAP4 kullanırken, istemciler genellikle kullanıcı arabirimi etkin olduğu sürece bağlı kalır ve talep üzerine mesaj içeriğini indirir. Çok sayıda veya büyük iletisi olan kullanıcılar için, bu IMAP4 kullanım modeli daha hızlı yanıt süreleriyle sonuçlanabilir.


### Harici değişikliklerin raporlanması.
Başarılı kimlik doğrulamasından sonra, POP protokolü, posta kutusunun mevcut durumunun tamamen "statik" bir görünümünü sağlar ve oturum sırasında durumdaki herhangi bir harici değişikliği gösterecek bir mekanizma sağlamaz. Buna karşılık, IMAP protokolü "dinamik" bir görünüm sağlar ve yeni gelen mesajlar dahil olmak üzere durumdaki harici değişikliklerin yanı sıra aynı anda bağlı diğer istemciler tarafından posta kutusunda yapılan değişikliklerin algılanmasını ve komutlar arasında uygun yanıtların gönderilmesini gerektirir. IDLE komutu sırasında, RFC 2177'de açıklandığı gibi. Ayrıca, özellikle "birden fazla aracı tarafından aynı posta kutusuna eşzamanlı erişim"den söz eden RFC 3501 bölüm 5.2'ye bakınız.


### MIME mesaj bölümlerine erişim ve kısmi getirme.
Genellikle tüm İnternet e-postaları MIME formatında iletilir ve bu, mesajların yaprak düğümlerin çeşitli tek parça içerik türlerinden herhangi biri olduğu ve yaprak olmayan düğümlerin çeşitli çok parçalı türlerden herhangi biri olduğu bir ağaç yapısına sahip olmasına izin verir. IMAP4 protokolü, istemcilerin ayrı ayrı MIME parçalarından herhangi birini ayrı ayrı almalarına ve ayrıca tek tek bölümlerin veya tüm mesajın bölümlerini almalarına olanak tanır. Bu mekanizmalar, istemcilerin ekli dosyaları almadan bir iletinin metin bölümünü almalarına veya getirilirken içeriği akışa almalarına olanak tanır.


### Mesaj durum bilgisi.
IMAP4 protokolünde tanımlanan bayrakların kullanımıyla, istemciler mesajın durumunu takip edebilir: örneğin, mesajın okunup okunmadığı, cevaplanmadığı veya silinmediği. Bu bayraklar sunucuda saklanır, böylece aynı posta kutusuna farklı zamanlarda erişen farklı istemciler, diğer istemciler tarafından yapılan durum değişikliklerini algılayabilir. POP, istemciler için bu tür durum bilgilerini sunucuda depolamak için bir mekanizma sağlamaz; bu nedenle, tek bir kullanıcı iki farklı POP istemcisiyle (farklı zamanlarda) bir posta kutusuna erişirse, durum bilgileri (bir iletiye erişilip erişilmediği gibi) arasında senkronize edilemez. müşteriler. IMAP4 protokolü, hem önceden tanımlanmış sistem bayraklarını hem de istemci tanımlı anahtar sözcükleri destekler. Sistem bayrakları, bir mesajın okunup okunmadığı gibi durum bilgilerini gösterir. Tüm IMAP sunucuları tarafından desteklenmeyen anahtar kelimeler, anlamı müşteriye bağlı olan etiketler. IMAP anahtar sözcükleri, bazen karşılık gelen özel sunucular tarafından IMAP klasörlerine çevrilen web tabanlı e-posta hizmetlerinin özel etiketleriyle karıştırılmamalıdır.


### Sunucu taraflı aramalar.
IMAP4, bir istemcinin sunucudan çeşitli ölçütleri karşılayan iletileri aramasını isteme mekanizması sağlar. Bu mekanizma, istemcilerin bu aramaları gerçekleştirmek için posta kutusundaki her iletiyi indirmesini gerektirmez.


### Yerleşik uzatma mekanizması.
Daha önceki İnternet protokollerinin deneyimini yansıtan IMAP4, genişletilebileceği açık bir mekanizma tanımlar. Temel protokol için birçok IMAP4 uzantısı önerilmiştir ve bunlar ortak kullanımdadır. IMAP2bis'in bir uzantı mekanizması yoktu ve POP'un artık RFC 2449 tarafından tanımlanan bir mekanizması var.


### Sunucu push bildirimleri.
IMAP IDLE, posta sunucusunun bağlı istemcilere, örneğin yeni bir posta geldiğinden dolayı bir posta kutusunda değişiklik olduğunu bildirmesi için bir yol sağlar. POP karşılaştırılabilir bir özellik sağlamaz ve e-posta istemcilerinin yeni posta olup olmadığını kontrol etmek için periyodik olarak POP sunucusuna bağlanması gerekir.


### Sunucuda birden çok posta kutusu.
IMAP4 istemcileri, sunucuda posta kutuları (genellikle kullanıcıya klasörler olarak sunulur) oluşturabilir, yeniden adlandırabilir ve silebilir ve posta kutuları arasında iletileri kopyalayabilir. Birden çok posta kutusu desteği, sunucuların paylaşılan ve ortak klasörlere erişim sağlamasına da olanak tanır. Erişim haklarını düzenlemek için IMAP4 "Erişim Kontrol Listesi (ACL) Uzantısı" (RFC 4314) kullanılabilir.


## Mesaj durum bilgisi.
IMAP kendi içinde bulunan işaretleme (flag) sistemi ile bir mesajın pek çok halini görüntüleyebilir (okundu, okunmadı, silindi, ... kişiye cevaplandı vb.). Bu bilgiler sunucu üzerinde saklandığı için aynı anda birden çok kullanıcının bağlı olduğu bir posta kutusunda, kullanıcılar mesaj durumu hakkında başkasının yaptığı değişiklikleri görüntüleyebilirler.


### Çoklu posta kutusu desteği.
IMAP kullanıcılara özel posta kutusu yaratılmasına izin verir (Genellikle kullanıcılara klasör olarak gösterilir.). Kullanıcılara mesajlarını değişik kutular arasında taşıma hakkı tanınabilir. Bunun yanında paylaşılan posta kutuları da yaratılabilinir.


### Sunucu taraflı arama mekanizması.
IMAP4 istemcilerin çeşitli kıstaslara göre sunucu üzerinde mesaj araması yaptırmasına ve sadece bu mesajların görüntülenmesine izin verir. POP3 ise mesajları bütün olarak çeker, arama istemci tarafında yapılır.


### Yapısal eklenti desteği.
IMAP4 yapısal olarak eklenti yapılmasına açık bir protokoldür ve evrimleşebilir.


## Güvenlik.
İstemci ile sunucu arasındaki IMAP bağlantılarını kriptografik olarak korumak için, SSL/TLS kullanan TCP bağlantı noktası 993'teki IMAPS kullanılabilir.  Ocak 2018 itibarıyla önerilen mekanizma TLS'dir.
Alternatif olarak, başlangıçta düz metin üzerinden iletişim kurduktan sonra 143 numaralı bağlantı noktasına bağlanırken bağlantıyı şifrelemek için STARTTLS kullanılabilir.


## Dezavantajları.
  - POP3'e göre uygulanması karmaşık bir protokoldür.
  - Arama algoritmaları kötü olan sunucularda büyük posta kutuları üzerinde arama yapılması sunucu kaynaklarını tüketebilir.
  - Gönderilen mesajlar iki kere işlenir. İlk olarak istemciden sunucuya SMTP yoluyla, ikinci olarak da mesajın "Gönderilen Öğeler"e işlenmesi amacıyla posta kutusuna IMAP4 protokolüyle geri yollanır.
  - E-postalara erişim, POP3'ten biraz daha yavaştır çünkü her gönderme veya alma işleminde tüm klasörler senkronize edilir.
  - Etkin bir internet bağlantınız olmadığı sürece e-postalar çalışmayacaktır.
  - E-postayı sık kullanıyorsanız, daha maliyetli olabilecek daha büyük bir posta kutusu depolama alanına ihtiyacınız olacaktır


## Diyalog örneği.
[rfc:3501 RFC 3501 bölüm 8'den] alının bir IMAP bağlantısı örneği:
 C: <open connection>
 S: * OK IMAP4rev1 Service Ready
 C: a001 login mrc secret
 S: a001 OK LOGIN completed
 C: a002 select inbox
 S: * 18 EXISTS
 S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
 S: * 2 RECENT
 S: * OK [UNSEEN 17] Message 17 is the first unseen message
 S: * OK [UIDVALIDITY 3857529045] UIDs valid
 S: a002 OK [READ-WRITE] SELECT completed
 C: a003 fetch 12 full
 S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700"
 RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)"
 "IMAP4rev1 WG mtg summary and minutes"
 (("Terry Gray" NIL "gray" "cac.washington.edu"))
 (("Terry Gray" NIL "gray" "cac.washington.edu"))
 (("Terry Gray" NIL "gray" "cac.washington.edu"))
 ((NIL NIL "imap" "cac.washington.edu"))
 ((NIL NIL "minutes" "CNRI.Reston.VA.US")
 ("John Klensin" NIL "KLENSIN" "MIT.EDU")) NIL NIL
 "<B27397-0100000@cac.washington.edu>")
 BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028
 92))
 S: a003 OK FETCH completed
 C: a004 fetch 12 body[header]
 S: #YÖNLENDİRME 
 S: #YÖNLENDİRME 
 S: #YÖNLENDİRME 
 S: #YÖNLENDİRME 
 S: #YÖNLENDİRME 
 S: #YÖNLENDİRME 
 S: #YÖNLENDİRME 
 S: #YÖNLENDİRME 
 S:
 S: )
 S: a004 OK FETCH completed
 C a005 store 12 +flags \deleted
 S: * 12 FETCH (FLAGS (\Seen \Deleted))
 S: a005 OK +FLAGS completed
 C: a006 logout
 S: * BYE IMAP4rev1 server terminating connection
 S: a006 OK LOGOUT completed