Imap: Difference between revisions

From Federal Burro of Information
Jump to navigationJump to search
No edit summary
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
sample client commands:
 
Old way: sample client commands:


<pre>
<pre>
Line 9: Line 10:
</pre>
</pre>


sample pine ocnfig:
sample pine config:


  inbox-path={moose.quadratic.net/ssl/user="david@quadratic.net"/novalidate-cert}INBOX
  inbox-path={moose.quadratic.net/ssl/user="david@quadratic.net"/novalidate-cert}INBOX
TCPDUMP of imap conversation (thunderbird to zimbra), this is just what the client said:
<pre>
2 authenticate plain
AHRlc3QxMjNAc2NhbGFyLmNhAHRlc3QxMjM=
3 namespace
4 ID ("name" "Thunderbird" "version" "9.0.1")
5 xlist "" "%"
6 xlist "" "%/%"
7 lsub "" "*"
8 lsub "" "/home/*"
9 list "" "INBOX"
10 list "" "Trash"
11 create "Trash"
12 select "INBOX"
13 myrights "INBOX"
14 getacl "INBOX"
15 getquotaroot "INBOX"
16 UID fetch 367:* (FLAGS)
17 IDLE
DONE
18 noop
19 getquotaroot "INBOX"
20 UID fetch 367:* (FLAGS)
21 UID fetch 368 (UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (From To Cc Bcc Subject Date Message-ID Priority X-Priority References Newsgroups In-Reply-To Content-Type)])
22 UID fetch 368 (UID RFC822.SIZE BODY.PEEK[])
23 UID fetch 368 (UID BODY.PEEK[HEADER.FIELDS (Content-Type Content-Transfer-Encoding)] BODY.PEEK[TEXT]<0.2048>)
24 IDLE
</pre>
To see the back and forth see [[/Full conversation]]
that crazy auth string is
authz\0username\0password
base64 encoded. no line return.
authz is what you are logging into see normally this will be nothing.
so the string would be , for a zimbra build where your login is your email:
"\0username@domain.com\0password"
Here is an example of decoding the string so that you can "see" it:
echo -n AHRlc3QxMjNAc2NhbGFyLmNhAHRlc3QxMjM= | base64 -d
$ echo -n AHRlc3QxMjNAc2NhbGFyLmNhAHRlc3QxMjM= | base64 -d | od -c
0000000  \0  t  e  s  t  1  2  3  @  s  c  a  l  a  r  .
0000020  c  a  \0  t  e  s  t  1  2  3
0000032
$
Here is an example of encoding the string for use in a "manual" connection test:
$ echo -e "\0000username@domain.com\0000password" | base64
AHVzZXJuYW1lQGRvbWFpbi5jb20AcGFzc3dvcmQK
$
example command line conversation:
> client says
< server replies
$ openssl s_client -connect server.com:993
<* OK server.com Zimbra IMAP4rev1 server ready
>2 authenticate plain
<+
>AHJvdW5kdHJpcEBhbHBoYS1ncm91cC5jYQB0aWU3QWguSw==
<2 OK [CAPABILITY IMAP4rev1 ACL BINARY CATENATE CHILDREN CONDSTORE ENABLE ESEARCH ESORT I18NLEVEL=1 ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ LOGIN-REFERRALS
  MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SEARCHRES SORT THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN XLIST] AUTHENTICATE completed

Latest revision as of 14:42, 5 October 2012

Old way: sample client commands:

a01 login $user $password
a02 SELECT INBOX
a03 FETCH  RFC822.HEADER
a04 SEARCH SUBJECT ??
a05 store 1:2 flags \Deleted

sample pine config:

inbox-path={moose.quadratic.net/ssl/user="david@quadratic.net"/novalidate-cert}INBOX

TCPDUMP of imap conversation (thunderbird to zimbra), this is just what the client said:

2 authenticate plain
AHRlc3QxMjNAc2NhbGFyLmNhAHRlc3QxMjM=
3 namespace
4 ID ("name" "Thunderbird" "version" "9.0.1")
5 xlist "" "%"
6 xlist "" "%/%"
7 lsub "" "*"
8 lsub "" "/home/*"
9 list "" "INBOX"
10 list "" "Trash"
11 create "Trash"
12 select "INBOX"
13 myrights "INBOX"
14 getacl "INBOX"
15 getquotaroot "INBOX"
16 UID fetch 367:* (FLAGS)
17 IDLE
DONE
18 noop
19 getquotaroot "INBOX"
20 UID fetch 367:* (FLAGS)
21 UID fetch 368 (UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (From To Cc Bcc Subject Date Message-ID Priority X-Priority References Newsgroups In-Reply-To Content-Type)])
22 UID fetch 368 (UID RFC822.SIZE BODY.PEEK[])
23 UID fetch 368 (UID BODY.PEEK[HEADER.FIELDS (Content-Type Content-Transfer-Encoding)] BODY.PEEK[TEXT]<0.2048>)
24 IDLE

To see the back and forth see /Full conversation

that crazy auth string is

authz\0username\0password

base64 encoded. no line return.

authz is what you are logging into see normally this will be nothing.

so the string would be , for a zimbra build where your login is your email:

"\0username@domain.com\0password"

Here is an example of decoding the string so that you can "see" it:

echo -n AHRlc3QxMjNAc2NhbGFyLmNhAHRlc3QxMjM= | base64 -d
$ echo -n AHRlc3QxMjNAc2NhbGFyLmNhAHRlc3QxMjM= | base64 -d | od -c
0000000  \0   t   e   s   t   1   2   3   @   s   c   a   l   a   r   .
0000020   c   a  \0   t   e   s   t   1   2   3
0000032
$

Here is an example of encoding the string for use in a "manual" connection test:

$ echo -e "\0000username@domain.com\0000password" | base64
AHVzZXJuYW1lQGRvbWFpbi5jb20AcGFzc3dvcmQK
$

example command line conversation:

> client says
< server replies
$ openssl s_client -connect server.com:993
<* OK server.com Zimbra IMAP4rev1 server ready
>2 authenticate plain
<+
>AHJvdW5kdHJpcEBhbHBoYS1ncm91cC5jYQB0aWU3QWguSw==
<2 OK [CAPABILITY IMAP4rev1 ACL BINARY CATENATE CHILDREN CONDSTORE ENABLE ESEARCH ESORT I18NLEVEL=1 ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ LOGIN-REFERRALS
  MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SEARCHRES SORT THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN XLIST] AUTHENTICATE completed