POP3

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

POP3

Сообщение KDima » 03.03.2005 (Чт) 19:08

Как telnet'ом проверить почту?
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 03.03.2005 (Чт) 19:14

ROFL
I don't understand. Sorry.

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 03.03.2005 (Чт) 19:22

Лаконично :)
И чё?
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.03.2005 (Чт) 19:30

Надо изучать протоколы :wink:

Описание протокола POP3
(обращений: 10502 )

» Введение

Перед работой через протокол POP3 сервер прослушивает порт 110. Когда клиент хочет использовать этот протокол, он должен создать TCP соединение с сервером. Когда соединение установлено, сервер отправляет приглашение. Затем клиент и POP3 сервер обмениваются информацией пока соединение не будет закрыто или прервано.

Команды POP3 состоят из ключевых слов, за некоторыми следует один или более аргументов. Все команды заканчиваются парой CRLF (в Visual Basic константа vbCrLf). Ключевые слова и аргументы состоят из печатаемых ASCII символов. Ключевое слово и аргументы разделены одиночным пробелом. Ключевое слово состоит от 3-х до 4-х символов, а аргумент может быть длиной до 40-ка символов.

Ответы в POP3 состоят из индикатора состояния и ключевого слова, за которым может следовать дополнительная информация. Ответ заканчивается парой CRLF. Существует только два индикатора состояния: "+OK" - положительный и "-ERR" - отрицательный.

Ответы на некоторые команды могут состоять из нескольких строк. В этих случаях каждая строка разделена парой CRLF, а конец ответа заканчивается ASCII символом 46 (".") и парой CRLF.

POP3 сессия состоит из нескольких режимов. Как только соединение с сервером было установлено и сервер отправил приглашение, то сессия переходит в режим AUTHORIZATION (Авторизация). В этом режиме клиент должен идентифицировать себя на сервере. После успешной идентификации сессия переходит в режим TRANSACTION (Передача). В этом режиме клиент запрашивает сервер выполнить определённые команды. Когда клиент отправляет команду QUIT, сессия переходит в режим UPDATE. В этом режиме POP3 сервер освобождает все занятые ресурсы и завершает работу. После этого TCP соединение закрывается.

У POP3 сервера может быть INACTIVITY AUTOLOGOUT таймер. Этот таймер должен быт, по крайней мере, с интервалом 10 минут. Это значит, что если клиент и сервер не взаимодействуют друг с другом, сервер автоматически прерывает соединение и при этом не переходит в режим UPDATE.

» Авторизация

Как только будет установлено TCP соединение с POP3 сервером, он отправляет приглашение, заканчивающееся парой CRLF, например:

S: +OK POP3 server ready

Теперь POP3 сессия находится в режиме AUTHORIZATION. Клиент должен идентифицировать себя на сервере, используя команды USER и PASS. Сначала надо отправить команду USER, после которой в качестве аргумента следует имя пользователя. Если сервер отвечает положительно, то теперь необходимо отправить команду PASS, за которой следует пароль. Если после отправки команды USER или PASS сервер отвечает негативно, то можно поробовать авторизироваться снова или выйти из сесси с помощью команды QUIT. После успешной авторизации сервер открывает и блокирует maildrop (почтовый ящик). В ответе на команду PASS сервер сообщает сколько сообщений находится в почтовом ящике и передаёт их общий размер. Теперь сессия находится в режиме TRANSACTION. Подведём итоги с командами:

Команда:
USER [имя]

Аргументы:
[имя] - строка, указывающая имя почтового ящика

Описание:
Передаёт серверу имя пользователя.

Возможные ответы:
+OK name is a valid mailbox
-ERR never heard of mailbox name

Примеры:

C: USER MonstrVB
S: +OK MonstrVB is a real hoopy frood
...
C: USER MonstrVB
S: -ERR sorry, no mailbox for frated here

Команда:
PASS [пароль]

Аргументы:
[пароль] - пароль для почтового ящика

Описание:
Передаёт серверу пароль почтового ящика.

