Работа с почтовым сервером через telnet

После того, как вы настроили почтовый сервер стоит проверить его работоспособность. Можно, конечно, настроить почтовый клиент и погонять почту туда-сюда, но это требует времени и определенных усилий. А если мы проводим проверку прямо на сервере, то почтового клиента может вообще там не оказаться. Конечно можно установить и настроить консольный клиент типа mutt, но зачем? У нас есть мощный инструмент — telnet. Вот с его помощью и будем работать с почтовым сервером.

1. Отправка письма.

 

Почтовый сервер для отправки письма использует протокол SMTP, который по умолчанию работает на tcp-порту 25. Вполне возможен¸кстати, вариант его нахождения и на порту 587. Порт 587 использует служба submission — SMTP с проверкой подлинности, но это совсем не означает что не будет проходить авторизация клиентов почтового сервера на порту 25 (естественно, если вы это настроили) .

И так… Подготовительные действия... Логин и пароль мы должны передавать не в открытом виде, а в кодированном. По этому вначале сделаем соответствующие строки логина и пароля. В Linux это делается при помощи стандартной утилиты base64

$ echo 'my_login' | base64

bXlfbG9naW4K

  

$ echo 'my_password' | base64

bXlfcGFzc3dvcmQK

  

Именно эти значения мы и будем вводить в качестве логина-пароля.

Открываем сессию связи с почтовым сервером по SMTP

  

$ telnet mail-srv 25

Далее идет последовательность команд для отправки письма с комментариями к ним.

  

 

 

Trying 192.168.0.114...

Connected to mail-srv.

Escape character is '^]'.

Вывод на консоль попытки соединения с сервером

220 mail-srv ESMTP (ubuntu)

При удачном соединении, сервер представляется

ehlo test.com

Вводим строку приветствия

250- mail-srv

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

И получаем ответ от сервера

auth login

Если нужна авторизация на сервере — вводим эту строку. Если авторизация не нужна, пропускаем эту команду и продолжаем ввод с команды “”mail from:”

334 VXNlcm5hbWU6

Получаем ответ от сервера

bXlfbG9naW4K

Вводим наш логин в формате base64, который мы получили и запомнили выше

334 UGFzc3dvcmQ6

Получаем ответ от сервера

bXlfcGFzc3dvcmQK

Вводим наш пароль в формате base64, который мы получили и запомнили выше

235 2.7.0 Authentication successful

Сервер сообщает об успешной авторизации

mail from: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.

Указываем отправителя письма

250 2.1.0 Ok

Ответ от сервера о том, что адрес принят

rcpt to: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.

Указываем получателя письма

250 2.1.5 Ok

Ответ от сервера о том, что адрес принят

data

После ввода этой команды начинаем само письмо

354 End data with <CR><LF>.<CR><LF>

Ответ сервера на предыдущую команду

subject: test telnet auth

Если нужна тема письма — вводим эту команду

test

.

 

Тут пишем само письмо. Оно ОБЯЗАТЕЛЬНО должно заканчиваться последовательностью

ENTER

.

ENTER

250 2.0.0 Ok: queued as 415211810C6

Ответ сервера о том, что письмо принято и поставлено в очередь.

quit

Вводим команду отключения от сервера

221 2.0.0 Bye

Connection closed by foreign host.

Сервер сообщает об окончании сессии

 

  

После этих действий, письмо будет принято сервером и отправлено на адрес получателя.

   

   

2. Проверка почты

  

 

Теперь проверим работу IMAP- сервера.

Представим, что нам с сервера нужно срочно получить письмо

Воспользуемся для этого все той-же утилитой telnet.

Соединимся с сервером

$ telnet mail-srv 143

  

 

Если у нас соединение с сервером IMAP шифрованное (по SSL), то команда соединения будет следующей:

$ openssl s_client -crlf -ign_eof -connect mail-srv:993

  

 

 

Далее идет последовательность команд для работы с сервером с комментариями к ним.

   

 

Trying 192.168.0.114...

Connected to mail-srv.

Escape character is '^]'.

Вывод на консоль попытки соединения с сервером

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.

При удачном соединении, сервер представляется

. login our-login our-password

После команды . Login вводим в той же строке логин и пароль в открытом виде

. OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in

Сервер сообщает об успешном логине

. list "" "*"

Вводим команду просмотра списка почтовых папок

 

* LIST (\HasNoChildren) "." "Drafts"

* LIST (\HasNoChildren) "." "Spam"

* LIST (\HasNoChildren) "." "Trash"

* LIST (\HasNoChildren) "." "Sent"

* LIST (\HasNoChildren) "." "INBOX"

. OK List completed.

И сервер их показывает

. status INBOX (messages)

Запрашиваем у сервера статус папки Inbox

* STATUS "INBOX" (MESSAGES 1086)

. OK Status completed.

Ответ сервера

. select inbox

Выбираем папку Inbox

* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent Junk NonJunk $Forwarded KMAILFORWARDED KMAILTODO KMAILWATCHED KMAILIGNORED $TODO $WATCHED $IGNORED receipt-handled $label2 $has_cal)

* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent Junk NonJunk $Forwarded KMAILFORWARDED KMAILTODO KMAILWATCHED KMAILIGNORED $TODO $WATCHED $IGNORED receipt-handled $label2 $has_cal \*)] Flags permitted.

* 1086 EXISTS

* 0 RECENT

* OK [UNSEEN 1085] First unseen.

* OK [UIDVALIDITY 1242120321] UIDs valid

* OK [UIDNEXT 138212] Predicted next UID

* OK [HIGHESTMODSEQ 187388] Highest

. OK [READ-WRITE] Select completed.

Ответ сервера

. fetch 7 full

Даем команду серверу показать письмо № 7

* 7 FETCH (FLAGS (\Seen) INTERNALDATE "12-Jul-2008 18:24:12 +0300" RFC822.SIZE 1935 ENVELOPE ("Sat, 12 Jul 2008 18:07:52 +0300 (EEST)" "test mail" (("test.com" NIL "isbear" "ukrpost.net")) (("test.com" NIL "isbear" "ukrpost.net")) (("test.com" NIL "isbear" "ukrpost.net")) ((NIL NIL "yakim" "test.com.net")) NIL NIL NIL "<Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.>") BODY ("text" "plain" ("charset" "KOI8-U") NIL NIL "7bit" 279 8))

. OK Fetch completed.

Сервер показывает заголовки письма

. fetch 7 rfc822.text

Даем команду серверу показать тело письма № 7

Re: test mail

 

this is test mail

)

Сервер показывает тело письма

. logout

Отключаемся от сервера

* BYE Logging out

. OK Logout completed.

Connection closed by foreign host.

Сервер сообщает об окончании сессии

 

  

Теперь для проверки почтового сервера нам уже не нужно настраивать почтовый клиент. В экстренном случае можно обойтись и Telnet