Система передачі повідомлень при безперервній роботі SMTP-сервера

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати


У деяких невеликих вузлах Інтернет буває непрактично підтримувати систему передачі повідомлень (MTS - Message Transport System). Робоча станція може не мати достатньо ресурсів для забезпечення безперервної роботи SMTP-сервера [RFC-821]. Для "домашніх ЕОМ" занадто дорого підтримувати зв'язок з Інтернет цілодобово. Але доступ до електронної пошти необхідний як для таких малих вузлів, так і індивідуальних ЕОМ. Для вирішення цієї проблеми розроблений протокол POP3 (Post Office Protocol - Version 3, STD-53. M. Rose, RFC-1939). Цей протокол забезпечує доступ вузла до базового поштового сервера. POP3 не ставить за мету надання широкого списку маніпуляцій з поштою. Поштові повідомлення приймаються поштовим сервером і зберігаються там, поки на робочій станції клієнта не буде запущений додаток POP3. Ця програма встановлює з'єднання з сервером і забирає повідомлення звідти. Поштові повідомлення на сервері стираються. Більш просунутий і складний протокол IMAP4 обговорюється в RFC-2060 (порт 143). Про аутентифікації в POP3 можна прочитати в документі RFC-1734.

Надалі ЕОМ-клієнтом буде називатися машина, яка користується послугами POP3, а ЕОМ-сервером - сторона, яка пропонує послуги POP3. Коли користувач ЕОМ-клієнта хоче послати повідомлення, він встановлює SMTP зв'язок з поштовим сервером безпосередньо і посилає все, що потрібно через нього. При цьому ЕОМ POP3-сервер не обов'язково є поштовим сервером. У вихідний момент ЕОМ POP3-сервер прослуховує TCP-порт 110. Якщо ЕОМ-клієнт хоче скористатися послугами POP3-сервера, то встановлює з ним TCP зв'язок. За встановленні зв'язку POP3-сервер посилає клієнту повідомлення (наприклад, + OK POP3 server ready) і сесія переходить у фазу авторизації (див. також RFC-1734, -1957). Після цього може здійснюватися обмін командами і відповіддю. Команди POP3 складаються з ключових слів (3-4 символи), за якими можуть слідувати аргументи. Кожна команда завершується парою символів CRLF. Як ключові слова, так і аргументи можуть містити лише друковані символи ASCII. Як роздільник використовуються символи пропуску. Кожен аргумент може містити до 40 символів. Сигнал відгуку в POP3 містить індикатор стану і ключове слово, за яким може слідувати додаткова інформація. Відгук також завершується кодовою послідовністю CRLF. Довжина відгуку не перевищує 512 символів, включаючи CRLF. Існує два індикатори стану: позитивний - "+ OK" і негативний "-ERR" (усі символи прописні). Відгуки на деякі команди можуть містити кілька рядків. У цьому випадку останній рядок містить код завершення 046 ("."), за яким слід CRLF. На практиці багаторядкові відгуки для виключення імітації завершуються послідовністю CRLF.CRLF. У процесі авторизації клієнт повинен представити себе сервера, передавши ім'я і пароль (можливий варіант посилки команди APOP). Якщо авторизація успішно завершена, сесія переходить у стан транзакції (TRANSACTION). При отриманні від клієнта команди QUIT сесія переходить у стан UPDATE, при цьому всі ресурси звільняються і TCP зв'язок розривається. На синтаксично невпізнані і невірні команди, сервер реагує, посилаючи негативний індикатор стану. POP3 сервер може бути забезпечений таймером пасивного стану (10 хв.), Який здійснює автоматичне переривання сесії. Прихід будь-якої команди з боку клієнта скидає цей таймер в нуль. Сервер нумерує всі передані повідомлення зі своєї поштової скриньки і визначає їх довжину. Позитивний відгук починається з + OK, за ним слідує пробіл, номер повідомлення, ще один пробіл і довжина повідомлення в октетах. Завершується відгук послідовністю CRLF. Надіслані повідомлення видаляються з поштової скриньки сервера. Всі повідомлення, що передаються під час сесії POP3 повинні слідувати рекомендаціям формату Інтернет повідомлень [RFC822]. У стані транзакції клієнт може посилати серверу послідовність POP3 команд, на кожну з яких сервер повинен надіслати відгук. Далі слідує короткий опис команд, які у стані транзакція.

