Литмир - Электронная Библиотека

Уникальная последовательность, передаваемая клиенту при каждом соединении с сервером, называется временной меткой. Стандарт не оговаривает формат представления метки, но обычно она имеет следующий вид: processID.clock@hostname, где processID - идентификатор процесса, clock - состояние таймера сервера на момент установления соединения, а hostname - имя узла. Один из примеров временной метки показан ниже (в тексте он выделен жирным шрифтом):

· +OK mPOP POP3 server ready [email protected]

Пользователь шифрует временную метку своим паролем по алгоритму MD 5, и полученный результат (который именуется зашифрованным паролем, или, технически более грамотно, “digest”) передает на сервер.

Следующий эксперимент позволяет убедиться, что временные метки действительно различны при каждом новом соединении:

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

· +OK mPOP POP3 server ready «[email protected]»

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

Пример использования команды APOP приведен ниже:

· +OK mPOP POP3 server ready [email protected]

· APOP ORION d373e6c3a7c6d9c5a2d6c2a1

· +OK ORION's maildrop has 1 messages (789046 octets)

В приведенном примере в почтовом ящике лежит письмо значительных размеров, поэтому, возникает потребовать в предварительном просмотре фрагмента письма без его загрузки целиком (быть может, нет никакого смысла получать это сообщение и его можно безболезненно удалить). Для этой цели предусмотрена команда “TOP msg n”, которая выводит n первых строк, сообщения с порядковым номером msg.

Например, “TOP 1 10” возвращает десять первых строк от начала первого письма. Это может выглядеть так:

· +OK mPOP POP3 server ready [email protected]

· TOP 1 10

· +OK

· Return-Path: [email protected]

· Received: from citycat.ru by mail.ru for mail.ru, au.ru, aport.ru,

· inbox.ru, land.ru with CCQDP. For more info [email protected]

· Message-Id:«[email protected]»

· Precedence: special-delivery

· Comments: Subscribe.Ru/Citycat E-mail Service. http://subscribe.ru

· Date: Mon, 6 Mar 2000 00:22:47 +0300 (MSK)

· From: CityCat «[email protected]»

· To: "funny.anet.anec" «[email protected]»

· Subject: =?koi8-r?Q?=E1=CE=C5=CB=C4=CF=D4=20=C4=CE=D1=20=CE=C1=20?=

· =?koi8-r?Q?=C1=CE=C5=CB=C4=CF=D4=CF=D7.net?=

· MIME-Version: 1.0

· Content-Type: text/html; charset=koi8-r

· Content-Transfer-Encoding: 8bit

·

·

· «!-

· -*-

· -»

· «HTML» «HEAD»

· «TITLE»уМХЦВБ тБУУЩМПЛ зПТПДУЛПЗП лПФБ«/TITLE»

· «/HEAD»

· «BODY BGCOLOR="#FFFFFF" LINK="#0A0AD0" VLINK="#AAAAFF"»

· «CENTER»

· «B»«FONT SIZE=+1»

·

·.

Для отката транзакции (и восстановления всех удаленных в течение последнего сеанса сообщений) можно воспользоваться командой “RSET”, вызываемой без аргументов. Но не существует команды, способной восстановить одно, конкретно, взятое сообщение.

Пара команд “STAT” и “NOOP служат для проверки состояния ящика и целостности соединения. Обе вызываются без аргументов. Пример их использования приведен ниже:

· +OK mPOP POP3 server ready [email protected]

· NOOP

· +OK

· STAT

· +OK 196 2097988

Первое число, выдаваемое командой “STAT” сообщает количество сообщений, хранящихся в почтовом ящике, а второе содержит их суммарный объем в октетах.

За подробным описанием протокола POP3 и смежных с ним вопросов можно обратиться к RFC-1081, RFC-1082, RFC-1225, RFC-1725, RFC-1939 и другим техническим руководствам.

Протокол SMTP

O В этой главе:

O Основные команды протокола

O Серверы-ретрансляторы

O Непосредственная пересылка

O Автоматизация почтовой рассылки и спам

O Анонимная рассылка писем

Для доставки почты в большинстве случаев используется протокол SMTP (Simple Mail Transfer Protocol).

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

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

В терминологии SMTP-протокола нет таких понятий как «клиент» и «сервер». Вместо этого говорят об отправителе (sender) и получателе (receiver). То, что большинство называют «SMTP-сервером», является одновременно и отправителем, и получателем. Когда клиент устанавливает с ним соединение для передачи письма, сервер выступает в роли получателя, а когда доставляет сообщение абоненту, становится отправителем.

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

73
{"b":"837821","o":1}