IMAP

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 1. srpna 2018; kontroly vyžadují 47 úprav .
IMAP
název Internet Message Access Protocol
Úroveň (podle modelu OSI ) Aplikovaný
Rodina TCP / IP
Vytvořeno v 1986
Port/ID 143/ TCP , 993/TCP (IMAP přes SSL)
Účel protokolu Přístup k poštovním schránkám
Specifikace RFC 3501
Hlavní implementace (klienti) MUA ( Outlook Express , Opera , Mozilla Thunderbird , The Bat!, Claws Mail , mutt atd.)
Implementace jádra ( servery ) UW IMAP , Courier , Cyrus , Dovecot

IMAP ( Internet Message Access Protocol ) je protokol aplikační vrstvy pro přístup k e-mailu . 

Je založen na transportním protokolu TCP a používá port 143, zatímco IMAPS (IMAP over SSL ) používá port 993. IMAP pracuje pouze se zprávami a nevyžaduje žádné pakety se speciálními hlavičkami [1] .

IMAP poskytuje uživateli dostatek příležitostí pro práci s poštovními schránkami umístěnými na poštovním serveru . Poštovní program , který používá tento protokol, přistupuje k úložišti korespondence na serveru , jako by se tato korespondence nacházela v počítači příjemce. S e -maily lze manipulovat z počítače uživatele ( klienta ), aniž by byl celý obsah e-mailů neustále posílán tam a zpět ze serveru .

Protokol SMTP se obvykle používá k odesílání zpráv , protože nativní příkaz IMAP send, nazývaný APPEND, neobsahuje mechanismus pro přenos informací o službě [1] .

Pro názvy poštovních schránek (složek) se znaky mimo rozsah ASCII se používá upravená verze kódování UTF-7 [1] .

Účel protokolu IMAP

Protokol IMAP je alternativou k POP se základními možnostmi odesílání.

První verze protokolu POP měla řadu nedostatků a nejzávažnějším z nich byla nedostatečná schopnost řídit pohyb a ukládání zpráv na serveru. V POP se zprávy stahují z poštovního serveru všechny najednou, načež jsou ze serveru smazány, to znamená, že není možné vybrat zprávy k příjmu.

Pro vyřešení problémů spojených s touto funkcí POP vytvořil v roce 1986 Mark Crispin ( eng.  Mark Crispin ), tehdy pracující na Stanfordské univerzitě , nový protokol pro příjem pošty ze serveru [2] .

Nový protokol umožnil uživatelům přijímat e-maily na více místech ze stejné poštovní schránky. Uživatel má možnost spravovat zprávy ve své poštovní schránce a další funkce pro obsluhu poštovních schránek na serveru.

V budoucnu byl dopracován protokol POP , v POP3 (POP verze 3) je možné přijímat vybrané zprávy ze serveru a nechat vybrané zprávy na serveru. V posledních verzích mezi IMAP a POP je hlavní rozdíl pro uživatele v tom, že IMAP4 může přistupovat k písmenům v různých poštovních složkách na serveru a přesouvat písmena mezi nimi, zatímco POP3 přistupuje k písmenům na serveru pomocí čísel v lineárním seznamu (tj. funguje pouze s jednou poštovní složkou).

Verze protokolu IMAP [2]

Výhody oproti POP3

Při použití POP3 se klient připojuje k serveru pouze po dobu, kterou trvá stahování nových zpráv. Při použití protokolu IMAP se připojení nepřeruší, když je aktivní uživatelské rozhraní , a zprávy se stahují pouze na žádost klienta. To snižuje dobu odezvy pro uživatele, kteří mají ve svých poštovních schránkách mnoho velkých zpráv.

Protokol POP vyžaduje, aby byl k boxu připojen pouze aktuální klient. IMAP umožňuje více klientům přístup k poštovní schránce současně a dává klientovi možnost sledovat změny provedené jinými klienty připojenými ve stejnou dobu.

Díky příznakovému systému definovanému v IMAP4 může klient sledovat stav zprávy (přečteno, odpovědělo, smazáno atd.); příznaková data jsou uložena na serveru.

Klienti IMAP4 mohou vytvářet, přejmenovávat a odstraňovat poštovní schránky a přesouvat zprávy mezi poštovními schránkami. Alternativně můžete ke správě přístupových práv k poštovní schránce použít "IMAP4 Access Control List ( ACL ) Extension" ( RFC 4314 ).

