смотрим и отправляем почту из консоли

Опубликовано:

POP3 протокол

 

Итак:

Используем аккаунт на mail.ru в качестве примера. Подключаемся:

telnetpop.mail.ru 110   (порт пишется через пробел).

+OK

теперь надо представиться:
USER myname

а в ответ подозрительный сервак вам говорит что человек без бумажки? пароль давай:
+OK введите пароль

PASS my_super-puper_parol_12345

Получаем, о молодец, знаю такого:
+OK у вас столько-то писем

Теперь можно их получить по очереди можно посмотреть, например список с размерами
LIST

В ответ мы увидим в столбик номер писем и размер.
Теперь, мы хотим посмотреть заголовок письма №1 от кого и про что пишут
TOP 1

В ответ получим первые 25 строк письма (и сможем получить о нем представление)
А увидели мы, что это опять реклама кровяной колбасы, а так как мы ничего такого не едим то письмо удаляем, для этого введем команду
DELE1

+OKmessage 1 deleted

Смотрим, что за второе письмо к нам пришло
TOP 2

(первого уже нет помните? Но нумерация писем не обнуляется потому №2)
Получаем заголовки письма от уважаемого Васи Пупкина, о! так его нам надо получить, а для этого есть команда
RETR 2

Все письмо пробежит перед нашими глазами на экране (почтовый клиент это сохранил бы, а мы просто прочитаем)
Мы не хотим, чтобы прочитанное письмо оставалось на сервере ведь мы его уже получили, потому выполняем команду:
DELE 2

А вот командой
RSET

Снмаем все отметки на удаление отмеченных файлов и завершаем соединение.

Обращаю внимание, что команда на удаление отмеченных DELEписем будет выполнена только при выходе, т.е. при вводе QUIT.

Согласно спецификации протокола команды принято вводить в верхнем регистре. Хотя многие серваки, тот же mail.ruв частности, не ругаются на нижний регистр ввода.
QUIT

SMTP: пишем письмо из консоли

SMTP
Как отправить письмо из командной строки, используя telnet
Привожу протокол обмена между отправителем (SENDER) и получателем (RECEIVER)
Из протокола обмена все ясно. Единственный момент — в рассмотреном примере сервер не требует авторизации, что сейчас почти нереально. Если же сервер требует авторизацию, то вместо команды HELO желательно отправить команду EHLO, на которую сервер выдаст информацию о себе и о видах поддерживаемой авторизации. Как правило, нас устраивает AUTH LOGIN. Тогда вводим AUTH LOGIN и получаем приглашение сервера на ввод пароля, закодированное в BASE64.
Т.е. на мой запрос AUTH LOGIN серверу smtp.mail.ru сервер выдаст такую белиберду: VXNlcm5hbWU6
В переводе с BASE64 это значит «login». Т.е. нужно ввести логин в BASE64. А где его взять? В этом поможет перловый скриптик:

# perl -MMIME::Base64 -e 'print encode_base64("мой логин")' 
В ответ на что сервер выдаст очередную белиберду, которая в переводе
означает запрос о пароле. Генерим свой пороль BASE64:
 # perl -MMIME::Base64 -e 'print encode_base64("мой пароль")' 
Скармливаем серверу и благополучно авторизуемся.
$ telnet mit.edu 25  (номер порта вводится через пробел)

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

01 RECEIVER 220 mit.edu Simple Mail Transfer Service Ready
02 SENDER HELO usc.edu   (или EHLO вместо HELO)
03 RECEIVER 250 mit.edu
Если нужна авторизация, то поступаем, как написано выше, если нет, читаем дальше диалог.
04 SENDER MAIL FROM: <Smith@usc.edu>
05 RECEIVER 250 OK
06 SENDER RCPT TO:<Jones@mit.edu>
07 RECEIVER 250 OK
08 SENDER RCPT TO:<Green@mit.edu>
09 RECEIVER 550 No such user here
10 SENDER RCPT TO:<Brown@mit.edu>
11 RECEIVER 250 OK
12 SENDER DATA
13 RECEIVER 354 Start mail input; end with <CRLF>.<CRLF>
14 SENDER Blah blah blah...
15 SENDER ...etc. etc. etc.
16 SENDER
17 RECEIVER 250 OK
18 SENDER QUIT
19 RECEIVER 221 mit.edu Service closing transmission channel

Понравилась статья, расскажи о ней друзьям, нажми кнопку!