Стандартный POP3-порт. Настройка почты через POP3. Пример POP3 сессии

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

Протокол POP3 (Post Office Protocol — version 3, третья версия протокола почтового отделения) является наиболее распространенным протоколом получения электронной почты с почтового сервера. Для этих целей также используется IMAP. В IMAP предусмотрено больше возможностей, чем в POP3, но зато POP3 намного проще. Для сравнения — POP3 описан в RFC1939 , занимающем всего 20 страниц, а RFC3501 , описывающий IMAP, состоит из целых 108 страниц. В этом посте речь пойдет о протоколе POP3.

Как всегда, начнем с запуска утилиты telnet и живого примера:

telnet mail.nic.ru 110
Trying 194.85.88.226...
Connected to mail.nic.ru.
Escape character is "^]".
+OK POP3 Server ready <[email protected]>
APOP [email protected]

Здесь мы соединяемся с pop3-сервером, работающим обычно на 110-м порту и проходим аутентификацию (не путать с авторизацией). Если в приветствии сервера присутствует похожая на e-mail строка в треугольных скобках (timestamp), значит сервер поддерживает команду APOP, позволяющую передавать пароль в зашифрованном (точнее — хэшированном) виде. В этом примере хэш вычислен следующим образом:

echo -n "<[email protected]>qwerty" | md5

То есть происходит конкатенация timestamp с паролем, а от результата вычисляется MD5. Преимущество этого метода в том, что даже при использовании незащищенного соединения злоумышленник не сможет перехватить пароль. Он увидит только хэш, который будет совершенно бесполезен, поскольку для каждого нового соединения сервер использует уникальный timestamp. Чтобы узнать пароль необходимо взломать хэш c помощью перебора, что практически бесполезно для достаточно сильных паролей, которые к тому же меняются хотя бы раз в пол года.

Недостаток метода в том, что на стороне сервера пароли приходится хранить в открытом виде, иначе как проверить правильность хэша, переданного пользователем? Если злоумышленник получит доступ к базе данных, то сможет украсть все пароли.

Потому большинством почтовых сервером (я лично проверил pop3.mail.ru:110 и pop.gmail.com:995/ssl/) команда APOP не поддерживается и проходить аутентификацию приходится с помощью стандартной пары логин:пароль.

USER [email protected]
+OK please send the PASS
PASS qwerty
+OK 5 messages (868540 bytes) (proxing)

Очевидно, предпочтительнее использовать этот метод в связке с зашифрованным соединением, чем команду APOP. В случае, если аутентификация не будет пройдена, мы получим сообщение типа

Итак, аутентификация пройдена, теперь можно выполнить несколько команд. Начнем с нескольких довольно бесполезных команд:

HELP
+OK Valid commands: QUIT, NOOP, STAT, LIST, UIDL, DELE, RSET, RETR, ...
NOOP
+OK cool
LAST
+OK 5 is last seen

Команда HELP позволяет получить список поддерживаемых сервером команд. В этом примере команды UIDL, XTND и XMIT являются расширениями протокола POP3 и сервер не обязан их поддерживать. Команда UIDL позволяет получить уникальные идентификаторы сообщений (см описание команды LIST ниже):

UIDL
+OK 6 messages
1 3876
2 3877
3 3878
4 3879
5 3880
6 3881
.
UIDL 2
+OK 2 3877

Для чего нужны XTND и XMIT не знаю и разбираться лениво:) Желающие могут поискать ответ в Google.

Команда NOOP означает «ничего не делать». На ум приходит только одно ее применение — выполнять команду раз в 15 секунд, чтобы дать понять серверу, что клиент не повис.

Команда LAST устарела и использовать ее не следует. Когда-то считалось, что почтовый клиент должен забирать сообщения по очереди. Команда LAST использовалась для того, чтобы узнать id последнего полученного сообщения. В настоящее время она поддерживается некоторыми серверами исключительно для совместимости со старыми почтовыми клиентами.

Теперь перейдем к более полезным командам:

