Работа с почтовым сервером через telnet
- Информация о материале
- Категория: Почтовый сервер
- Опубликовано: 18.11.2013, 20:26
- Автор: Super User
- Просмотров: 13061
После того, как вы настроили почтовый сервер стоит проверить его работоспособность. Можно, конечно, настроить почтовый клиент и погонять почту туда-сюда, но это требует времени и определенных усилий. А если мы проводим проверку прямо на сервере, то почтового клиента может вообще там не оказаться. Конечно можно установить и настроить консольный клиент типа 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