Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

IMAP: In welcher Mailbox bin ich?

6 views
Skip to first unread message

Marcel Logen

unread,
Apr 1, 2021, 6:41:12 PM4/1/21
to
Gibt es im IMAP einen Befehl, der anzeigt/ausgibt, in
welcher Mailbox sich man gerade befindet?

In RFC3501 habe ich leider keinen gefunden.

<https://tools.ietf.org/html/rfc3501>

Marcel
--
╭───╮ ╭────╮ ╭─────╮ ╭───
╭─╯ ╰──╮ ╰──╮ │ ╭──╮ ╰──╮ ╰──────╮ │
─╮ ╭─╯ ╭─────╯ ╭───╮ │ ╰──╯ ╰───────╮ ╭─╮ ╭──╯ ╭──────╯ ╭─╯
╰───╯ ╰─────────╯ ╰─╯ ╰─╯ ╰────╯ ╰────────╯

Kay Martinen

unread,
Apr 2, 2021, 8:30:04 AM4/2/21
to
Am 02.04.21 um 00:41 schrieb Marcel Logen:
> Gibt es im IMAP einen Befehl, der anzeigt/ausgibt, in
> welcher Mailbox sich man gerade befindet?
>
> In RFC3501 habe ich leider keinen gefunden.
>
> <https://tools.ietf.org/html/rfc3501>


Mailbox im Sinne von Konto oder Ordner/Datei?

Du hast auch die Vorbemerkung gelesen in der es heißt:

IMAP4rev1 supports a single server. A mechanism for accessing
configuration information to support multiple IMAP4rev1 servers is
discussed in RFC 2244.

Und das erübrigt m.E. schon die notwendigkeit einer art "whoami" befehl
via IMAP.

Das ist wohl eher eine Sache des Clients. Mein MUA zeigt mir eine
Ordnerliste pro IMAP Konto und macht damit ein verirren darin eigentlich
schon unmöglich. Und m.W. machen das andere MUA ebenso.

ODER, gehts dir darum ein einzelnes Mailbox-File in EINEM IMAP Konto zu
identifizieren? Ich denke auch das ist eine Sache des Clients der das
anzeigen sollte.

Wer greift schon per telnet auf einen IMAP Server zu. Und dein
BSD-Flnews (lt. deiner Header) kenne ich nicht, das ist aber offenbar
ein NUA und nicht der Client um den es bei dir konkret geht. Welchen
willst du denn benutzen? Evtl. wäre die Frage dann in der dazu passenden
Gruppe sinnvoller.

Kay

--
Posted via leafnode

Marcel Logen

unread,
Apr 2, 2021, 8:52:40 AM4/2/21
to
Kay Martinen in de.comm.protocols.misc:

>Am 02.04.21 um 00:41 schrieb Marcel Logen:

>> Gibt es im IMAP einen Befehl, der anzeigt/ausgibt, in
>> welcher Mailbox sich man gerade befindet?
>>
>> In RFC3501 habe ich leider keinen gefunden.
>>
>> <https://tools.ietf.org/html/rfc3501>
>
>
>Mailbox im Sinne von Konto oder Ordner/Datei?

Im Sinne von "Ordner". Aus RFC3501, Abstract:

| IMAP4rev1 permits manipulation of mailboxes (remote
| message folders) in a way that is functionally equi-
| valent to local folders.

>Du hast auch die Vorbemerkung gelesen in der es heißt:
>
> IMAP4rev1 supports a single server. A mechanism for accessing
> configuration information to support multiple IMAP4rev1 servers is
> discussed in RFC 2244.
>
>Und das erübrigt m.E. schon die notwendigkeit einer art "whoami" befehl
>via IMAP.

IMHO nein. Ich habe mich in den letzten Tagen mal mit
den IMAP-Befehlen beschäftigt und per OpenSSL (verschlüs-
selt) auf ein Mailkonto zugegriffen.

Dabei ist mir aufgefallen, daß der Mailinhalt ja recht
lang sein kann und dann nach oben wegscrollt. D. h. ich
finde den SELECT- bzw. EXAMINE-Befehl, mit dem ich den
Ordner betreten habe, nicht mehr so leicht.

>Das ist wohl eher eine Sache des Clients. Mein MUA zeigt mir eine

Es geht mir hier nicht um den Zugriff mit einem Client.

Der merkt sich natürlich - im Gegensatz zu mir :-) -,
in welchem Ordner er ist.

>Ordnerliste pro IMAP Konto und macht damit ein verirren darin eigentlich
>schon unmöglich. Und m.W. machen das andere MUA ebenso.

Ja, das ist richtig.

[...]

>Wer greift schon per telnet auf einen IMAP Server zu. Und dein

Ich, jedenfalls momentan zu Lernzwecken.

>BSD-Flnews (lt. deiner Header) kenne ich nicht, das ist aber offenbar
>ein NUA und nicht der Client um den es bei dir konkret geht. Welchen
^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ja und ja

Marcel
--
╭──╮ ╭──────╮ ╭──────╮ ╭────╮ ╭──╮ ╭──╮
╯ ╰─╯ │ ╰───╮ ╰─╮ ╭──╯ ╰─╮ ╭─╮ ╭────╯ ╰──╯ ╰─╮ ╭─╮
│ ╭───╯ ╰──╮ ╰───╮ ╭──╯ │ │ │ ╰──╮ │ ╰─
╰──╯ ╰──────╯ ╰────╯ ╰─╯ ╰──╯

Marcel Logen

unread,
Apr 6, 2021, 6:23:41 PM4/6/21
to
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
--
╭───╮ ╭──╮ ╭────────╮ ╭─────╮ ╭─╮
╰─╮ │ ╭──╮ ╭─╯ ╰─╮ │ ╰──╯ │ ╭──╯ ╰────╮ ╭─╮
╮ ╭─╮ ╭─────╯ │ │ ╰─╯ ╰─╯ ╰───╯ ╰──╮ │ ╰
╰─╯ ╰──╯ ╰─╯ ╰──╯
0 new messages