STAT
+OK 5 868540
LIST
+OK 5 messages
1 275368
2 11196
3 153304
4 275367
5 153305
.
LIST 2
+OK 2 11196
TOP 2 0
+OK message follows
Return-Path:
X-Blacklisted-By: cbl.abuseat.org
From: "=?koi8-r?B?48XO1NIg7cnH0sHDyck=?="
To: [email protected]
Subject: =?koi8-r?B?SGVsbG8=?=
Date: Thu, 17 Dec 2009 18:18:12 +0300
MIME-Version: 1.0
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----=_NextPart_000_003C_01CA7F45.01CA7F45"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.3790.3959
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4325
Received-SPF: none
X-Spam-Rating: 83.69

.
DELE 2
+OK marked deleted

Команда STAT позволяет определить количество сообщений в почтовом ящике (5) и их суммарный размер (868 540 байт).

Команда LIST показывает нам список идентификаторов сообщений и их размер в байтах. Заканчивается список точкой. В качестве аргумента этой команде можно передать id сообщения, тогда в ответ мы получим размер только этого сообщения.

Команда TOP позволяет получить заголовок сообщения (первый аргумент команды — id сообщения) и первые N строк тела сообщения (второй аргумент команды). В этом примере я указал N=0, потому что хотел посмотреть только заголовок сообщения. С тем же успехом можно было просто указать только один аргумент. Заканчивается ответ сервера также точкой. Команда TOP часто используется почтовыми клиентами для того, чтобы определить отправителя и тему сообщения без необходимости скачивать письмо целиком. Это экономит время и трафик пользователя.

Очевидно, тут мы имеем дело со спамом (см e-mail отправителя, X-Blacklisted-By и X-Spam-Rating), так что можно смело удалить сообщение, даже не скачивая его целиком. Для этого используется команда DELE. Сообщение будет помечено на удаление, но стерто только после того, как мы закроем соединение.

Отменить удаление всех помеченных нами сообщений можно командой RSET . Получить сообщение целиком можно с помощью команды RETR . Как и в случае с TOP, конец сообщения обозначается точкой. Не буду приводить примеры этих команд, так как тут все довольно очевидно.

По завершению работы можно попрощаться с сервером и закрыть соединение:

QUIT
+OK CommuniGate Pro POP3 Server connection closed

Вот пожалуй и все, что я хотел рассказать о протоколе POP3. Надеюсь, из это описание будет для вас полезным. Если у вас имеются вопросы или вы нашли ошибку в тексте, пишите в комментариях, не стесняйтесь.

Сегодня мы подробно расскажем про наиболее используемые в сети интернет протоколы – POP3, IMAP и SMTP. Каждый из указанных протоколов имеет определенное назначение и функциональные возможности. Давайте попробуем разобраться.

Протокол POP3 и его порты

Post Office Protocol 3 (POP3) это стандартный протокол почты созданные для получения электронных писем с удаленного сервера на e-mail клиент.POP3 позволяет вам сохранить почтовое сообщение на ваш компьютер и даже прочесть его, в случае, если вы находитесь не в сети. Важно отметить, что если вы решили использовать POP3 для подключения к учетной записи почты, письма, которые уже скачаны на компьютер, будут удалены с почтового сервера. Как пример, если вы используете несколько компьютеров для подключения к одному почтовому аккаунту, то протокол POP3 может быть не лучшим выбором в данной ситуации. С другой стороны, так как почта хранится локально, на ПК конкретного пользователя, это позволяет оптимизировать дисковое пространство на стороне почтового сервера.

По умолчанию, протокол POP3 использует следующие порты:

  • Порт 110 – это порт протокола POP3 по умолчанию. Не является безопасным.
  • Порт 995 – этот порт следует использовать в том случае, если вы хотите установить безопасное соединение.

Протокол IMAP и порты

Internet Message Access Protocol (IMAP) – это почтовый протокол, созданный для доступа к почте с локального почтового клиента. IMAP и POP3 – наиболее популярные в сети интернет протоколы, используемые для получения e-mail. Оба этих протокола поддерживается всеми современными почтовыми клиентами (MUA - Mail User Agent) и WEB – серверами.