Возможные ответы:
+OK maildrop locked and ready
-ERR invalid password
-ERR unable to lock maildrop

Примеры:

C: USER MonstrVB
S: +OK MonstrVB is a real hoopy frood
C: PASS mymail
S: +OK MonstrVB's maildrop has 2 messages (320 octets)
...
C: USER MonstrVB
S: +OK MonstrVB is a real hoopy frood
C: PASS mymail
S: -ERR maildrop already locked

Команда:
QUIT

Аргументы: нет

Описание:
Сервер завершает POP3 сессию и переходит в режим UPDATE.

Возможные ответы:
+OK

Примеры:

C: QUIT
S: +OK dewey POP3 server signing off

» Основные команды (Transaction)

После успешной идентификации пользователя на сервере POP3 сессия переходит в режим TRANSACTION, где пользователь может передавать ниже следующие команды. После каждой из таких команд следут ответ сервера. Вот доступные команды в этом режиме:

Команда:
STAT

Аргументы: нет

Описание:
В ответ на вызов команды сервер выдаёт положительный ответ "+OK", за которым следует количество сообщений в почтовом ящике и их общий размер в символах. Сообщения, которые помечены для удаления не учитываются в ответе сервера.

Возможные ответы:
+OK n s

Примеры:

C: STAT
S: +OK 2 320

Команда:
LIST [сообщение]

Аргументы:
[сообщение] - номер сообщения (необязательный аргумент)

Описание:
Если был передан аргумент, то сервер выдаёт информацию о указанном сообщении. Если аргумент не был передан, то сервер выдаёт информацию о всех сообщениях, находящихся в почтовом ящике. Сообщения, помеченные для удаления не перечисляются.

Возможные ответы:
+OK scan listing follows
-ERR no such message

Примеры:

C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
...
C: LIST 2
S: +OK 2 200
...
C: LIST 3
S: -ERR no such message, only 2 messages in maildrop

Команда:
RETR [сообщение]

Аргументы:
[сообщение] - номер сообщения

Описание:
После положительного ответа сервер передаёт содержание сообщения.

Возможные ответы:
+OK message follows
-ERR no such message

Примеры:

C: RETR 1
S: +OK 120 octets
S:
S: .

Команда:
DELE [ообщение]

Аргументы:
[ообщение] - номер сообщения

Описание:
POP3 сервер помечает указанное сообщение как удалённое, но не удалет его, пока сессия не перейдёт в редим UPDATE.

Возможные ответы:
+OK message deleted
-ERR no such message

Примеры:

C: DELE 1
S: +OK message 1 deleted
...
C: DELE 2
S: -ERR message 2 already deleted

Команда:
NOOP

Аргументы: нет

Описание:
POP3 сервер ничего не делает и вседа отвечает полжительно.

Возможные ответы:
+OK

Примеры:

C: NOOP
S: +OK

Команда:
RSET

Аргументы: нет

Описание:
Если какие - то сообщения были помечены для удаления, то с них снимается эта метка.

Возможные ответы:
+OK

Примеры:

C: RSET
S: +OK maildrop has 2 messages (320 octets)

» Обновление

Когда клиент передаёт команду QUIT в режиме TRANSACTION, то сессия переходит в режим UPDATE. В этом режиме сервер удаляет все сообщения, помеченные для удаления. После этого TCP соединение закрывается.

» Дополнительные POP3 команды

Следующие дополнительные команды дают вам большую свободу при работе с сообщениями:

Команда:
TOP [сообщение] [n]

Аргументы:
[сообщение] - номер сообщения
[n] - положительное число (обязательный аргумент)

Описание:
Если ответ сервера положительный, то после него он передаёт заголовки сообщения и указанное кол - во строк из тела сообщения.

Возможные ответы:
+OK top of message follows
-ERR no such message

Примеры:

C: TOP 1 10
S: +OK
S: <здесь POP3 сервер передаёт заголовки первого сообщения и первые 10-ть строк из тела сообщения.>
S: .
...
C: TOP 100 3
S: -ERR no such message

