Marcel Logen in de.comm.protocols.misc:
>Kay Martinen in de.comm.protocols.misc:
>>Wer greift schon per telnet auf einen IMAP Server zu. Und dein
>
>Ich, jedenfalls momentan zu Lernzwecken.
Wen es interessiert:
Ich habe jetzt mal eine Sitzung mit den für mich wichtigen
Befehlen mitgeschnitten. Die Zeilen mit "C" (client) am An-
fang habe ich eingegeben. Das andere sind Antworten vom
IMAP-Server.
| * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] Dovecot (Debian) ready.
C a001 CAPABILITIES
| a001 BAD Error in IMAP command received by server.
Da war der Befehl falsch geschrieben.
C a002 CAPABILITY
| * CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN
| a002 OK Pre-login capabilities listed, post-login capabilities have more.
|
C a003 LOGIN username password
| a003 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ NOTIFY QUOTA] Logged in
|
C a004 LIST "*" "*"
| * LIST (\HasNoChildren \UnMarked) "." name1
| * LIST (\HasNoChildren \UnMarked) "." name2
| * LIST (\HasNoChildren \UnMarked) "." Spam
| * LIST (\HasNoChildren) "." Papierkorb
| * LIST (\HasNoChildren \UnMarked) "." INBOX.Spam
| * LIST (\HasNoChildren \UnMarked) "." INBOX.Papierkorb
| * LIST (\HasNoChildren \UnMarked) "." "INBOX.Gesendete Objekte"
| * LIST (\HasNoChildren \UnMarked) "." INBOX.Entw&APw-rfe
| * LIST (\HasNoChildren \UnMarked) "." "Gesendete Objekte"
| * LIST (\HasNoChildren \UnMarked) "." Gesendet
| * LIST (\HasNoChildren \UnMarked) "." Entwuerfe
| * LIST (\HasNoChildren \UnMarked) "." Entw&APw-rfe
| * LIST (\HasChildren) "." INBOX
| a004 OK List completed (0.002 + 0.000 + 0.001 secs).
|
C a005 EXAMINE INBOX
| * FLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded $cl_1 $cl_0 $cl_2 $cl_3 $cl_4 $cl_5 $cl_6 $cl_7 $cl_8 $cl_9 $cl_10 cl_0 cl_1 cl_2 cl_3 cl_4 cl_5 cl_6 cl_7 cl_8 cl_9 cl_10 Old $MDNSent)
| * OK [PERMANENTFLAGS ()] Read-only mailbox.
| * 907 EXISTS
| * 0 RECENT
| * OK [UNSEEN 8] First unseen.
| * OK [UIDVALIDITY 1361292092] UIDs valid
| * OK [UIDNEXT 8247] Predicted next UID
| * OK [HIGHESTMODSEQ 12323] Highest
| a005 OK [READ-ONLY] Examine completed (0.005 + 0.000 + 0.004 secs).
Der Befehl EXAMINE öffnet einen Ordner/eine Mailbox
read-only. Es befinden sich 907 Mails in der Mailbox
"INBOX".
C a006 SELECT Papierkorb
| * OK [CLOSED] Previous mailbox closed.
| * FLAGS (\Answered \Flagged \Deleted \Seen \Draft $cl_0 Old $Forwarded $cl_1)
| * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $cl_0 Old $Forwarded $cl_1 \*)] Flags permitted.
| * 9 EXISTS
| * 7 RECENT
| * OK [UNSEEN 1] First unseen.
| * OK [UIDVALIDITY 1361292095] UIDs valid
| * OK [UIDNEXT 6910] Predicted next UID
| * OK [HIGHESTMODSEQ 6132] Highest
| a006 OK [READ-WRITE] Select completed (0.002 + 0.000 + 0.001 secs).
Mit SELECT kann man eine Mailbox read-write öffnen.
Es befinden sich 9 Mails im "Papierkorb".
C a007 FETCH 1:9 FLAGS
| * 1 FETCH (FLAGS ())
| * 2 FETCH (FLAGS (\Seen))
| * 3 FETCH (FLAGS (\Recent))
| * 4 FETCH (FLAGS (\Seen \Recent))
| * 5 FETCH (FLAGS (\Seen \Recent))
| * 6 FETCH (FLAGS (\Recent))
| * 7 FETCH (FLAGS (\Recent))
| * 8 FETCH (FLAGS (\Recent))
| * 9 FETCH (FLAGS (\Recent))
| a007 OK Fetch completed (0.002 + 0.000 + 0.001 secs).
|
C a008 FETCH 9 BODY[Header]
| * 9 FETCH (FLAGS (\Seen \Recent) BODY[HEADER] {2174}
| Return-path: <[...]>
| Delivery-date: Tue, 06 Apr 2021 20:05:00 +0200
| [...]
| Envelope-to:
33320000...@ybtra.de
|
| )
| a008 OK Fetch completed (0.002 + 0.000 + 0.001 secs).
Mit "BODY[Header]" wird nur der Header angezeigt.
C a009 FETCH 1 BODY[Header]
| * 1 FETCH (FLAGS (\Seen) BODY[HEADER] {1625}
| Return-path: <[...]>
| Delivery-date: Sat, 03 Apr 2021 15:18:14 +0200
| [...]
| Envelope-to: [...]
|
| )
| a009 OK Fetch completed (0.003 + 0.000 + 0.002 secs).
|
C a010 STORE 1 +FLAGS (\Deleted)
| * 1 FETCH (FLAGS (\Deleted \Seen))
| a010 OK Store completed (0.002 + 0.000 + 0.001 secs).
Mit "STORE" und "+FLAGS" kann man einer Mail Flags hinzu-
fügen, z. B. "\Deleted".
C a011 FETCH 1:9 FLAGS
| * 1 FETCH (FLAGS (\Deleted \Seen))
| * 2 FETCH (FLAGS (\Seen))
| * 3 FETCH (FLAGS (\Recent))
| * 4 FETCH (FLAGS (\Seen \Recent))
| * 5 FETCH (FLAGS (\Seen \Recent))
| * 6 FETCH (FLAGS (\Recent))
| * 7 FETCH (FLAGS (\Recent))
| * 8 FETCH (FLAGS (\Recent))
| * 9 FETCH (FLAGS (\Seen \Recent))
| a011 OK Fetch completed (0.002 + 0.000 + 0.001 secs).
Wie man sieht, hat die Mail #1 jetzt das Flag "\Deleted".
C a012 EXPUNGE
| * 1 EXPUNGE
| a012 OK Expunge completed (0.002 + 0.000 + 0.001 secs).
Mit EXPUNGE werden die mit dem Flag "\Deleted" versehenen
Mails gelöscht.
C a013 FETCH : FLAGS
| a013 BAD Error in IMAP command FETCH: Invalid messageset (0.001 + 0.000 secs).
Da hatte ich gedacht, mit ":" alle Mails auswählen zu
können. ;-)
C a013 SEARCH ALL
| * SEARCH 1 2 3 4 5 6 7 8
| a013 OK Search completed (0.001 + 0.000 secs).
Hier habe ich irrtümlich die "a013" noch einmal verwendet.
Das scheint dem Server aber nichts auszumachen.
Mit SEARCH ALL kann man sich die Nummern der Mails in der
Mailbox auflisten lassen.
C a014 FETCH 1:8 FLAGS
| * 1 FETCH (FLAGS (\Seen))
| * 2 FETCH (FLAGS (\Recent))
| * 3 FETCH (FLAGS (\Seen \Recent))
| * 4 FETCH (FLAGS (\Seen \Recent))
| * 5 FETCH (FLAGS (\Recent))
| * 6 FETCH (FLAGS (\Recent))
| * 7 FETCH (FLAGS (\Recent))
| * 8 FETCH (FLAGS (\Seen \Recent))
| a014 OK Fetch completed (0.001 + 0.000 secs).
Die erste der ursprünglich 9 Mail fehlt jetzt.
C a015 FETCH 1 BODY[]
| * 1 FETCH (BODY[] {1009}
| Date: Sat, 3 Apr 2021 21:29:29 +0200 (CEST)
| From: Marcel Logen <[...]>
| [...]
|
| Marcel)
| a015 OK Fetch completed (0.001 + 0.000 secs).
Mit FETCH und "BODY[]" kann man sich die gesamte Mail
mit allen Headerzeilen und dem Body anzeigen lassen.
C a016 LOGOUT
| * BYE Logging out
| a016 OK Logout completed (0.001 + 0.000 secs).
| closed
Mit LOGOUT wird die Sitzung beendet.
Noch ein paar Befehle aus einer anderen Sitzung:
C a002 SELECT Papierkorb
| * FLAGS (\Answered \Flagged \Deleted \Seen \Draft $cl_0 Old $Forwarded $cl_1)
| * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $cl_0 Old $Forwarded $cl_1 \*)] Flags permitted.
| * 8 EXISTS
| * 0 RECENT
| * OK [UNSEEN 2] First unseen.
| * OK [UIDVALIDITY 1361292095] UIDs valid
| * OK [UIDNEXT 6910] Predicted next UID
| * OK [HIGHESTMODSEQ 6136] Highest
| a002 OK [READ-WRITE] Select completed (0.001 + 0.000 secs).
|
C a003 SEARCH ALL
| * SEARCH 1 2 3 4 5 6 7 8
| a003 OK Search completed (0.001 + 0.000 secs).
|
C a005 FETCH 3 BODY[Text]
| * 3 FETCH (BODY[TEXT] {1768}
| Hallo [...]
| [...]
| Marcel)
| a005 OK Fetch completed (0.001 + 0.000 secs).
Mit "BODY[Text]" kann man sich den Body der Mail
ansehen ...
C a008 FETCH 3 BODY[Text]<0.300>
| * 3 FETCH (BODY[TEXT]<0> {300}
| Hallo [...]
| [...]
| [...] und)
| a008 OK Fetch completed (0.001 + 0.000 secs).
... oder auch nur bis Byte 300.
| a009 FETCH 3 BODY[]<0.3000>
| * 3 FETCH (BODY[]<0> {2519}
| Date: Sun, 4 Apr 2021 22:33:57 +0200 (CEST)
| From: Marcel Logen <[...]>
| [...]
| Marcel)
| a009 OK Fetch completed (0.001 + 0.000 secs).
Hier wurde die gesamte Mail (mit Header) ausgegeben, weil
die angegebene "3000" die Gesamtlänge der Mail (2519) über-
stieg.
C a010 LOGOUT
| * BYE Logging out
| a010 OK Logout completed (0.001 + 0.000 secs).
| closed
Marcel
--
╭───╮ ╭──╮ ╭────────╮ ╭─────╮ ╭─╮
╰─╮ │ ╭──╮ ╭─╯ ╰─╮ │ ╰──╯ │ ╭──╯ ╰────╮ ╭─╮
╮ ╭─╮ ╭─────╯ │ │ ╰─╯ ╰─╯ ╰───╯ ╰──╮ │ ╰
╰─╯ ╰──╯ ╰─╯ ╰──╯