37714

Протокол SMTP

Лабораторная работа

Информатика, кибернетика и программирование

Щоб доставити повідомлення до адресата необхідно переслати його поштовому серверу домену в якому знаходиться адресат. Сервер відповідає на кожну команду рядком що містить код відповіді і текстове повідомлення відокремлене пропуском. У результаті цього спам став практично нерозв'язною проблемою так як було неможливо визначити хто насправді є відправником повідомлення фактично можна відправити лист від імені будьякої людини. DT CRLF Вказує на початок повідомлення.

Украинкский

2013-09-25

805.5 KB

6 чел.

1.1

Протокол SMTP

SMTP (англ. Simple Mail Transfer Protocol - простий протокол передачі пошти) - це мережевий протокол, призначений для передачі електронної пошти в мережах TCP / IP.

ESMTP (англ. Extended SMTP) - масштабоване розширення протоколу SMTP. В даний час під "протоколом SMTP», як правило, мають на увазі ESMTP і його розширення.

SMTP використовується для відправки пошти від користувачів до серверів і між серверами для подальшої пересилки до одержувача. Для прийому пошти поштовий клієнт повинен використовувати протоколи POP3 або IMAP.

Щоб доставити повідомлення до адресата, необхідно переслати його поштовому серверу домену, в якому знаходиться адресат. Для цього використовується запис типу MX (англ. Mail eXchange - обмін поштою) системи DNS. Якщо MX запис відсутній, то для тієї ж мети може бути використаний запис типу A. Деякі сучасні реалізації SMTP-серверів (наприклад, Exim [1]) для визначення сервера, що обслуговує пошту в домені адресата, також можуть задіяти SRV-запис (RFC 2782).

Широке поширення SMTP отримав на початку 1980-х років. До нього використовувався протокол UUCP, який вимагав від відправника знання повного маршруту до одержувача і явної вказівки цього маршруту в адресі одержувача, або наявності прямого комутованого або постійного з'єднання між комп'ютерами відправника і одержувача.

Sendmail був одним з перших (якщо не першим) агентом відправки повідомлень, який почав працювати з SMTP. На сьогодні протокол SMTP є стандартним для електронної пошти і його використовують всі клієнти і сервери.

Протокол був розроблений для передачі тільки тексту в кодуванні ASCII, крім того, перші специфікації вимагали обнулення старшого біта кожного переданого байта. Це не дає можливості відсилати текст на національних мовах (наприклад, кирилиці), а також відправляти двійкові файли (наприклад, зображення, відеофайли, програми або архіви). Для зняття цього обмеження був розроблений стандарт MIME, який описує спосіб перетворення двійкових файлів у текстові. Зараз більшість серверів підтримують 8BITMIME, що дозволяє відправляти двійкові файли так само просто, як і текст.

Сервер SMTP - це кінцевий автомат з внутрішнім станом. Клієнт передає на сервер рядок команда <пробіл> параметри <переклад рядка>. Сервер відповідає на кожну команду рядком, що містить код відповіді і текстове повідомлення, відокремлене пропуском. Код відповіді – число від 100 до 999, представлене у вигляді рядка, який трактується таким чином:

  2ХХ - команда успішно виконана

  3XX - очікуються додаткові дані від клієнта

  4хх - тимчасова помилка, клієнт повинен зробити наступну спробу через деякий час

  5хх - невиправна помилка

Текстова частина відповіді носить довідковий характер і призначений для людини, а не програми.

ESMTP - розширюваний протокол, на відміну від SMTP. При встановленні з'єднання сервер оголошує про набір підтримуваних розширень (як відповідь на команду EHLO). Відповідні розширення можуть бути використані клієнтом при роботі. Необхідно пам'ятати, що якщо сесія починається з команди HELO (яка використовується в «класичному» SMTP, RFC 821), то перелік розширень виводитися не буде.

Безпека SMTP і спам

Спочатку SMTP не підтримував єдиної схеми авторизації. У результаті цього спам став практично нерозв'язною проблемою, так як було неможливо визначити, хто насправді є відправником повідомлення - фактично можна відправити лист від імені будь-якої людини. В даний час проводяться спроби вирішити цю проблему за допомогою специфікацій SPF, Sender ID, Yahoo Domain Keys. Єдиної специфікації на сьогодні не існує.

Команди SMTP

HELO <SP> <string><CRLF> — Ідентифікує SMTP-сервер відправника, відкриває сеанс

QUIT<CRLF> — Завершує SMTP-сеанс

MAIL <SP> FROM:<reverse-path> <CRLF> — Задає адресу відправника. Адресу слід вказувати в кутових дужках. Деякі сервери можуть проігнорувати те, що їм передають адресу без кутових дужок, але ті сервери, що детально виконують опис RFC, відхилять таку адресу.

RCPT <SP> TO:<forward-path> <CRLF> — Задає адресу одержувача. Адресу слід вказувати в кутових дужках. Деякі сервери можуть проігнорувати те, що їм передають адресу без кутових дужок, але ті сервери, що детально виконують опис RFC, відхилять таку адресу.