В то время как POP3 позволяет доступ к почте только с одного приложения, IMAP позволяет доступ из множества клиентов. По этой причине, IMAP наиболее адаптивен в тех случаях, когда доступ к одному почтовому аккаунту необходим для нескольких пользователей.

По умолчанию, протокол IMAP использует следующие порты:

  • Порт 143 – порт по умолчанию. Не безопасен.
  • Порт 993 – порт для безопасного соединения.
Протокол SMTP и его порты

Simple Mail Transfer Protocol (SMTP) – это стандартный протокол для отправки почтовых сообщений по сети интернет.

Данный протокол описан в RFC 821 и RFC 822, впервые опубликованных в августе 1982 года. В рамках данных RFC, формат адреса должен быть в формате имя_пользователя@доменное_имя . Доставка почты, аналогична работе обычной почтовой службы: например, письмо на адрес [email protected], будет интерпретирован так: ivan_ivanov – адрес, а merionet.ru – почтовый индекс. Если доменное имя получателя отличается от доменного имени отправителя, то MSA (Mail Submission Agent) отправит письмо через Mail Transfer Agent (MTA). Главная идея MTA в том, чтобы перенаправлять письма в другую доменную зону, по аналогии, как традиционная почты отправляет письма в другой город или область. MTA так же получает почту от других MTA.

Протокол SMTP использует следующие порты.

В этой статье рассмотрены наиболее часто используемые протоколы электронной почты в Интернете - POP3, IMAP и SMTP. Каждый из них имеет определенную функцию и способ работы. В содержании статьи разъясняется, какая конфигурация лучше всего подходит для конкретных потребностей пользователя при использовании e-mail-клиента. А также раскрывается ответ на вопрос о том, какой протокол поддерживает электронную почту e-mail.

Что такое POP3?

Протокол третьей версии (POP3) — это стандартный почтовый протокол, используемый для приема электронной почты с удаленного сервера на локальный почтовый клиент. Позволяет загружать сообщения на ваш локальный компьютер и читать их, даже если пользователь находится в автономном режиме. Обратите внимание, что при использовании протокола POP3 для подключения к вашей учетной записи сообщения загружаются локально и удаляются с сервера электронной почты.

По умолчанию протокол POP3 работает на двух портах:

    порт 110 — это незашифрованный порт POP3;

    порт 995 — его нужно использовать, если вы хотите безопасно подключиться к POP3.

Что такое IMAP?

Протокол доступа к интернет-сообщениям (IMAP) — это протокол получения сообщений электронной почты, используемый для доступа к ней на удаленном веб-сервере от локального клиента. IMAP и POP3 являются двумя наиболее часто используемыми протоколами для получения писем и поддерживаются всеми современными почтовыми клиентами и веб-серверами.

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

Протокол IMAP работает на двух портах:

    порт 143 - это незашифрованный порт IMAP по умолчанию;

    порт 993 - его необходимо использовать, если вы хотите безопасно подключиться с помощью IMAP.

Что такое SMTP?

Протокол - это стандартный протокол для отправки электронной почты через Интернет.

SMTP работает в трех портах:

    порт 25 — это незашифрованный по умолчанию;

    порт 2525 — он открывается на всех серверах SiteGround, если порт 25 фильтруется (например, вашим интернет-провайдером), и вы хотите отправлять незашифрованные электронные письма с помощью SMTP;

    порт 465 — он используется, если вы хотите безопасно отправлять сообщения с помощью SMTP.

По каким протоколам происходит обмен электронной почтой? Понятия и термины

Термин «сервер электронной почты» относится к двум серверам, необходимым для отправки и получения писем, то есть к SMTP и POP.