LIST [повідомлення]

Аргументи: номер повідомлення (опційно), який не може ставитися до повідомлення, позначеного як видалене. Команда може бути видана тільки в режимі TRANSACTION. При наявності аргументу сервер видає позитивний відгук, що містить інформаційну початку повідомлення. Така рядок називається скан-лістингом повідомлення (scan listing). Scan listing складається з номера повідомлення, за яким слід пробіл і число октетів в повідомленні. Повідомлення, помічені як видалені, не пересилаються. Прикладом негативного відгуку може служити:-ERR no such message.

Приклади використання команди LIST:

Клієнт видає команду: LIST

Сервер відгукується: + OK 2 messages (320 octets) Сервер: 1 120

Сервер: 2 200

Сервер:.

...

Клієнт: LIST 2

Сервер: + OK 2200

...

К: LIST 3

З:-ERR no such message, only 2 messages in maildrop

Тут і далі символом До позначається клієнт, а символом С - сервер.

STAT - аргументів не використовує, можливий відгук + OK nn mm, де nn - номер повідомлення, а mm - його довжина в байтах. Приклад використання:

К: STAT З: + OK 2320

QUIT - аргументів не використовує, можливий відгук + OK.

Сервер POP3 видаляє всі повідомлення, помічені як видалені з поштової скриньки, посилає відповідний відгук і розриває TCP зв'язок. Приклад:

К: QUIT

З: + OK dewey POP3 server signing off.

RETR msg (msg - номер повідомлення)

Якщо POP3-сервер видав позитивний відгук, то за початковим + OK слід повідомлення з номером, зазначеним в аргументі. Негативний відгук має вигляд - ERR no such message.

Приклад використання команди:

К: RETR 1

З: + OK 120 octets

С:

С:.

DELE msg (msg - номер повідомлення)

Сервер POP3 позначає повідомлення як видалене. Будь-яке посилання на це повідомлення в майбутньому викличе помилку. При цьому саме повідомлення не видаляється поки сесія не увійде в режим UPDATE.

Приклад використання команди:

К: DELE 1

З: + OK message 1 deleted

...

К: DELE 2

З:-ERR message 2 already deleted

NOOP (не використовує жодних аргументів). При реалізації цієї команди сервер не робить нічого, лише посилає позитивний відгук.

RSET (не використовує жодних аргументів)

Якщо будь-які повідомлення помічені як видалені, сервер POP3 видаляє цю позначку і повертає позитивний відгук. Наприклад:

К: RSET

З: + OK maildrop has 2 messages (320 octets)

Якщо сесія завершується не по команді клієнта, то переходу в стан UPDATE не проводиться, а повідомлення не видаляються з поштової скриньки. Далі йде опис команд, які у стані UPDATE.

Ряд команд не входять до переліку обов'язкових (є опціонними).

TOP msg n, де msg - номер повідомлення, а n - число рядків (використовується тільки в режимі TRANSACTION).

При позитивному відгуку на команду TOP сервер посилає заголовки повідомлень і слідом за ними n рядків їх тексту. Якщо n більше числа рядків в повідомленні, надсилається все повідомлення.

UIDL [msg], де msg - номер повідомлення є опціонним (Unique-ID Listing).

Якщо сервер видасть позитивний відгук, буде видана рядок, що містить інформацію про даному повідомленні. Цей рядок називається унікальним ідентифікатором повідомлення ("unique-id listing"). При відсутності аргументу аналогічна інформація видається для кожного з повідомлень у поштовій скриньці. Унікальний ідентифікатор повідомлення складається з 1-70 символів в діапазоні від 0x21 до 0x7E. Повідомлення в поштовій скриньці повинні характеризуватися різними ідентифікаторами.

Приклад використання команди:

К: UIDL

З: + OK

З: 1 whqtswO00WBw418f9t5JxYwZ