Zprávy jsou prohledávány na straně serveru.

IMAP4 má explicitní mechanismus rozšíření. [3]

Zprávy a jejich atributy

IMAP pracuje pouze se zprávami a nevyžaduje žádné pakety se speciálními hlavičkami. Ke každé zprávě je přidruženo několik atributů. Tyto atributy mohou být definovány samostatně nebo v kombinaci s jinými atributy.

UID

Každé zprávě je přiřazen 32bitový kód , který ve spojení s jedinečným identifikátorem tvoří 64bitovou sekvenci, která zaručuje jednoznačnou identifikaci zprávy ve schránce. Čím později zpráva dorazila, tím větší je její UID.

UID je přidruženo k poštovní schránce a odesláno jako kód odpovědi uidvalidity (ok) během fáze výběru poštovní schránky. Pokud nelze z nějakého důvodu použít UID z předchozí relace , musí být UID zvýšeno.

UID zprávy by se nemělo měnit v rámci relace ani by se nemělo měnit mezi relací. Pokud však není možné uložit UID zprávy v následující relaci, každá následující relace musí mít nový jedinečný identifikační kód, který musí být větší než jakékoli dříve použité UID.

Pořadové číslo zprávy

Pořadové číslo zprávy ve schránce začíná na 1. Každá zpráva počínaje druhou má pořadové číslo přesně o 1 větší než to, které jí předcházelo.

Během relace je povoleno změnit pořadové číslo zprávy. Když je například zpráva odstraněna z poštovní schránky, změní se čísla všech následujících zpráv.

Příznaky zpráv

Tento atribut je seznam nula nebo více pojmenovaných tokenů spojených s danou zprávou. Příznak se nastavuje jeho přidáním do tohoto seznamu a resetuje se jeho odebráním. V IMAP 4.1 existují dva typy příznaků. Příznak může být trvalý nebo aktivní pouze po dobu trvání této relace.

Systémový příznak je příznak, jehož název je definován ve specifikaci protokolu. Všechny systémové příznaky začínají znakem \.

Aktuálně jsou definovány následující systémové příznaky:

Interní datum a čas zprávy na serveru

Čas a datum přijetí zprávy. Pokud byla zpráva doručena prostřednictvím protokolu SMTP  , datum a čas doručení do cílové destinace. U zpráv doručených příkazem copy interní datum a čas odesílatele zprávy. Při použití příkazu append datum a čas určený parametry příkazu.

Další atributy

Interakce mezi klientem a serverem

Připojení IMAP 4.1 zahrnuje vytvoření spojení mezi klientem a serverem . Klient posílá příkazy na server, server posílá data a upozornění o stavu požadavku klientovi. Všechny zprávy, klient i server, jsou ve formě řetězců ukončených speciální sekvencí.

Jakákoli procedura začíná příkazem klienta. Jakýkoli příkaz klienta začíná předponou identifikátoru (obvykle krátkým alfanumerickým řetězcem, jako je , A0001atd. A0002), nazývaným tag. Pro každý příkaz klient vygeneruje svůj vlastní popisek.

Existují dva případy, kdy řetězec odeslaný klientem nepředstavuje úplný příkaz. V prvním je argument příkazu dodáván s kódem, který určuje počet oktetů v řetězci. Ve druhém vyžadují argumenty příkazu odpověď ze serveru. V obou případech server odešle požadavek na pokračování příkazu začínající znakem +.

Klient musí dokončit odeslání jednoho příkazu před odesláním dalšího.

Přijímač protokolu serveru čte příkazový řetězec přijatý od klienta, analyzuje jej, extrahuje parametry a odešle data na server. Po dokončení příkazu server odešle odpověď.

Data přenášená serverem klientovi, stejně jako stavové odpovědi, které neindikují dokončení příkazu, mají předponu * a nazývají se neoznačené odpovědi.

Data může server odeslat jako odpověď na příkaz klienta nebo z vlastní iniciativy. Formát dat nezávisí na důvodu odeslání.

Odpověď označuje úspěch/neúspěch operace. Používá stejné označení jako příkaz klienta, který spustil proceduru. Pokud je tedy proveden více než jeden příkaz, označení serveru ukazuje na příkaz, který způsobil odpověď. Existují tři druhy odezvy ukončení serveru: ok(úspěch), no(selhání), bad(chyba protokolu, např. příkaz nebyl rozpoznán nebo zjištěna chyba syntaxe).