DATA <CRLF> — Вказує на початок повідомлення. Для завершення повідомлення вказується <CRLF>.<CRLF>

VRFY <SP> <string><CRLF> — перевіряє існування одержувача.

EXPN <SP> <string><CRLF> — показує перелік адрес для списку розсилки.

NOOP<CRLF> — пуста операція

TURN<CRLF> — сервер та клієнт міняються ролями после відповіді сервера 200 OK

RSET<CRLF> — скидання сесії в початковий стан

HELP<CRLF> — інформація про команди, які підтримуються. Деякі сервери підтримують довідку по окремим командам, наприклад, HELP MAIL (sendmail), деякі виводять за цією командою лише список можливих команд без пояснення (Microsoft Exchange Server)

Внаслідок проблем зі спамом, майже всі сучасні сервери ігнорують команди VRFY и EXPN, тому що вони розкривають інформацію про користувача.

Розширення ESMTP

RFC 1869 предписує починати сесію не командою HELO, а командою EHLO. У випадку, якщо сервер не підтримує розширений протокол, то він відповість на EHLO помилкою, в цьому разі клієнт повинен надіслати команду HELO і не використовувати розширення протоколу.

Якщо ж сервер підтримує ESMTP, то крім привітання він повідомить перелік підтримуємих розширень протоколу SMTP.

2.2 Протокол POP3

POP3 (англ. Post Office Protocol Version 3 - протокол поштового відділення, версія 3) використовується поштовим клієнтом для отримання повідомлень електронної пошти з сервера. Зазвичай використовується в парі з протоколом SMTP.

Попередні версії протоколу (POP, POP2) застаріли.

Стандарт протоколу POP3 визначений в RFC 1939. Розширення та методи авторизації визначені в RFC 2195, RFC 2449, RFC 1734, RFC 2222, RFC 3206, RFC 2595.

Існують реалізації POP3-серверів, що підтримують TLS та SSL.

Альтернативним протоколом для збору повідомлень з поштового сервера є IMAP.

Стани сеансу

У протоколі POP3 передбачено 3 стану сеансу:

Авторизація: клієнт проходить процедуру аутентифікації

Транзакція: клієнт отримує інформацію про стан поштової скриньки, приймає і видаляє пошту

Оновлення: сервер видаляє обрані листи і закриває з'єднання

Опис протоколу POP3

Конструкція протоколу РОРЗ забезпечує можливість користувачеві звернутися до свого поштового сервера та вилучити пошту, яка накопичилася для нього. Користувач може отримати доступ до РОР-серверу з будь-якої точки доступу до Інтернет. При цьому він повинен запустити спеціальний поштовий агент (UA), що працює по протоколу РОРЗ, та налаштувати його для роботи зі своїм поштовим сервером. Отже, на чолі моделі POP знаходиться окремий персональний комп'ютер, що працює виключно в якості клієнта поштової системи (сервера). Повідомлення доставляються клієнтові за протоколом POP, а надсилаються, як і раніше, за допомогою SMTP. Тобто на комп'ютері користувача існують два окремих агента-інтерфейсу до поштової системи - доставки (POP) і відправки (SMTP). Розробники протоколу РОРЗ називають таку ситуацію "роздільні агенти" (split UA). Концепція роздільних агентів коротко обговорюється в специфікації РОРЗ.

Команди POP3

APOP [ім’я] [digest]

Команда використовується для передачі серверу імені користувача та зашифрованого паролю (digest)

Аргументи

[ім’я] - рядок, який вказує ім’я поштового ящику.

[digest]- зашифрована паролем користувача по алгоритму MD5 мітка часу. Якщо ця команда підтримується, мітка часу одержується при з’єднанні з сервером:

+OK POP3 server ready <1896.698370952@meshach.smallorg.org>

Обмеження

Її підтримка не є обов’язковою.

Можливі відповіді

  •  +OK maildrop has n message
  •  -ERR password suplied for [ім’я] is incorrect

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

Сервер позначає вказане повідомлення для видалення

Аргументи

[повідомлення] - номер сообщения.

Обмеження

Доступна після вдалої ідентифікації

Можливі відповіді

  •  +OK message deleted
  •  -ERR no such message

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

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

Аргументи

[повідомлення]-номер повідомлення (необов’язковий аргумент)

Обмеження

Доступна після вдалої ідентифікації

Можливі відповіді

  •  +OK scan listing follows
  •  -ERR no such message

NOOP

Сервер нічого не робить, завжди відповідає позитивно

Аргументи

Немає.

Обмеження

Немає.

Можливі відповіді

  •  +OK

PASS [пароль]

Передає серверу пароль поштової скриньки

Аргументи

[пароль] - пароль для поштової скриньки

Обмеження

Працює після успішної передачі імені поштової скриньки.

Можливі відповіді

  •  +OK maildrop locked and ready
  •  -ERR invalid password
  •  -ERR unable to lock maildrop

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