Команда:
UIDL [сообщение]

Аргументы:
[сообщение] - номер сообщения (необязательный аргумент).

Описание:
Если был указан номер сообщения, то сервер выдаёт уникальный идентификатор для этого сообщения. Если аргумент не был передан, то идентификаторы перечисляются для всех сообщений, кроме помеченных для удаления.

Возможные ответы:
+OK unique-id listing follows
-ERR no such message

Примеры:

C: UIDL
S: +OK
S: 1 whqtswO00WBw418f9t5JxYwZ
S: 2 QhdPYR:00WBw1Ph7x7
S: .
...
C: UIDL 2
S: +OK 2 QhdPYR:00WBw1Ph7x7
...
C: UIDL 3
S: -ERR no such message, only 2 messages in maildrop

» Заключение

Вот пример простого сеанса с POP3 сервером:

S: <создаём новое TCP соединение c POP3 сервером через порт 110>
S: +OK POP3 server ready
C: USER MonstrVB
S: +OK User MonstrVB is exists
C: PASS mymail
S: +OK MonsrVB'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:
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S:
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: <закрываем соединение>



KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 03.03.2005 (Чт) 20:07

Ramzes писал(а):Надо изучать протоколы :wink:


Знаю :)
Пасиб!
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.03.2005 (Чт) 20:17

Всегда пожалуйста :)

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 17.03.2005 (Чт) 22:12

Вот и результат...

Моя прога:

=========================
Session started
+OK
USER D_kalinkin@mail.ru
+OK Password required for user D_kalinkin@mail.ru
PASS *****************
+OK d_kalinkin@mail.ru maildrop has 1 messages (xxx octets)
STAT
+OK 1 xxx
RETR 1
-ERR To few arguments for retr command
Ошибка сервера!


Я решил Telnet'ом:

+OK
USER D_kalinkin@mail.ru
+OK Password required for user D_kalinkin@mail.ru
PASS *****************
+OK d_kalinkin@mail.ru maildrop has 1 messages (xxx octets)
STAT
+OK 1 xxx
RETR 1
+OK xxx octets
бла-бла-бла
X-Spam: Not detected :)

=CF=F0=E8=E2=E5=F2, D!

1111111111111111111111111

--
--
KDima

.


Где собака зарылась? :D
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 18.03.2005 (Пт) 0:08

А по-моему, всё в порядке - последняя строка с точкой - признак окончания. Строка =CF=F0=E8=E2=E5=F2 - это закодированный по алгоритму Quted-printable текст или вложенный файл. По крайней мере, судя по краткой представленной версии протокола.

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 18.03.2005 (Пт) 11:40

Короче тот вопрос снят :D
А как русские символы расшифровать?
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 18.03.2005 (Пт) 15:32

Ну тык как это Quted-printable расшифровать???
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 18.03.2005 (Пт) 22:11

Боюсь соврать, но запись типа =C1 означает, что нужно вот эти три символа заменить на символ, код которого в кодовой таблице 193.

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 19.03.2005 (Сб) 11:31

Уже тепло... но как ... хотя... ладно вроде будет работать... :D
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 19.03.2005 (Сб) 20:11

Public Function Decode_quoted_printable(ByVal Text As String) As String
Dim N
st = 1
'MsgBox Text
Do

m1:

N = InStr(st, Text, "=", vbBinaryCompare)
If N = 0 Then Exit Do
If N = Len(Text) Then Exit Do

If (Mid(Text, N + 1, 2) = vbCrLf) Then
Text = Left(Text, N - 1) & Right(Text, Len(Text) - N - 2)
st = N
GoTo m1
End If

s$ = Mid(Text, N + 1, 2)

'MsgBox N
Text = Left(Text, N - 1) & Chr(val("&h" & s$)) & _
Right(Text, Len(Text) - N - 2)

st = N + 1
Loop

Decode_quoted_printable = Text

End Function


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 95

    TopList  
cron