Сервер входящей почты — это сервер, связанный с вашей учетной записью адреса электронной почты. Для нее не может быть более одного входящего почтового сервера. Для доступа к входящим сообщениям необходим почтовый клиент — программа, которая может получать электронную почту из учетной записи, позволяя пользователю читать, пересылать, удалять и отвечать на сообщения. В зависимости от вашего сервера, вы можете использовать выделенный почтовый клиент (например, Outlook Express) или веб-браузер. Так, Internet Explorer применяют для доступа к учетным записям на основе электронной почты. Письма хранятся на сервере входящей почты до его загрузки. После того, как вы загрузили свою почту с почтового сервера, сделать повторно это будет нельзя. Чтобы успешно загрузить данные, необходимо ввести правильные настройки в электронной почтовой программе. Большинство входящих почтовых серверов используют один из следующих протоколов: IMAP, POP3, HTTP.

Исходящий почтовый сервер (SMTP)

Это сервер, используемый только для отправки писем (для переноса их из вашей почтовой клиентской программы в приемник). Большинство исходящих почтовых серверов используют Protocol) для отправки корреспонденции. В зависимости от ваших сетевых параметров сервер исходящей почты может принадлежать вашему интернет-провайдеру или серверу, на котором вы настраиваете свою учетную запись. В качестве альтернативы вы можете использовать SMTP-сервер на основе подписки, который позволит вам отправлять электронные письма с любой учетной записи. Из-за проблем со спамом большинство исходящих почтовых серверов не позволяют отправлять электронные письма, если вы не вошли в свою сеть. Сервер с открытым ретранслятором позволит вам использовать его для отправки электронных писем, независимо от того, принадлежите ли вы к его сетевой группе или нет.

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

Для сетей порт означает конечную точку логического соединения. Номер порта определяет его тип. Ниже перечислены порты электронной почты по умолчанию:

    POP3 - порт 110;

    IMAP - порт 143;

    SMTP - порт 25;

    HTTP - порт 80;

    безопасный SMTP (SSMTP) - порт 465;

    безопасный IMAP (IMAP4-SSL) - порт 585;

    IMAP4 через SSL (IMAPS) - порт 993;

    Secure POP3 (SSL-POP) - порт 995.

Протоколы электронной почты: IMAP, POP3, SMTP и HTTP

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

Протокол IMAP

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

Протокол POP3

Протокол передачи электронной почты POP (Post Office Protocol 3) обеспечивает простой, стандартизированный способ доступа пользователей к почтовым ящикам и загрузки сообщений на их компьютеры.

При использовании протокола POP все ваши сообщения электронной почты будут загружены с почтового сервера на локальный компьютер. Вы также можете оставить копии своих электронных писем на сервере. Преимущество заключается в том, что после загрузки ваших сообщений вы можете отключить интернет-соединение и прочитать свой e-mail на досуге, не прибегая к дополнительным расходам на связь. С другой стороны, с помощью этого протокола вы получаете и загружаете много нежелательных сообщений (включая спам или вирусы).

Протокол SMTP

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

Протоколы HTTP

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

Управляемые передачи файлов и сетевые решения

Ваша способность отправлять и получать электронную почту в основном обусловлена ​тремя протоколами TCP. Ими являются SMTP, IMAP и POP3.

SMTP

Начнем с SMTP, потому что его основная функция отличается от двух других. Протокол SMTP, или Simple Mail Transfer Protocol, в основном используется для отправки электронной почты от почтового клиента (например, Microsoft Outlook, Thunderbird или Apple Mail) на сервер электронной почты. Он также используется для ретрансляции или пересылки почтовых сообщений с одного почтового сервера на другой. Это необходимо в случае, если у отправителя и получателя есть разные поставщики услуг электронной почты.

SMTP, который указан в RFC 5321, использует порт 25 по умолчанию. Он также может использовать порт 587 и порт 465. Последний, который был представлен как порт выбора для безопасного SMTP (a.k.a. SMTPS), считается устаревшим. Но на самом деле он по-прежнему используется несколькими поставщиками почтовых услуг.

POP3

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

POP, версия 3, указанная в RFC 1939, поддерживает расширения и несколько механизмов аутентификации. Функции проверки подлинности необходимы, чтобы злоумышленники не получали доступ к сообщениям пользователей.

