Um einen IMAP Server zu testen ist ein EMail Programm immer nur die zweite Wahl, besser prüfst Du via Telnet oder OpenSSL.
Das IMAP Protokoll ist ein Klartext Protokoll, die Befehle sind Verständliche englischsprachige Wörter wie Beispielsweise Login, List, Select, Fetch, Store und so weiter.
Login in den EMail-Server
Der Zugriff ist unverschlüsslt via Telnet mit dem folgenden Aufruf nutzbar.:
telnet imap.example.com 143
Der verschlüsselte Zugriff via SSL erfolgt mittels ssl-Client openssl.:
openssl s_client -crlf -connect imap.example.com:993
Bei aktuellen IMAP Servern wird immer häufiger der unverschlüsselte Zugriff unterbunden, so das der Verschlüsselte IMAP Zugriff über das Tool OpenSSL die einzig nutzbare der beiden vorgestellten Möglichkeiten darstellt.
Der Login auf dem IMAP-Server erfolgt über den Befehl LOGIN.:
? LOGIN [Benutzername] [Passwort]
Klassischerweise wird als Benutzername die EMail-Adresse selbst verwendet. In einigen Fällen ist der Benutzername auch nur der erste Teil der EMail-Adresse bis zum, und ohne das @-Zeichen. In einigen seltenen Fällen hat der Benutzername eines IMAP-Servers auch keine Gemeinsamkeiten mit der abzufragenden EMail-Adresse. Genauere Informationen zu den Zugangsdaten Deines EMail-Postfachs erhälst Du von dem Betreiber des EMail-Servers.
Die IMAP-Befehle werden durch einen Tag begonnen, ich verwende hier als Tag einfach ein Fragezeichen.
Häufig wird als Tag eine Zahl verwendet oder das Tag enthält eine Zahl, die bei jedem Aufruf erhöht wird. Das Tag wird verwendet da Theoretisch mehrere Befehle gesendet werden können bevor die Antwort auf den vorherigen Befehl empfangen wird und auf diesem Web die Antworten den Befehlen zugeordnet werden können.
Alle IMAP-Befehle sind nicht case-sensitiv, so das diese nicht wie in meinen Beispielen immer groß geschrieben werden müssen.
Abrufen von EMails
Die Ordner im Postfach
Um zu erfahren welche Ordner auf dem EMail-Server anlegegt sind dient der Befehl LIST.
? LIST "" "*"
Als Antwort auf den Befehl LIST erhälst Du eine Liste mit den im Postfach angelegten Ordnern und des Ordner-Trennzeichens. Bei manchen EMail-Servern wird ein Punkt als Trennzeichen verwendet. Die Verwendung des Punktes kann einen Ordner wie Test.Ordner, bei fehlendem Ordner Test, zu einem Unterverzeichnis ohne Verzeichnis in dem das Unterverzeichnis liegt machen. Mozilla Thunderbird und Microsoft Outlook zeigen diesen „imaginären Ordner“ Test dann in Grau an, der Ordner Test kann nicht ausgewählt werden.)
Die EMails in den Ordnern
Die Anzahl der EMails in den einzelnen Ordnern kann durch den Befehl STATUS erfragt werden. Es werden die drei Optionen (MESSAGES) für alle Nachrichten, (RECENT) für nicht als gelesen markierte EMails und (UNSEEN) für noch nicht abgerufene EMails unterstützt.
? STATUS INBOX (MESSAGES) ? STATUS INBOX (RECENT) ? STATUS INBOX (UNSEEN)
Betreten eines Ordners
Ein Ordner kann zum mit EXAMINE zum Lesen oder mit SELECT zum lesen und Schreiben betreten werden.
? EXAMINE INBOX ? SELECT INBOX
Abrufen einer EMail
Es können verschiedene verschiedene Teile einer EMail abgerufen werden. Die beiden wichtigsten FETCH Optionen sind rfc822.text für den Inhalt einer EMail und rfc822.header für die EMail-Header. Es können aber auch die Größe (RFC822.SIZE) oder die FLAGS einer EMail abgefragt werden.
? FETCH 1 rfc822.text
? FETCH 1 rfc822.header
? FETCH 1 RFC822.SIZE
? FETCH 1 FLAGS
Anlegen und löschen eines Ordners
Zum Anlegen eines EMail-Ordners wird der Befehl CREATE verwendet, zum umbenennen RENAME und zum löschen der Befehl DELETE.
? CREATE Test ? RENAME Test temptare ? DELETE temptare
EMail Flags
? STORE 1 -FLAGS \SEEN ? STORE 1 +FLAGS \Answered ? STORE 1 FLAGS \DELETED
Als gelöscht markierte EMails löschen
? EXPUNGE
Idle Status
? IDLE ? DONE
Suchen im Postfach
? SEARCH BODY "Metzger" ? SEARCH SEEN SINCE 1-Jan-2017 NOT FROM "Schmitt" SMALLER 10000 SUBJECT "Blog"
? SORT (SUBJECT) UTF-8 SINCE 1-Mai-2017
Abmelden
? LOGOUT
EMail löschen
? STORE 1:20 flags \Deleted
? EXPUNGE
Die Fähigkeiten des IMAP Servers erfahren
? CAPABILITY
Wikipedia Artikel zum Internet Message Access Protocol
RFC3501 – INTERNET MESSAGE ACCESS PROTOCOL