Posluchač protokolu klienta IMAP 4.1 přečte řetězec odpovědi ze serveru a provede akci podle prvního znaku *nebo znaku +.

Klient musí být připraven kdykoli přijmout jakoukoli odpověď ze serveru. Data serveru musí být zapsána tak, aby je klient mohl přímo používat bez odesílání požadavků na vyhledávání na server.

Stavy serveru IMAP

Server IMAP 4.1 je v jednom ze čtyř stavů.

Většinu příkazů lze použít pouze v určitých stavech.

V neověřeném stavu musí klient zadat uživatelské jméno a heslo, než bude mít k dispozici většinu příkazů. Přechod do tohoto stavu se provede při navázání spojení bez předchozího ověření.

V autentizovaném stavu je klient identifikován a musí si vybrat schránku, po které se mu zpřístupní příkazy pro práci se zprávami. Přechod do tohoto stavu nastává při navázání spojení s předautentizací , při vydání všech potřebných identifikačních údajů nebo při omylu zvolení schránky.

Po úspěšném výběru poštovní schránky systém přejde do stavu výběru .

Systém přejde do výstupního stavu , když je spojení přerušeno v důsledku požadavku klienta nebo z důvodu nezávislého rozhodnutí serveru.

  1. Připojení bez předchozího ověření
  2. Spojení s předběžnou autentizací
  3. Připojení odmítnuto
  4. Úspěšné dokončení příkazu LOGINrespAUTHENTICATE
  5. Úspěšné dokončení příkazu SELECTrespEXAMINE
  6. Provedení CLOSEpříkazu nebo neúspěšný příkaz SELECTpopřEXAMINE
  7. Provedení příkazu LOGOUT, uzavření serveru nebo ukončení připojení

Příkazy protokolu IMAP