Клиент POP3 получает электронную почту следующим образом:

    подключается к почтовому серверу на порту 110 (или 995 для соединений SSL/TLS);

    удаляет копии сообщений, хранящихся на сервере;

    отключается от сервера.

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

    IMAP

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

    Логика работы (настройки imap4):

    • подключается к почтовому серверу через порт 143 (или 993 для соединений SSL / TLS);

      извлекает сообщения электронной почты;

      служит для подключения до закрытия приложения почтового клиента и загрузки сообщений по требованию.

    Обратите внимание, что сообщения не удаляются на сервере. Это может иметь серьезные последствия. Спецификации IMAP можно найти в RFC 3501.

    Выбор между IMAP и POP3

    Поскольку основная функция SMTP принципиально отлична, дилемма выбора лучшего протокола обычно включает только IMAP и POP3.

    Если для вас важно место для хранения на сервере, то выбирайте POP3. Сервер с ограниченным объемом памяти является одним из основных факторов, которые могут заставить вас поддержать POP3. Поскольку IMAP оставляет сообщения на сервере, он может потреблять пространство памяти быстрее, чем POP3.

    Если вы хотите получить доступ к почте в любое время, то лучше остановиться на IMAP. Есть одна веская причина, по которой IMAP был предназначен для хранения сообщений на сервере. Он используется для поиска сообщений с нескольких устройств — иногда даже одновременно. Поэтому если у вас есть iPhone, планшет Android, ноутбук и рабочий стол и вы хотите читать электронную почту с любого или всех этих устройств, то IMAP будет лучшим выбором.

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

    Например, если вы читаете сообщения A, B и C, то хотите, чтобы они также были помечены как «прочитанные» на других устройствах. Если вы удалили письма B и C, то захотите, чтобы те же сообщения удалялись из вашего почтового ящика на всех гаджетах. Все эти синхронизации могут быть достигнуты только в том случае, если вы используете IMAP.

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

    Разумеется, все функциональные возможности IMAP имеют свою цену. Эти решения сложнее реализовать, и в конечном итоге протокол потребляет намного больше ЦП и ОЗУ, особенно когда он выполняет процесс синхронизации. Фактически высокая загрузка процессора и памяти может произойти как на стороне клиента, так и на стороне сервера, если есть тонна сообщений для синхронизации. С этой точки зрения протокол POP3 менее затратен, хотя и менее функционален.

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

    Скорость — преимущество, которое варьируется и зависит от ситуации. POP3 имеет возможность загружать все почтовые сообщения при подключении. А IMAP может при необходимости (например, при недостаточном количестве трафика) загружать только заголовки сообщений или определенные части и оставлять вложения на сервере. Только когда пользователь решит, что оставшиеся части стоят загрузки, они станут доступны для него. Поэтому IMAP можно считать более быстрым.

    Однако если все сообщения на сервере должны загружаться каждый раз, то POP3 будет работать гораздо быстрее.

    Как вы можете увидеть, каждый из описываемых протоколов имеет свои преимущества и недостатки. Вам решать, какие функции или возможности важнее.

    Также желаемый способ доступа к e-mail-клиенту определяет предпочтительность протокола. Пользователи, работающие только с одной машины и использующие веб-почту для доступа к своим новым электронным письмам, оценят POP3.

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

    Спам-брандмауэры с SMTP, IMAP и POP3

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

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

В данном уроке мы рассмотрим еще один протокол электронной почты, по которому почтовые клиенты «общаются» с почтовыми серверами.

Не думаю, что Вы будете устанавливать у себя локального почтового клиента. Но, именно на примере локального почтового клиента, проще понять, что собой представляют почтовые протоколы и, в частности, протокол POP3.

Сразу хочу оговориться, что мы с Вами рассматриваем протоколы приема (извлечения) электронной почты с почтовых серверов IMAP (имап, ай-мэп) и POP3 (поп три). Но не рассматриваем (пока) протокол передачи электронной почты на почтовые сервера SMTP (эс-эм-ти-пи).

