Головна

Частина 10. Робота з поштовим сервером за допомогою telnet.

 До переліку статей циклу

 

Після того, як ми налаштували поштовий сервер, треба перевірити його працездатність. Звичайно це можна зробити за допомогою поштового клієнта, але іноді простіше і швидше зробити це за допомогою утиліти telnet.

Поштовий сервер для відправлення листа використовує протокол SMTP, який за замовчуванням працює на tcp-порту 25. Цілком можливий¸ доречі, варіант його знаходження і на порту 587. Порт 587 використовує служба submission-SMTP з перевіркою достовірності, але це зовсім не означає що не буде проходити авторизація клієнтів поштового сервера на порті 25.

Якщо ми налаштували автентифікацію, то логін та пароль мають передаватися в кодованому вигляді, тому спочатку треба створити ці кодовані рядки.

 

$ perl -MMIME::Base64 -e 'print encode_base64("user\@study.local");'

bXlfbG9naW4K

$ perl -MMIME::Base64 -e 'print encode_base64("PASSWORD");'

bXlfcGFzc3dvcmQK

 

Саме ці значення ми будемо вводити замість логіна та пароля в нашій SMTP-сесії

В командному рядку відкриваємо нашу сесію:

$ telnet mail-server 25

або, у випадку STARTTLS-сесії та порта 587:

$ openssl s_client -starttls smtp -crlf -connect mail-server:587

 

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

 

 

Trying 192.168.0.114...

Connected to mail-srv.

Escape character is '^]'.

На консолі відображується спроба з'єднання з сервером

220 mail.study.local 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.

Сервер сповіщає про закінчення сесії

 

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

 

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

Скористаємося для цього тією ж утилітою telnet.

З'єднаємося з сервером

$ telnet mail-server 143

 

Якщо у нас з'єднання з сервером IMAP зашифроване (по SSL), то команда з'єднання буде наступною:

$ openssl s_client -crlf -ign_eof -connect mail-server: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

Сервер сповіщає про закінчення сесії

 

 До переліку статей циклу 

 

Підтримайте, будь ласка автора

та придбайте книгу

"Налаштування поштового

сервера на базі Postfix, Dovecot

та RoundCube"

В електронному вигляді

Придбати