PŘIHLÁSIT SE Umožňuje klientovi používat při přihlašování k serveru IMAP uživatelské ID a heslo jako prostý text. Toto není nejlepší způsob, ale někdy je to jediný způsob, jak se připojit k serveru. OVĚŘIT Umožňuje klientovi používat alternativní metody ověřování při registraci na serveru IMAP. Ověření jednotlivých uživatelů je volitelné a není podporováno všemi servery IMAP. Kromě toho se provedení takové kontroly může lišit v závislosti na serveru. Když klient vydá příkaz AUTHENTICATE, server odpoví vyvolávacím řetězcem zakódovaným v base64 . Dále musí klient odeslat odpověď na autentizační výzvu serveru, rovněž zakódovanou v base64. Pokud server nepodporuje metodu ověřování navrženou klientem, zahrne slovo do své odpovědi NO. Klient pak musí pokračovat ve vyjednávání o metodě ověřování. Pokud všechny pokusy o určení metody autentizace selhaly, pokusí se klient zaregistrovat na serveru pomocí LOGIN. ZAVŘÍT Zavře poštovní schránku. Když je schránka zavřena tímto příkazem, zprávy označené příznakem \DELETEDjsou z poštovní schránky odstraněny. Nemá žádné možnosti. ODHLÁSIT SE Ukončí relaci pro aktuální ID uživatele. VYTVOŘIT Vytvoří novou poštovní schránku. Název a umístění nových poštovních schránek se určuje podle obecných specifikací serveru. VYMAZAT Platí pro poštovní schránky. IMAP server se po obdržení tohoto příkazu pokusí smazat poštovní schránku se jménem zadaným jako argument příkazu. Zprávy se smažou spolu s poštovními schránkami a nelze je obnovit. PŘEJMENOVAT Změní název poštovní schránky . Tento příkaz má dva parametry – název schránky, kterou chcete přejmenovat, a název nové schránky. PŘEDPLATIT Přidá poštovní schránku do seznamu aktivních poštovních schránek klienta. Jediný parametr použitý v tomto příkazu je název poštovní schránky, která má být uvedena. Schránka nemusí existovat, aby mohla být přidána do seznamu aktivních schránek – to umožňuje přidat schránky, které ještě nebyly vytvořeny, do seznamu aktivních schránek, nebo je odstranit, pokud jsou prázdné. ODHLÁSIT ODBĚR Odebere poštovní schránky z aktivního seznamu. Dále používá jeden parametr – název schránky, který je odstraněn ze seznamu aktivních schránek klienta . Samotná schránka však není smazána. SEZNAM Získejte seznam všech klientských poštovních schránek; má dva parametry. LSUB Na rozdíl od příkazu LISTse používá k získání seznamu schránek aktivovaných příkazem SUBSCRIBE. Parametry jsou stejné jako u LIST. POSTAVENÍ Generuje dotaz na aktuální stav poštovní schránky. Prvním parametrem tohoto příkazu je název poštovní schránky, na kterou se vztahuje. Druhým parametrem je seznam kritérií, podle kterých chce klient dostávat informace. Příkaz STATUSlze použít k získání informací o stavu poštovní schránky, aniž by bylo nutné ji otevírat pomocí příkazů SELECTnebo EXAMINE. Uživatel může získat informace podle kritérií: PŘIPOJIT Připojí zprávu na konec zadané poštovní schránky. Argumenty jsou název schránky, příznaky zprávy (volitelné), časové razítko (nepovinné) a samotná zpráva – záhlaví a tělo. K dispozici jsou následující příznaky zpráv: Pokud jsou v příkazu zadány příznaky, jsou nastaveny pro přidanou zprávu. V obou případech je příznak nastaven pro zprávu \Recent. Pokud je v příkazu zadáno časové razítko, bude tento čas nastaven jako čas vytvoření zprávy, jinak se jako čas vytvoření bere aktuální čas. Protože zpráva není jeden řádek, používají se literály . Příklad: C A003 PŘIPOJIT uložené zprávy (\Zobrazeno) {247} S + Připraveno pro doslovná data C Datum: Po, 7. února 1994 21:52:25 -0800 (PST) C Od: Fred Foobar <[email protected]> Předmět: odpolední jednání C Komu: [email protected] C Message-Id: <[email protected]> C C Ahoj Joe, myslíš, že se můžeme sejít zítra ve 15:30? S A003 OK PŘIPOJENÍ dokončeno Znak MULTIAPPEND, popsaný v RFC 3502 , umožňuje jediným příkazem přidat více zpráv do poštovní schránky. ŠEK Nastaví kontrolní bod na poštovní schránce. Jakékoli operace, jako je například zápis dat z paměti serveru na jeho pevný disk , musí být prováděny, když je schránka v příslušném stavu. Příkaz se používá ke kontrole integrity poštovní schránky po disku a dalších podobných operacích CHECK. Tento příkaz se používá bez parametrů. VYMAZAT Odstraní všechny zprávy označené příznakem \DELETEDze schránky bez zavření schránky. Odezvou serveru na příkaz EXPUNGEje zpráva o novém stavu schránky. VYHLEDÁVÁNÍ Vyhledá zprávy podle kritérií v aktivní poštovní schránce a poté zobrazí výsledky jako číslo zprávy. Je možné vyhledávat zprávy, které mají v těle určitý textový řetězec nebo mají určitý příznak, nebo byly přijaty před určitým datem atd. VYNÉST Získejte text e-mailové zprávy. Příkaz slouží pouze k zobrazení zpráv. Na rozdíl od POP3 klient IMAP neukládá kopii zprávy na klientském počítači . UKLÁDAT Změní informace o zprávě. KOPÍROVAT Kopíruje zprávy z jedné schránky do druhé. UID Používá se ve spojení s příkazy FETCH, COPY, STOREnebo SEARCH. Umožňuje těmto příkazům používat skutečné UID namísto posloupnosti čísel z řady čísel zpráv. SCHOPNOST Zeptejte se serveru IMAP na informace o jeho možnostech. NEOP Tým nic nedělá. Lze jej použít k udržení relace naživu, aby relace nevypršela časovým limitem. Odpověď serveru na příkaz NOOPmusí být vždy kladná. Protože server často vrací stav provádění určitého příkazu v odpovědi, NOOPlze jej použít jako spouštěč pro periodický dotaz na stav serveru.

Literatura

Odkazy

Poznámky

  1. 1 2 3 Semenov, 2014 .
  2. 12 University of Washington .
  3. Jaký je rozdíl mezi POP a IMAP?  (ruština)  ? . support.microsoft.com . Získáno 19. července 2021. Archivováno z originálu dne 19. července 2021.