Аватарка

Протокол POP3 rfc1939

Самый популярный почтовый протокол интернета .... до сих пор подавляющее число почтовых клиентов использует именно POP3 для получения почты.

Для выполнения примеров понадобиться telnet клиент  ... можно использовать стандартный из поставки операционной системы, но если вы работаете под Windows, то я бы порекомендовал putty ...

Все примеры выполнялись на сервере pop.mail.ru, который ждет подключений на 110 порт.

Аунтентификация на сервере

USER - посылает имя пользователя серверу

USER SGWW
+OK Password required for user USER


PASS - посылает пароль (в открытом виде!) серверу

PASS mygoogpassword
+OK user@mail.ru maildrop has 1772 messages (180207616 octets)


APOP - защищенная авторизация(поддерживается не всеми серверами)

Сервер поддерживающий команду APOP должен включать timestamp в свое приветствие. timestamp - можно перевести как временная метка - уникальный идентификатор,
который каждый раз разный при подключении к серверу

сам timestamp описан в RFC822

пример 

<process-ID.clock@hostname>

где

process-ID - значение PID
clock - показание системных часов
hostname - полное доменное имя сервера

У команды  APOP два параметра name digest

name - это логин авторизуемого пользователя

а digest - это 16 октеновый MD5 хеш timestampа и пароля, алгоритм MD5 описан в RFC1321

пример

<1896.697170952@dbc.mtview.ca.us> - это timestapmp сервер
 
tanstaaf - это пароль

хешируем алгоритмом md5 строку <1896.697170952@dbc.mtview.ca.us>tanstaaf получим c4c9334bac560ecc979e58001b3e22fb

В окне терминала это будет выглядить так

 +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
 APOP mrose c4c9334bac560ecc979e58001b3e22fb
 +OK maildrop has 1 message (369 octets)


Это пример взят из RFC

Если есть желание попробовать с реальным сервером то для расчета md5 хеша пригодиться этот сайт

Обязательные команды работающие после авторизации

STAT - статистика по ящику

STAT
+OK 1772 180207616


где 1772 - количество сообщений, 180207616 - их размер в октенах


LIST - список собщений сервера и размер каждого

пример

LIST 1
+OK 1 3317584


где 1 аргумент и номер сообщения,  3317584 - размер 1-го сообщения, без параметра выдаст список всех сообщений, так как их в моем ящике 1772, по понятным причинам пример приводить не буду

RETR - читает сообщение на сервере

RETR 7
+OK 7296 octets
Return-path: <noreply@inosmi.ru>
Received: from [195.230.73.2] (port=49278 helo=m2.rian.ru)
        by mx54.mail.ru with esmtp
        id 1JuCRi-0006iO-00; Fri, 09 May 2008 00:10:31 +0400
Received: from inosmi.rian.ru (www.inosmi.ru [195.230.73.21])
        by m2.rian.ru (Postfix) with ESMTP id 81460F5C1;
        Fri,  9 May 2008 00:10:20 +0400 (MSD)
Received: by inosmi.rian.ru (Postfix, from userid 501)
        id C8B3336C7C9; Fri,  9 May 2008 00:10:14 +0400 (MSD)
From: noreply@inosmi.ru
To: undisclosed-recipients: ;
Subject: ИноСМИ.Ru - переводы за 08.05.2008
MIME-Version: 1.0
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: 8bit
Precedence: bulk
Message-Id: <20080508201014.C8B3336C7C9@inosmi.rian.ru>
Date: Fri,  9 May 2008 00:10:14 +0400 (MSD)

Тут идет содержание письма(оно очень длинное его не помещаю)

.


где 7 это номер сообщения


DELE - удаляет сообщение с сервера

DELE 1
+OK message 1 deleted



NOOP - команда ничего не делает, просто получает положительный ответ сервера

NOOP
+OK


RSET - отменяет пометку сообщений на удаление

RSET
+OK maildrop has 1772 messages (180207616 octets)


QUIT - завершение сессии с сохранением всех действий

QUIT
+OK POP3 server at mail.ru signing off


Необязательные команды

TOP - посылает заголовок сообщения и столько строк тела сколько указано во втором параметре

TOP 1 10
пошлет первые десять строк тела и заголовок 1-го сообщения


UIDL - уникальный идентификатор сообщения

UIDL 2
+OK 2 121023668928776

Общий список команд

Команды которые обязан поддерживать каждый сервер

         USER name              
         PASS string
         QUIT

         STAT                
         LIST [msg]
         RETR msg
         DELE msg
         NOOP
         RSET
         QUIT
Необязательный команды

         APOP name digest       
         TOP msg n              
         UIDL [msg]

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

         +OK
         -ERR

Пример POP3 сессии ... (взят из RFC)

  S: <wait for connection on TCP port 110>
      C: <open connection>
      S:    +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
      C:    APOP mrose c4c9334bac560ecc979e58001b3e22fb
      S:    +OK mrose's maildrop has 2 messages (320 octets)
      C:    STAT
      S:    +OK 2 320
      C:    LIST
      S:    +OK 2 messages (320 octets)
      S:    1 120
      S:    2 200
      S:    .
      C:    RETR 1
      S:    +OK 120 octets
      S:    <the POP3 server sends message 1>
      S:    .
      C:    DELE 1
      S:    +OK message 1 deleted
      C:    RETR 2
      S:    +OK 200 octets
      S:    <the POP3 server sends message 2>
      S:    .
      C:    DELE 2
      S:    +OK message 2 deleted
      C:    QUIT
      S:    +OK dewey POP3 server signing off (maildrop empty)
      C:  <close connection>
      S:  <wait for next connection>

Это все команды протокола, для детального знакомства можно почитать RFC1939
Tags: , ,