IMAP jest protokołem dostępu do wiadomości poczty elektroniczne w Internecie, charakteryzującym się strukturą klient–serwer. Klient może składować pocztę na serwerze lub ją pobierać, przeglądać, odczytywać w całości lub części czy wreszcie kasować. Protokołem komunikacyjnym dla IMAP4.1 jest SMTP.
Główna różnica między wcześniejszym POP3 a IMAP4.1 zasadza się na korzystaniu z systemu katalogów, chociaż tych różnic jest dużo więcej. IMAP4.1 umożliwia wykorzystywanie rozproszonych katalogów w taki sposób, jak gdyby się one znajdowały na komputerze lokalnym. IMAP umożliwia też klientom zakładanie, kasowanie i przemianowanie skrzynek pocztowych, wertowanie nowych wiadomości i usuwanie starszych. Dzięki mechanizmowi unikatowe identyfikowania każdej wiadomości w skrzynce pocztowej umożliwia czytanie ze skrzynki tylko wybranych wiadomości lub ich części, przemieszczanie wiadomości i zmienianie ich atrybutów.
Protokół IMAP korzysta z tych protokołów transportowych, które zapewniają między serwerem a klientem ustanowienie kanału niezawodnego. Jeśli tym protokołem jest TCP, to IMAP wykorzystuje port 143. Polecenia i dane IMAP protokół transportowy przenosi w takiej postaci, w jakiej je wysyłają serwer lub użytkownik. Zasady przekazywania danych IMAP4.1 są takie same jak innych podobnych protokołów, ale ten szybki i wielofunkcyjny protokół może obsłużyć ponad 20 poleceń klienta dotyczących jego poczty.
Po ustanowieniu połączenia, na przykład TCP, i kiedy serwer przysłał zaproszenie, klient musi się zarejestrować w systemie. Korzysta wtedy zwykle z polecenia LOGIN. Argumentem polecenia jest wiersz zawierający identyfikator i hasło klienta. Polecenie LOGIN przekazuje je tekstem otwartym. Dlatego użytkownik może posłużyć się poleceniem AUTHENTICATE. Argumentem polecenia jest wtedy wiersz charakteryzujący mechanizm uwierzytelnienia. Jeśli wybranym mechanizmem szyfrowania jest Kerberos, to uwierzytelnienie wygląda następująco: po zarejestrowaniu się w systemie klient musi wskazać katalog, z którym będzie pracował. Wybór katalogu przeprowadza się za pomocą polecenia SELECT. Jego argumentem jest nazwa katalogu. SELECT ustanawia bieżący katalog. Kiedy użytkownik chce otrzymać informacje o innym katalogu, musi użyć polecenia EXAMINE z argumentem w postaci nazwy tego katalogu.
IMAP jest opisany w następujących RFC: RFC 1731 (mechanizmy uwierzytelniania), 1732 (kompatybilność IMAP2 i IMAP2bis), 1730 (IMAP4), 1733 (model IMAP4), 2060 (IMAP4.1), 2062 (kompatybilność IMAP4 i IMAP2bis), 2086 (rozszerzenia ACL), 2177 (polecenie IDLE), 2192 (schemat URL IMAP4), 2221 (LOGIN), 2359 (rozszerzenia UIDPLUS), 2559 (TLS z IMAP, POP3 i ACAP), 2686 (rekomendowane implementacje), 2971 (rozszerzenia ID).