Опубликовано

Протоколы электронной почты

Протоколы электронной почты — это набор правил, которые помогают клиенту правильно передавать информацию на почтовый сервер или с него. Для передачи электронной почты используются протоколы SMTP, POP и IMAP.

SMTP

SMTP расшифровывается как Simple Mail Transfer Protocol. Впервые он был предложен в 1982 году. Это стандартный протокол, используемый для эффективной и надежной отправки электронной почты через Интернет.

Ключевые моменты:

  • SMTP — это протокол уровня приложения.
  • SMTP — это протокол, ориентированный на соединение.
  • SMTP — это текстовый протокол.
  • Он обрабатывает обмен сообщениями между почтовыми серверами по сети TCP / IP.
  • Помимо передачи электронной почты, SMPT также предоставляет уведомления о входящей почте.
  • Когда вы отправляете электронную почту, ваш почтовый клиент отправляет ее на ваш почтовый сервер, который далее связывается с почтовым сервером получателя с помощью SMTP-клиента.
  • Эти команды SMTP указывают адрес электронной почты отправителя и получателя, а также сообщение для отправки.
  • Обмен командами между серверами осуществляется без вмешательства какого-либо пользователя.
  • Если сообщение не может быть доставлено, отправителю отправляется отчет об ошибке, что делает SMTP надежным протоколом.

Команды SMTP

В следующей таблице описаны некоторые команды SMTP:

SN Описание команды
1 ПРИВЕТ
Эта команда инициирует диалог SMTP.
2 EHELLO
Это альтернативная команда для начала разговора. ESMTP указывает, что сервер отправителя хочет использовать расширенный протокол SMTP.
3 ПОЧТА ОТ
Это указывает на адрес отправителя.
4 RCPT TO
Он идентифицирует получателя письма. Чтобы доставить подобное сообщение нескольким пользователям, эту команду можно повторить несколько раз.
5 РАЗМЕР
Эта команда сообщает серверу размер прикрепленного сообщения в байтах.
6 ДАННЫЕ
Команда DATA означает, что поток данных будет следовать. Здесь поток данных относится к телу сообщения.
7 УВОЛИТЬСЯ
Эта команда используется для разрыва SMTP-соединения.
8 верфи
Эта команда используется принимающим сервером, чтобы проверить, является ли данное имя пользователя действительным или нет.
9 EXPN
Он такой же, как VRFY, за исключением того, что в нем будут перечислены все имена пользователей, которые использовались со списком рассылки.

Взаимодействие в рамках SMTP строится по принципу двусторонней связи, которая устанавливается между отправителем и получателем почтового сообщения. При этом отправитель инициирует соединение и посылает запросы на обслуживание, а получатель на эти запросы отвечает. Фактически, отправитель выступает в роли клиента, а получатель — сервера.

Схема взаимодействия по протоколу SMTP

Канал связи устанавливается непосредственно между отправителем и получателем сообщения. При таком взаимодействии почта достигает абонента в течение нескольких секунд после отправки.

Дисциплины и команды протокола. Обмен сообщениями и инструкциями в SMTP ведется в ASCII-кодах. В протоколе определено несколько видов взаимодействия между отправителем почтового сообщения и его получателем, которые здесь называются дисциплинами.

Наиболее распространенной дисциплиной является отправка почтового сообщения, которая начинается по команде MAIL, идентифицирующей отправителя:

MAIL FROM: paul@quest.polyn.kiae.su

Следующей командой определяется адрес получателя:

RCPT TO: paul@apollo.polyn.kiae.su

После того, как определен отправитель и получатель почтового сообщения, можно отправлять последнее:

DATA

Команда DATA вводится без параметров и идентифицирует начало ввода почтового сообщения. Сообщение вводится до тех пор, пока не будет введена строка с точкой в первой позиции. Согласно стандарту почтового сообщения RFC822 отправитель передает заголовок и тело сообщения, которые разделены пустой строкой. Сам протокол SMTP не накладывает каких-либо ограничений на информацию, которая заключена между командой DATA и «.» в первой позиции последней строки. Приведем пример обмена сообщениями при дисциплине отправки почты:

S: MAIL FROM: <paul@quest.polyn.kiae.su>

R: 250 Ok

S: RCPT TO: <dobr@kiae.su>

R: 250 Ok

S: DATA

R: 354 Start mail input; end with <CRLF>.<CRLF>

S: Это текст почтового сообщения

S: .

R: 250

Другой дисциплиной, определенной в протоколе SMTP является перенаправление почтового сообщения (forwarding). Если получатель не найден, но известно его местоположение, то сервер может выдать сообщение:

R: 251 User not local;

will forward to <user@domain.domain>

Если сервер может сделать только предположение о дальнейшей рассылке, то ответ будет несколько иным:

R: 551 User not local;

please try <user@host.domain>

Верификация и расширение адресов составляют дисциплину верификации. В ней используются команды VRFY и EXPN. По команде VRFY сервер подтверждает наличие или отсутствие указанного пользователя:

S: VRFY paul

R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su>

Используя команду EXPN можно получить список местных пользователей:

S: EXPN Example-People

R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su>

R: 250-Vladimir Drach-Gorkunov<vovka@quest.polyn.kiae.su>

В список требований, разрешенных протоколом SMTP входит кроме отправки почты еще и прямая рассылка сообщений. В этом случае сообщение будет отправляться не в почтовый ящик, а непосредственно на терминал пользователя, если пользователь в данный момент находится за своим терминалом. Прямая рассылка осуществляется по команде SEND, которая имеет такой же синтаксис, как и команда MAIL. Кроме SEND прямую рассылку осуществляют SOML (Send or Mail) и SAML (Send and Mail). Назначение этих команд легко понять из их названия.

Для инициализации канала обмена почтой и его закрытия используются команды HELO и QUIT соответственно. Первой командой сеанса должна быть команда HELO.

Протокол допускает рассылку почтовых сообщений в режиме оповещения. Для этой цели отправитель в адресе получателя может указать несколько пользователей или групповой адрес. Обычно, программное обеспечение SMTP выбирает эту информацию из заголовка почтового сообщения и на ее основе формирует параметры команд протокола.

Если сообщение по какой-либо причине не может быть разослано, то получатель формирует сообщение о неразосланном сообщении:

S: MAIL FROM:<>

R: 250 Ok

S: RCPT TO: <@host.domain:JOE@host.domain>

R: 250 Ok

S: DATA

R: 354 send the mail data, end with .

S: Date 23 Oct 95 11:23:30

S: From: SMTP@remote.domain

S: To: <JOE@host.domain>

S:

S: Undelivered message. Your message lost. 550 No such user.

S: .

Для отладки или проверки соединения по SMTP можно использовать telnet. Для этого вслед за адресом машины следует ввести номер порта:

/users/local>telnet

apollo.polyn.kiae.su 25

25 порт используется в Internet для обмена сообщениями по протоколу SMTP. В интерактивном режиме пользователь сам изображает клиента SMTP и может посмотреть реакцию удаленной машины на его действия.

Протокол обмена почтовой информацией POP3 предназначен для разбора почты из почтовых ящиков пользователей на их рабочие места при помощи программ-клиентов. Если по протоколу SMTP пользователи отправляют корреспонденцию через Internet, то по протоколу POP3 пользователи получают корреспонденцию из своих почтовых ящиков на почтовом сервере в локальные файлы.

Формат почтового сообщения Internet определен в документе RFC-822 (Standard for ARPA Internet Text Message). Почтовое сообщение состоит из трех частей: конверта, заголовка и тела сообщения. Пользователь видит только заголовок и тело сообщения. Конверт используется только программами доставки. Заголовок всегда находится перед телом сообщения и отделен от него пустой строкой. RFC-822 регламентирует содержание заголовка сообщения. Заголовок состоит из полей. Поля состоят из имени поля и содержания поля. Имя поля отделено от содержания символом «:». Минимально необходимыми являются поля Date, From, cc или To, например:

Date: 26 Aug 76 1429 EDT

From: Jones@Registry.org

cc:

или

Date: 26 Aug 76 1429 EDT

From: Jones@Registry.org

To: Smith@Registry.org

Поле Date определяет дату отправки сообщения, поле From — отправителя, а поля сс и To — получателя(ей). Чаще заголовок содержит дополнительные поля:

Date: 26 Aug 76 1429 EDT

From: George Jones<Jones@Registry.org>

Sender: Secy@SHOST

To: Smith@Registry.org

Message-ID: <4231.629.XYzi-What@Registry.org>

В данном случае поле Sender указывает, что George Jones не является автором сообщения. Он только переслал сообщение, которое получил из Secy@SHOST. Поле Message-ID содержит уникальный идентификатор сообщения и используется программами доставки почты. Следующее сообщение демонстрирует все возможные поля заголовка:

Date: 27 Aug 76 0932

From: Ken Davis <Kdavis@This-Host.This.net>

Subject: Re: The Syntax in the RFC

Sender: KSecy@Other-host

Reply-To: Sam.Irving@Reg.Organization

To: George Jones <Jones@Registry.org>

cc: Important folks:

Tom Softwood <Balsa@Tree.Root>,

«Sam Irving»@Other-Host;,

Standard Distribution:

/main/davis/people/standard@Other-Host

Comment: Sam is away on bisiness.