З: 2 QhdPYR: 00WBw1Ph7x7

USER name, де name - характеризує поштову скриньку сервера.

Команда використовується на фазі авторизації або після невдалого завершення команд USER або PASS. При авторизації клієнт повинен спочатку послати команду USER і лише після отримання позитивного відгуку команду PASS. Команда може викликати такі відгуки:

+ OK name is a valid mailbox

-ERR never heard of mailbox name

Приклади використання команди USER:

К: USER frated

З:-ERR sorry, no mailbox for frated here ...

К: USER mrose

З: + OK mrose is a real hoopy frood

PASS string (string - пароль для доступу до поштового сервера)

Команда працює в режимі авторизації відразу після команди USER. Коли клієнт видає команду PASS, сервер використовує аргументи команд USER і PASS для визначення доступу клієнта до поштової скриньки. На команду PASS можливі наступні відгуки:

+ OK maildrop locked and ready

-ERR invalid password

- ERR unable to lock maildrop

Приклад діалогу при використанні команди PASS:

К: USER mrose

З: + OK mrose is a real hoopy frood

К: PASS secret

З:-ERR maildrop already locked

...

К: USER mrose

З: + OK mrose is a real hoopy frood

К: PASS secret

З: + OK mrose's maildrop has 2 messages (320 octets)

APOP name digest, де name - ідентифікатор поштової скриньки, а digest - дайджест повідомлення - MD5 (RFC-1828). Команда використовується тільки на стадії авторизації.

Зазвичай будь-яка сесія починається з обміну USER / PASS. Але так як в деяких випадках підключення до сервера POP3 може здійснюватися досить часто, зростає ризик перехоплення пароля. Альтернативним методом авторизації є використання команди APOP. Сервер, який підтримує застосування команди APOP, додає тимчасову мітку в своє стартове повідомлення. Синтаксис тимчасової мітки відповідає формату ідентифікаторів повідомлень, описаного в [RFC822] і повинні бути унікальними для всіх заголовків повідомлень.

Клієнт POP3 фіксує тимчасову мітку і видає команду APOP. Параметр `name 'семантично ідентичний параметру` name' команди USER. Параметр `digest 'обчислюється з використанням алгоритму MD5 [RFC1321] для рядка, що складається з тимчасової мітки (включаючи кутові дужки) за якою слідує рядок пароля, яка відома тільки клієнтові і сервера. Параметр `digest 'містить 16 октетів, що пересилаються в шістнадцятковому форматі з використанням рядкових ASCII символів. Сервер, отримавши команду APOP, перевіряє прийнятий дайджест і якщо він коректний, посилає позитивний відгук клієнта. Сесія при цьому переходить в стан транзакції. В іншому випадку надсилається негативний відгук і стан сесії не змінюється. З метою забезпечення безпеки для кожного конкретного користувача й сервера повинен використовуватися або метод доступу USER / PASS, або APOP, але не в якому випадку обидва методи поперемінно. Сервер перед закриттям каналу по команді QUIT повинен видалити з поштової скриньки всі повідомлення, які були перенесені з допомогою команд RETR. Передбачається, що всі повідомлення, що передаються в ході сесії POP3, мають текстовий формат Інтернет у відповідності з документом [RFC822].

Перед роботою через протокол 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 ns

Приклади:

C: STAT

S: + OK 2320

Команда: 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 2200

...

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 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 2320

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: <закриваємо з'єднання>


Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
70.1кб. | скачати


Схожі роботи:
Інформаційні характеристики систем передачі повідомлень
Розробка програми прийому і передачі повідомлень в локальній мережі Microsoft
Визначення основних характеристик цифрової системи передачі повідомлень методом імпульсної кодової
Моторна алалія Система корекційного впливу при роботі над складової структурою слова
Програми для при ма і відправки повідомлень
Система передавання неперервних повідомлень із використанням широтноімпульсної модуляції
Система передавання неперервних повідомлень із використанням широтно імпульсної модуляції
Автоматизована інтелектуальна система класифікації інформаційних повідомлень засобів масової
Стиснення даних при передачі зображень
© Усі права захищені
написати до нас