Хотя ничего особенного в протоколе SMTP нет, чуть позже вкратце мы коснемся и его.

Итак, настройка приема электронной почты по протоколу POP3.

Ничего нового изобретать не будем, а просто создадим еще одну учетную запись для нашего тестового адреса [email protected].

Для этого запускаем нашу программу клиента электронной почты, щелкаем левой кнопкой мыши по «имени» нашей единственной учетной записи «[email protected]», а затем опять левой кнопкой мыши по пункту меню создания учетной записи электронной почты.

В следующем окне заполняем поля точно так же, как мы заполняли эти поля при настройке учетной записи по протоколу IMAP. Затем щелкаем по кнопе «Продолжить».

В следующем окне нам предлагают выбор, по какому протоколу мы будем «забирать» свою почту с почтового сервера. Щелкаем левой кнопкой мыши сначала по кнопке выбора «POP3», а затем опять левой кнопкой мыши по кнопке «Готово».

Таким образом, в почтовом клиенте мы создали еще одну учетную запись, с помощью которой мы будем подключаться к почтовому серверу и забирать почту по протоколу POP3.

Папка «Входящие» пока пустая, так как клиент проверяет почту на сервере 1 раз в 10 минут. Ждать 10 минут мы не будем и проверим почту на почтовом сервере немедленно. Для этого нажмем кнопку пункта меню «Получить».

Вот здесь мы и начнем рассматривать принцип работы почты по протоколу POP3.

Почта с почтового сервера полностью «скачивается» на Ваш персональный компьютер. Другими словами копируется на Ваш компьютер в полном объеме.

И, теперь, Вы можете работать с электронной почтой полностью автономно. Почта, которая находится на Вашем персональном компьютере, теперь никак не связана с почтовым сервером, в отличие от протокола IMAP.

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

Дело в том, что программа для имени учетной записи подставляет адрес электронной почты. А поскольку у нас две учетные записи на один электронный адрес, то получилось два одинаковых имени для разных учетных записей.

В общем, чтобы не запутаться, меняем имя «учётки».

Для этого наводим указатель мыши на имя нашей учетной записи «[email protected]» и щелкаем по ней левой кнопкой мыши. Аналогично щелкаем по пункту меню настройки учетной записи «Просмотр параметров этой учетной записи».

У нас откроется окно настроек для наших учетных записей. Меняем имя нашей «учётки». Чтобы ничего не выдумывать, я просто допишу «(pop3 )».

Теперь легче ориентироваться в наших учетных записях.

Давайте будем считать, что мы уже просмотрели всю электронную почту и она нам больше не нужна. И решили мы удалить все письма сразу. Для этого щелкаем левой кнопкой мыши по любому письму. Комбинацией клавиш «Ctrl+A» выделяем сразу все письма и нажимаем клавишу «Del» для удаления.

Вся почта удалилась и была перемещена из папки «Входящие» в папку «Удаленные».

А теперь ВНИМАНИЕ!!! Два момента.

Теперь, пока не придет новое письмо, папка «Входящие» будет пустой. Это, вроде, само собой разумеется. Но!

Давайте посмотрим, что реально твориться с нашей почтой на почтовом сервере, которую мы у себя удалили. Посмотрим через учетную запись, настроенную на протокол IMAP и через .

Вся удаленная почта осталась на почтовом сервере. Хотя больше мы ее не получаем. Хорошо это или плохо?

Здесь, скорее больше минусов, чем плюсов. Хотя кому как.

Один из «длинных» минусов это то, что объем писем со временем будет нарастать и может полностью забить почтовый ящик. Письма просто перестанут приходить.

Один из «больших» плюсов это то, что даже если мы полностью удалим свою почту на локальном компьютере, мы всегда будем знать, что у нас есть как бы «резервная копия» всех наших писем

Давайте теперь изменим один параметр у сервера.

Для этого войдем в просмотр параметров учетной записи.

