Пятница, 2024-11-08, 1:49 PM
 
Начало Форум Регистрация Вход
Вы вошли как Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: denix  
Краткое описание протокола SMTP
denixДата: Четверг, 2006-06-29, 2:25 AM | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 531
Репутация: 0
Статус: Offline
Описание протокола SMTP

Александр Бельбаков, http://HiProg.com/vb/ "Технологии программирования"

Введение

Основная задача протокола SMTP (Simple Mail Transfer Protocol)
заключается в том, чтобы обеспечивать передачу электронных сообщений
(почту). Для работы через протокол SMTP клиент создаёт TCP соединение
с сервером через порт 25. Затем клиент и SMTP сервер обмениваются
информацией пока соединение не будет закрыто или прервано. Основной
процедурой в SMTP является передача почты (Mail Procedure). Далее идут
процедуры форвардинга почты (Mail Forwarding), проверка имён почтового
ящика и вывод списков почтовых групп. Самой первой процедурой является
открытие канала передачи, а последней - его закрытие.

Команды SMTP указывают серверу, какую операцию хочет произвести
клиент. Команды состоят из ключевых слов, за которыми следует один или
более параметров. Ключевое слово состот из 4-х символов и разделено от
аргумента одним или несколькими пробелами. Каждая командная строка
заканчивается символами CRLF. Вот синтаксис всех команд протокола SMTP
(SP - пробел):

HELO <SP> <domain> <CRLF>
MAIL <SP> FROM:<reverse-path> <CRLF>
RCPT <SP> TO:<forward-path> <CRLF>
DATA <CRLF>
RSET <CRLF>
SEND <SP> FROM:<reverse-path> <CRLF>
SOML <SP> FROM:<reverse-path> <CRLF>
SAML <SP> FROM:<reverse-path> <CRLF>
VRFY <SP> <string> <CRLF>
EXPN <SP> <string> <CRLF>
HELP <SP> <string> <CRLF>
NOOP <CRLF>
QUIT <CRLF>

Обычный ответ SMTP сервера состоит из номера ответа, за которым через
пробел следует дополнительный текст. Номер ответа служит индикатором
состояния сервера.

Отправка почты

Первым делом подключаемся к SMTP серверу через порт 25. Теперь надо
передать серверу команду HELLO и наш IP адрес:

C: HELLO 195.161.101.33
S: 250 smtp.mail.ru is ready

При отправке почты передаём некоторые нужные данные (отправитель,
получатель и само письмо):

C: MAIL FROM:<drozd> 'указываем отправителя
S: 250 OK

C: RCPT TO:<drol@mail.ru.> 'указываем получателя
S: 250 OK

указываем серверу, что будем передавать содержание письма (заголовок и
тело письма)

C: DATA
S: 354 Start mail input; end with <CRLF>.<CRLF>

передачу письма необходимо завершить символами CRLF.CRLF

S: 250 OK

C: From: Drozd <drozd@mail.ru.>
C: To: Drol <drol@mail.ru.>
C: Subject: Hello

между заголовком письма и его текстом не одна пара CRLF, а две.

C: Hello Drol!
C: You will be die on next week!

заканчиваем передачу символами CRLF.CRLF

S: 250 OK

Теперь завершаем работу, отправляем команду QUIT:

S: QUIT
C: 221 smtp.mail.ru is closing transmission channel

> Другие команды

* SEND - используется вместо команды MAIL и указыает, что почта
должна быть доставлена на терминал пользователя.
* SOML, SAML - комбинации команд SEND или MAIL, SEND и MAIL
соответственно.
* RSET - указвает серверу прервать выполнение текущего процесса. Все
сохранённые данные (отправитель, получатель и др) удаляются.
Сервер должен отправить положительный ответ.
* VRFY - просит сервер проверить, является ли переданный аргумент
именем пользователя. В случае успеха сервер возвращает полное имя
пользователя.
* EXPN - просит сервер подтвердить, что переданный аргумент - это
список почтовой группы, и если так, то сервер выводит членов этой
группы.
* HELP - запрашивает у сервера полезную помощь о переданной в
качестве аргумента команде.
* NOOP - на вызов этой команды сервер должен положительно ответить.
NOOP ничего не делает и никак не влияет на указанные до этого
данные.

 
  • Страница 1 из 1
  • 1
Поиск:


Бесплатный хостинг uCoz