Сервер передає повідомлення з вказанным номером

Аргументи

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

Обмеження

Доступна після вдалої ідентифікації

Можливі відповіді

  •  +OK message follows
  •  -ERR no such message

RSET

Якщо якісь повідомлення були позначені для видалення, то з них знімається ця мітка.

Аргументи

Немає.

Обмеження

Доступна після і до вдалої ідентифікації

Можливі відповіді

  •  +OK

STAT

Сервер повертає кількість повідомлень в поштовій скриньці плюс розмір поштової скриньки

Аргументи

Немає

Обмеження

Доступна після вдалої ідентифікації

Можливі відповіді

  •  +OK a b

TOP [повідомлення] [кількість рядків]

Сервер повертає вказану кількість рядків після заголовку

Аргументи

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

[кількість рядків] – скільки рядків треба вивести

Обмеження

Доступна після вдалої ідентифікації

Можливі відповіді

  •  +OK n octets
  •  -ERR no such message

USER [ім’я]

Передає серверу ім’я користувача

Аргументи

[ім’я] - рядок, якмй вказує ім’я поштової скриньки

Обмеження

Немає.

Можливі відповіді

  •  +OK name is a valid mailbox
  •  -ERR never heard of mailbox name

QUIT

Аргументи

Немає.

Обмеження

Немає.

Можливі відповіді

  •  +OK

2.3

2.4

2.6

2.7

2.8

2.9

3.0

3.1

3.2

3.3

3.4

3.5

3.6

3.7


 

А также другие работы, которые могут Вас заинтересовать

51467. Средства разработки приложений в Visual Studio.NET 307.06 KB
  Необходимо отметить что процесс написания программ за последние 50 лет прошел путь от программирования в инструкциях процессора программирование в машинных кодах через программирование на низкоуровневых языках ассемблер до программирования на языках высокого уровня.
51468. Создание и выполнение Windowsпроектов с несколькими формами. Стандартные модули и модульная структура приложений в VB 843.34 KB
  Диалоговое окно Добавление нового элемента dd New Item предлагает несколько шаблонов доступных для использования в проектах. Окно Обозреватель решений Solution Explorer в списке компонент проекта содержит модуль который был добавлен в программу.
51469. Объектно-ориентированный подход в программировании. Теоретические основы объектно-ориентированного программирования 435.5 KB
  Теоретические основы объектно-ориентированного программирования Составные части объектного подхода Задачи для самостоятельного решения по теме Теоретические основы объектно-ориентированного программирования Тестовые задания по теме Теоретические основы объектно-ориентированного программирования...
51470. Средства объектно-ориентированного программирования в Visual Basic 187.42 KB
  С классами студенты сталкивались практически во всех предыдущих темах. Объектноориентированное программирование и проектирование построено на классах. Очень важно обратить внимание на то что у класса две различные роли: модуля и типа данных. Вторая роль класса не менее важна.
51471. Отношения между классами. Интерфейсы, делегаты и события 40.52 KB
  Отношения между классами. Понятие отношения между классами. Классы с событиями. Обработчик события: всегда принадлежит классу зажигающему событие; никогда не принадлежит классу зажигающему событие; может принадлежать классу зажигающему событие; принадлежит только одному классу слушающему событие; может принадлежать многим классам слушающим события. Отметьте истинные высказывания: все события имеют одинаковую сигнатуру из двух аргументов с одними и теми же типами; все события имеют сигнатуру из двух аргументов но с...
51472. Основы проектирования баз данных средствами СУБД 474.58 KB
  Основы проектирования баз данных средствами СУБД. Основные понятия баз данных. Основные понятия реляционной модели данных. Задачи для самостоятельного решения по теме Основы проектирования баз данных средствами СУБД ccess.
51473. Технология работы с данными в среде Visual Studio .NET 969.72 KB
  Создание приложений для обработки данных в среде Visul Studio . Примеры разработки приложений для работы с базами данных СУБД ccess. Создание приложений для обработки данных в среде Visul Studio .NET С самого своего рождения программирование решало задачи обработки данных поэтому практически во всех приложениях данные в том или ином виде хранятся в некоторых хранилищах а сами приложения предоставляют способы просмотра редактирования обновления и использования этих данных рис.
51474. Средства создания Web-сайтов. Введение в разработку Web-приложений 1.06 MB
  Введение в разработку Webприложений. Webстраницы Webсайты Webсервисы и Webприложений. Средства создания Webсайтов. Примеры создания простых Webсайтов средствами языка HTML.
51475. Создание Web-приложений средствами ASP.NET 1.1 MB
  Создание Webприложений средствами SP. Начало работы с Visul Studio и создание нового Webприложения NET Почти все крупномасштабные Webсайты на базе технологии SP.NET разрабатываются с использованием Visul Studio предлагаемой компанией Microsoft полнофункциональной среды разработки Webприложений гибкого и универсального инструмента проектирования и создания законченных приложений для платформы Windows.