Щелкаем левой кнопкой мыши по имени учетной записи «[email protected] (pop3)», затем по пункту «Просмотр параметров учетной записи», затем по пункту «Параметры сервера».

Убираем галочку напротив «Оставлять копии сообщений на сервере». Нажимаем кнопку «ОК».

Теперь давайте посмотрим, что с нашей почтой на почтовом сервере в нашем почтовом ящике.

Как мы видим, вся почта была удалена сразу после того, как мы убрали галочку напротив параметра "Оставлять копии сообщений на сервере".

Хорошо это или плохо?

Здесь есть очень большой плюс. Вам нет необходимости беспокоиться о своем почтовом ящике на сервере. Он просто никогда не переполнится, и письма будут приходить всегда.

Из больших минусов то, что если Ваш компьютер выйдет из строя, то вся почта просто потеряется, если, конечно не делали резервные копии.

Но, с другой стороны, если нет резервной копии чего-то, то это самое «чего-то» уже не восстановишь. Причем не важно, что это — почта, фотографии, документы и т.п.

В принципе, в большинстве случаев учетную запись в почтовом клиенте для получения почты с почтового сервера настраивают именно по протоколу POP3, не оставляя почту в почтовом ящике на сервере.

Но и конечно, никто никогда не создает две учетные записи для одного и того же адреса электронной почты. Хотя, как Вы видите, возможность такая существует. И сделал я две записи только для наглядного примера.

Вот в принципе и все про протоколы IMAP и POP3.

В следующем уроке мы узнаем как «привязывать» электронную почту, работая с почтовым ящиком через Вэб-интерфейс. А также рассмотрим несколько различных способов вставки картинок.

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

На этом на сегодня все. Всем удачи и творческих успехов. 🙂

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

Мотивирующая картинка J

Почтовый протокол POP 3 используется только для загрузки новых сообщений с почтового сервера. Он позволяет почтовому клиенту подключиться к серверу лишь на период времени, который требуется для загрузки сообщений.
Не допускается одновременное подключение нескольких почтовых клиентов к определенному ящику (разрешено только одно подключение).

При использовании почтового протокола IMAP соединение не разрывается до тех пор, пока ведется работа с ящиком в почтовой программе; загрузка сообщений с сервера производится только по запросу почтового клиента.
Разрешен одновременный доступ нескольких почтовых клиентов к ящику, причем каждый из них может отслеживать изменения, производимые другими подключенными клиентами, а также статус всех сообщений (прочитано, отправлен ответ, удалено).

Оба эти протокола выполняют идентичные задачи по работе с почтой, только Pop 3 позволяет скачивать все файлы одновременно, а IMAP – сначала список файлов, а затем по необходимости сами файлы.

Одна из частых проблем при использовании протоколов Pop 3 и IMAP , заключается в том, что многие разработчики пробуют реализовать эти протоколы под один интерфейс и с одинаковой логикой. Это в корне неверно. Дело в том, что при использовании протокола IMAP мы можем грузить не все письма, а только непрочитанные для примера. Для того чтобы реализовать передачу данных, мы использовали в проекте библиотеку MailBee . NET . Пример реализации приема с помощью этой библиотеки вы можете посмотреть . В примере по ссылке выше приведена реализация протокола POP 3 и IMAP с использованием паттерна фабричный метод (Factory Method ). В одной из таких реализаций мы использовали для уникальности письма UID (уникальный идентификатор письма на сервере). Дело в том, что для IMAP и POP 3 эти идентификаторы разные.

RFC 1939 (POP3): The unique-id of a message is an arbitrary server-determined string, consisting of one to 70 characters in the range 0x21 to 0x7E, which uniquely identifies a message within a maildrop and which persists across sessions.

RFC 3501 (IMAP): (Unique Identifier (UID) Message Attribute is) a 32-bit value assigned to each message, which when used with the unique identifier validity value (see below) forms a 64-bit value that MUST NOT refer to any other message in the mailbox or any subsequent mailbox with the same name forever.

Давайте посмотрим примеры отличия UIDs . Примеры отличия для POP 3:

pop . meta . ua UID 8863-1253275464

pop3.ukr.net 1356790973352505619

Пример UIDs для IMAP:

imap.ukr.net 1432

Теоретически можно написать почтовый сервер, который поддерживает как IMAP, так и POP 3, и использовать тот же UID для обоих протоколов, но я не знаю ни одного сервера, который будет на самом деле сделать это. На практике вы должны относиться к POP 3-идентификаторам и IMAP- идентификаторам как несвязанным значениям . Вроде, все логично, но что делать, если мы работали с одним ящиком, который поддерживает и POP 3 и IMAP . И вы в своей программе даете возможность указать пользователю, какой протокол для получения почты он хочет использовать. Если мы использовали, например, pop 3. ukr . net , а затем решили переключиться на использование imap . ukr . net , то мы получим кучу проблем на свою голову. Потому что если посмотреть выше пример по отличию в UID для этих двух протоколов для ukr . net , то увидим основную проблему. А именно: дублирование некоторых писем. Если пользователю не важен факт загрузки писем на свой диск, то этим фактом можно пренебречь, но если факт доставки почты является существенным, этот факт нельзя игнорировать. Поэтому многие разработчики реализуют работу с протоколом IMAP как с протоколом POP 3.

Как же можно "подружить" эти два протокола? После долгих размышлений с коллегами на работе и безуспешного поиска в интернете решений связывания писем, которые получены через протокол POP 3, с письмами, которые получены через протокол IMAP , мы пришли к решению, как можно победить связывание писем, если у них присутствуют вложения. Первым делом нам необходимо завести базу для хранения идентификатора настроек почты (Например, ссылка на таблицу настроек почты, в которой хранятся адрес, порт, пароль и т.д.), уникальный идентификатор сообщения UID и дата получения письма. Этот способ поможет нам идентифицировать сообщения, полученные от конкретного почтового сервера для конкретного пользователя.

Следующим шагом нам необходимо создать таблицудля хранения хеш-файлов, которые идут в письме (attachment ). Для того чтобы посчитать хеш, можем воспользоваться стандартными способами, доступными в. NET Framework . Например, чтобы использовать MD 5, воспользуемся классом MD 5 CryptoServiceProvider () или другим хеш-алгоритмом из доступных HashAlgorithm на MSDN , или, по желанию, можно написать свой алгоритм. Основная суть заключается в том, что если вы храните у себя вложения, которые идут в письмах, вы можете хранить только те, которые не дублируются. Как это работает: вы загрузили письмо из сервера, посчитали его хеш, проверили, есть ли такой в таблице хешей, если такого файла нет в данной таблице, мы сохраняем посчитанный хеш для данного файла в БД, чтобы при переключении протокола не грузить этот файл повторно. После этого если мы используем протокол IMAP , можем уведомить сервер о том, что это письмо мы прочитали, и при последующем запросе он не будет нам его возвращать.

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


Примечание: некоторые разработчики могут подумать, почему для таких целей не разрулить по дате получения DataReceived . В библиотеке MailBee . Net в классе MailMessage , который хранит информацию о письме, есть поле DateReceived , которое содержит дату получения письма на почту MailMessage.DateReceived Property . Но с этим полем есть проблема: оно не подходит для протокола IMAP . Для IMAP необходимо использовать свойство Envelope.DateReceived Property , но если информация не доступна по какой то причине, то оба эти свойства с DateReceived будет содержаться MinValue . Поэтому даже если у нас поде DateReceived не равно минимальной дате, не факт, что после смены протокола с POP 3 на IMAP эта дата будет идентична. Одна из проблем, которая была раньше с MailBee . NET , – что дата DateReceived отличалась на один час от реального времени Incorrect Date Received Time . Поэтому еще раз хотелось бы вам посоветовать, что если есть возможность рассматривать эти два протокола как отдельные уникальные протоколы, то у вас станет на одну проблему меньше. В противном случае вам придется связывать эти два протокола, что чревато "костылями", которые если и будут работать, то с огромной натяжкой.