Робота з поштовим сервером за допомогою 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

 

Додати коментар

Захисний код
Оновити