In-Reply-To: <some.string@DBM.Group>, George`s message

X-Special-action: This is a sample of user-defined field-

names.

Message-ID: <4331.629.XYzi-What@Other-Host

Поле Subject определяет тему сообщения, Reply-To — пользователя, которому отвечают, Comment — комментарий, In-Reply-To — показывает, что сообщение относится к типу «В ответ на Ваше сообщение, отвечающее на сообщение, отвечающее …», X-Special-action — поле, определенное пользователем, которое не определено в стандарте.

Аналогичный принцип соблюдается для протокола IMAP и POP.

IMAP

IMAP расшифровывается как Internet Mail Access Protocol. Впервые он был предложен в 1986 году. Существует пять следующих версий IMAP:

  1. Оригинальный IMAP
  2. IMAP2
  3. IMAP3
  4. IMAP2bis
  5. IMAP4

Ключевые моменты:

  • IMAP позволяет клиентской программе манипулировать сообщениями электронной почты на сервере, не загружая их на локальный компьютер.
  • Электронная почта хранится и поддерживается удаленным сервером.
  • Это позволяет нам предпринимать любые действия, такие как загрузка, удаление почты без чтения почты. Это позволяет нам создавать, манипулировать и удалять удаленные папки сообщений, называемые почтовыми ящиками.
  • IMAP позволяет пользователям осуществлять поиск по электронной почте.
  • Это позволяет одновременный доступ к нескольким почтовым ящикам на нескольких почтовых серверах.

IMAP команды

В следующей таблице описаны некоторые команды IMAP:

SN Описание команды
1 IMAP_LOGIN
Эта команда открывает соединение.
2 ВОЗМОЖНОСТЬ
Эта команда запрашивает список возможностей, которые поддерживает сервер.
3 NOOP
Эта команда используется в качестве периодического опроса новых сообщений или обновлений статуса сообщений в течение периода бездействия.
4 ВЫБРАТЬ
Эта команда помогает выбрать почтовый ящик для доступа к сообщениям.
5 EXAMINE
Это то же самое, что и команда SELECT, за исключением того, что изменение почтового ящика не допускается.
6 СОЗДАЙТЕ
Он используется для создания почтового ящика с указанным именем.
7 УДАЛЯТЬ
Он используется для окончательного удаления почтового ящика с заданным именем.
8 ПЕРЕИМЕНОВАТЬ
Используется для изменения имени почтового ящика.
9 ВЫЙТИ
Эта команда сообщает серверу, что клиент завершил сеанс. Сервер должен отправить BYE-ответ без тега до ответа OK, а затем закрыть сетевое соединение.

POP

POP расшифровывается как Post Office Protocol. Обычно используется для поддержки одного клиента. Существует несколько версий POP, но POP 3 является текущим стандартом.

Ключевые моменты

  • POP — это стандартный интернет-протокол прикладного уровня.
  • Поскольку POP поддерживает автономный доступ к сообщениям, следовательно, требуется меньше времени на использование Интернета.
  • POP не позволяет искать средство.
  • Чтобы получить доступ к сообщениям, необходимо скачать их.
  • Это позволяет создавать только один почтовый ящик на сервере.
  • Он не подходит для доступа к не почтовым данным.
  • Команды POP обычно сокращаются до кодов из трех или четырех букв. Например. STAT.

Команды POP

В следующей таблице описаны некоторые команды POP:

SN Описание команды
1 АВТОРИЗОВАТЬСЯ
Эта команда открывает соединение.
2 STAT
Используется для отображения количества сообщений, находящихся в данный момент в почтовом ящике.
3 СПИСОК
Он используется для получения сводки сообщений, в которой отображается каждая сводка сообщений.
4 RETR
Эта команда помогает выбрать почтовый ящик для доступа к сообщениям.
5 DELE
Используется для удаления сообщения.
6 RSET
Он используется для сброса сеанса в исходное состояние.
7 УВОЛИТЬСЯ
Он используется для выхода из сеанса.

Сравнение между протоколами POP и IMAP

SN POP IMAP
1 Обычно используется для поддержки одного клиента. Предназначен для работы с несколькими клиентами.
2 Сообщения доступны в автономном режиме. Сообщения доступны в Интернете, хотя он также поддерживает автономный режим.
3 POP не позволяет искать средство. Он предлагает возможность поиска по электронной почте.
4 Все сообщения должны быть загружены. Это позволяет выборочную передачу сообщений клиенту.
5 На сервере может быть создан только один почтовый ящик. Несколько почтовых ящиков могут быть созданы на сервере.
6 Не подходит для доступа к не-почтовым данным. Подходит для доступа к не-почтовым данным, то есть к вложениям
7 Команды POP обычно сокращаются до кодов из трех или четырех букв. Например. STAT. Команды IMAP не сокращены, они полны. Например. ПОЛОЖЕНИЕ ДЕЛ.
8 Это требует минимального использования ресурсов сервера. Клиенты полностью зависят от сервера.
9 Почта после загрузки не может быть доступна из другого места. Позволяет получать доступ к почте из нескольких мест.
10 Электронные письма не загружаются автоматически. Пользователи могут просматривать заголовки и отправителей электронных писем, а затем принять решение о загрузке.
10 POP требует меньше времени использования интернета. IMAP требует больше времени использования интернета.

Задания для самостоятельной работы

1. Основное назначение протоколов SMTP, POP, IMAP?

2. Какие порты передачи данных используют протоколы электронной почты?

3. Что такое формат почтового сообщения?

4. Приведите примеры программ, работающих с электронной почтой?