How to Access IMAP server from the command line using OpenSSL


 If you are running Linux, you should have openssl installed. We can connect directly from the openssl to imap server from the command line.
 
 Various Methods That can be done here are
 
 
1) Connect
 
 Run the following command to begin an SSL session with the IMAP server

openssl s_client -crlf -connect outlook.office365.com:993

You’ll get an output such as the following that can be suppressed by adding the -quiet option to the command above

2) Login
Run the following command

tag login user@outlook.com password


tag before login command is some character sequence required to be used before each subsequent IMAP command.

3) List Mailboxes

Run the following command

tag LIST "" "*"

Output:

* LIST (\HasNoChildren) "/" Archive
* LIST (\HasNoChildren) "/" "Archived Processed"
* LIST (\HasChildren) "/" Calendar
* LIST (\HasNoChildren) "/" Calendar/Birthdays
* LIST (\HasNoChildren) "/" "Calendar/United States holidays"
* LIST (\HasChildren) "/" Contacts
* LIST (\HasChildren) "/" "Conversation History"
* LIST (\HasNoChildren \Trash) "/" "Deleted Items"
* LIST (\HasNoChildren) "/" DISCARD
* LIST (\HasNoChildren \Drafts) "/" Drafts
* LIST (\Marked \HasNoChildren) "/" INBOX
* LIST (\HasNoChildren) "/" "Infected Items"
* LIST (\HasNoChildren) "/" Journal
* LIST (\HasNoChildren \Junk) "/" "Junk Email"
* LIST (\HasNoChildren) "/" Notes
* LIST (\HasNoChildren) "/" Outbox
* LIST (\HasNoChildren) "/" PROCESS
* LIST (\HasNoChildren \Sent) "/" "Sent Items"
* LIST (\HasNoChildren) "/" Tasks
tag OK LIST completed.

4) Select a mailbox

Run  the following command to select the INBOX

tag SELECT INBOX

Output
tag SELECT INBOX
* 0 EXISTS
* 0 RECENT
* FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)
* OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent flags
* OK [UIDVALIDITY 14] UIDVALIDITY value
* OK [UIDNEXT 136599] The next unique identifier value
tag OK [READ-WRITE] SELECT completed.


5) Mailbox status

Execute the following command to get the total number of messages in the selected Mailbox

tag STATUS INBOX (MESSAGES)

Output

* STATUS "INBOX" (MESSAGES 6388)


6) Fetch headers of last ten messages

Execute the command

tag FETCH 678:688 (BODY[HEADER])


688--is total messages
687-- 10 messages before


7) Mail BODY

Fetch message body
Execute the following command

tag FETCH 688 (BODY)


Message bodies are usually multipart - you can retrieve a particular part using

tag FETCH 6388 (BODY[n])
n is a zero-indexed part number.

8) Log out

Close IMAP connection with below

tag LOGOUT




If you like please follow and comment