How to test if imap and pop mail server service
is working with Telnet cmd
I've recently built new mail
qmail server with vpopmail to
serve pop3 connectins and courierimap and courierimaps to take care
for
IMAP IMAPS.
I further used telnet to test if the Linux server pop3 service on
(110) and imap on (143) worked fine, straight after the completed
qmail install.
Here is how to test mail server with vpopmail listening for
connections on pop3 port :
debian:~# telnet mail.mymailserver.com 110
Trying 111.222.333.444...
Connected to mail.mymailserver.com.
Escape character is '^]'.
+OK <2813.1312745988@mymailserver.com>
USER hipo@mymailserver.com
+OK
PASS here_goes_my_secret_pass
+OK
LIST
1 309783
2 64053
3 2119
4 64357
5 317893
RETR 1
My first mail content retrieved with RETR commandgoes here
...
.
quit
+OK
Connection closed by foreign host.
You see I have 5 messages in my mailbox, as you can see I used RETR
command to check the content of my mail, this is handy as I can
read my mails straight with telnet (if the mail is in plain text),
of course it's a bit more complicated if I have to read encrypted
or html mail, though still its easy to write a tiny parser and pipe
the content produced by telnet command to lynx or some other text
based browser.
Now another sys admin handy tip is the use of telnet to check my
mail servers IMAP servers is correctly operating.
Here is how:
debian:~# telnet mail.mymailserver.com 143
Trying 111.222.333.444...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE
THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL
ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2010 Double
Precision, Inc. See COPYING for distribution information.
01 LOGIN hipo@mymailserver.com
here_goes_my_secret_pass
A OK LOGIN Ok.
02 LIST "" *
* LIST (\Unmarked \HasNoChildren) "." "INBOX"
02 OK LIST completed
03 SELECT INBOX
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)]
Limited
* 5 EXISTS
* 5 RECENT
* OK [UIDVALIDITY 1312746907] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
03 OK [READ-WRITE] Ok
04 STATUS INBOX (MESSAGES)
* STATUS "INBOX" (MESSAGES 5)
04 OK STATUS Completed.
05 FETCH 1 ALL
...
06 FETCH 1 BODY
...
07 FETCH 1 ENVELOPE
...
As you can see according to standard to send
commands to IMAP server from console after a telnet connection you
will have to always include a command line number like 01, 02, 03
.. etc.
Using such a line numbering is not obligitory and also letters like
A, B, C could be use still line numbering with numbers is
generally a good idea since it's easier for reading on the
screen.
Now line 02 shows you available mailboxes, line 03 SELECT
INBOX selects the imap Inbox to be further operated with, 04
STATUS INBOX cmd displays status about current mailboxes in
folder.
FETCH 1 ALL instructs the imap server to get list of all
IMAP message headers. Next command in line 05 FETCH 1 BODY
will display the message body of the first message in list.
The 07 FETCH 1 ENVELOPE will display the mail headers
for the 1 message.
Few other IMAP commands which might be helpfun on connection
are:
08 FETCH 1 FULL
09 FETCH * FULL
First one would fetch complete content of a message numbered one
from the imap server and the second one 09 FETCH * FULL will
get all the mail content for all messages located on the remote
IMAP server.
The STATUS command aforementioned earlier could take the
following list of arguments:
MESSAGES, UNSEEN, RECENT UIDNEXT UIDVALIDITY
These commands are a gold mine for me as a sysadmin as it helps
quickly solve problems, hope they would help to somebody out there
as well ;)
This way is a way shorter than bothering each time to check, if
some customer e-mail account is improperly configured by creating
setting up a new account in Thunderbird.