pop3recv.exe
Задача агента pop3recv.exe — обратиться к удалённому почтовому серверу, подключиться к почтовому ящику и принять его содержимое для дальнейшей обработки почтовым сервером Eserv. Это так называемое консольное приложение — программа, полностью управляемая с помощью командной строки, режима, унаследованного от старых времён, не слишком удобного в повседневной работе, но крайне полезного при создании автоматизированных систем типа "установил и забыл". Агент pop3recv "понимает" следующие параметры (иначе называемые ключами) командной строки:-s сервер
С помощью ключа -s агенту передаётся имя или IP-адрес POP3-сервера, на котором хранится подлежащий опросу почтовый ящик.
-p порт
Ключ -p используется для указания номера порта, на котором работает нужный POP3-сервер. Стандартное значение 110, на этом порту работают все общедоступные и подавляющее большинство корпоративных почтовых серверов. Причиной перевода сервера на нестандартный порт могут быть только соображения сугубой секретности. В этом случае Вам, как пользователю такого сервера, номер порта должен быть известен. Если же используется стандартный номер порта, то ключ -p можно не задавать.
-u имя
Ключ -u задаёт имя учётной записи опрашиваемого почтового ящика. Как правило, оно совпадает с левой частью (до разделителя @) сопоставленного ящику почтового адреса — например, адресу vasya@mail.ru гарантированно соответствует имя учётной записи vasya. Но это именно как правило — бывает, что они не совпадают.
-w пароль
Ключ -w задаёт пароль для доступа к опрашиваемому почтовому ящику.
-o файл
Ключ -o задаёт имя файла, в который записывается выходная информация — это, по сути, полный протокол общения агента с POP3-сервером. По умолчанию весь вывод направляется в консольное окно, точнее — в стандартный поток вывода, так что его можно передать для обработки другому приложению, но для нашей задачи наилучшим решением будет сохранить его в файл. Этот файл затем будет передан для обработки агенту erobot, который разберёт его на отдельные сообщения. Желательно для каждого запуска агента задавать уникальное имя файла — тогда история подключений сохраняется для последующего анализа. При вызове агента из Планировщика для генерации уникальных имён используются специальные макропараметры Eserv %TempFile% и %PrevTempFile%. Подробное описание этих и других параметров приведено в главе, посвящённой Планировщику.
-env
С помощью ключа -env можно получить выходной файл в специальном формате — его можно открыть с помощью Outlook Express так, словно это одно большое письмо, при этом все принятые почтовые сообщения будут представлены в виде вложенных файлов. Правда, в этом случае файл не пройдёт последующую обработку агентом erobot.exe.
-d
Ключ -d побуждает агента удалять с POP3-сервера загруженные сообщения. Это наиболее распространённый режим работы. Однако иногда удаление сообщений нежелательно — случается, что почту из одного и того же ящика должны получать несколько пользователей (например, несколько удалённых друг от друга филиалов одной организации). В этом случае достаточно не указывать ключ -d, а для предотвращения повторного приёма уже однажды принятых сообщений использовать ключ -uidl. И, естественно, принять меры по предотвращению переполнения почтового ящика.
-uidl
Для распознавания уже однажды принятых сообщений в протоколе POP3 предусмотрен специальный механизм уникальных идентификаторов — UIDL. Каждом сообщению, хранящемуся в почтовом ящике, сервер сопоставляет некое число. Почтовый клиент при подключении к серверу может запросить идентификаторы всех сообщений и, проанализировав их, принять решение, какие сообщения следует принимать, а какие нет. Этот режим работы pop3recv задаётся указанием в командной строке ключа -uidl.
Список идентификаторов UIDL принятых сообщений сохраняется в файле pop3msgids.txt, который агент создаёт в каталоге temp. Поскольку по истечении какого-то периода времени почтовый сервер начнёт выдавать уже использованные идентификаторы (это срок неопределённый, зависящий как от программного обеспечения сервера, так и от интенсивности его работы, но заведомо конечный), список необходимо регулярно очищать — иначе непрочитанные письма либо останутся лежать на сервере, либо агент их удалит, не принимая. Разумнее всего очистку списка совмещать с очисткой опрашиваемого почтового ящика — если обычно Вы не используете ключ -d.
-dial
По умолчанию pop3recv не предпринимает никаких дополнительных действий по установлению соединения с Интернетом — он немедленно пытается обратиться к заданному серверу. Если Вы подключены к всемирной сети по выделенной линии, больше ничего и не требуется. Если же Вы используете модемное подключение, то при отсутствии связи попытка получения почты закончится неудачей. Можно, конечно, использовать эту особенность, чтобы не дёргать модем без надобности — когда соединение будет установлено для других целей, запущенный в это время агент воспользуется им и получит почту. Однако желательно, чтобы почта обрабатывалась независимо от настроения пользователей — раз в несколько часов, даже раз в сутки, но письма из почтового ящика необходимо вынуть. Кроме того, может случиться так, что модемное соединение как было установлено "по щучьему велению", будет так же и разорвано до завершения приёма почты. При использовании ключа -dial агент обращается к серверу дозвона Eserv и запрашивает установку соединения, а по завершении сессии сообщает, что соединение более не нужно. Уменьшения же количества звонков к провайдеру при отсутствии активной работы в Интернете можно добиться тонкой настройкой задания в Планировщике.
-to тайм-аут
Ключ -to задаёт время ожидания ответов от почтового сервера. Значение задаётся в секундах и по умолчанию составляет несколько минут — величина, как правило, вполне достаточная. Однако при работе на очень плохих линиях она может оказаться недостаточной, тогда можно задать значение побольше.
-z
При грамотном выборе интервала запуска агента почтовая сессия успевает завершиться до очередного запуска. Но случается (обычно при модемном способе подключения по телефонным линиям низкого качества), что объём сообщений в почтовом ящике превышает некую критическую величину, и тогда агент запускается до того, как отработало предыдущее задание. Большинство POP3-серверов (Eserv относится к этому большинству) не допускают несколько параллельных подключений к одному почтовому ящику, так что поспешившему агенту придётся уйти не солоно хлебавши. Однако существуют и те, что идут не в ногу — например, Exchange Server допускает параллельные подключения. В таком случае повторно запустившийся агент начнёт повторно принимать содержимое почтового ящика (ведь, в соответствии со стандартом POP3 сообщения из ящика удаляются только после отключения пользователя), увеличивая трафик и забирая дефицитную пропускную способность канала связи. Два агента параллельно работают медленнее, чем один, поэтому почти наверняка дойдёт дело и до третьей, и до четвёртой копии. Кончается это либо полным истощением ресурсов системы с последующим повисанием, либо исчерпанием пропускной способности линии. Экспериментально установлено, что семь параллельно работающих pop3recv полностью забивают модемную линию 33,6 килобит/с. Для предотвращения неприятностей можно использовать ключ -z — при его использовании pop3recv, обнаружив в момент запуска уже работающую копию, немедленно завершает работу. Правда, могут возникнуть проблемы с другой стороны — если настроено несколько заданий на опрос нескольких почтовых ящиков, часть из них будет опрошена не при каждом запуске, а если они все настроены на одновременный запуск, то пропуски будут практически постоянными. Эта проблема решается написанием одного командного (BAT или CMD-файла), выполняющего последовательный опрос всех нужных почтовых ящиков, и запуск его как единого задания — подробно об этом читайте в главе, посвящённой Планировщику.
-ps сервер
Хорошо, когда POP3-сервер доступен безо всяких ухищрений. Однако нередко случается и так, что провайдер предоставляет подключение только через прокси-сервер, а нужный почтовый сервер находится "по ту сторону". При этом далеко не всякий прокси-сервер способен обрабатывать протокол POP3, и далеко не всякий провайдер использует такие "умные" программы. В таком случае единственная возможность добраться до нужного почтового сервера — использование протокола HTTPS. Ключ -ps используется для указания имени прокси-сервера провайдера.
-pp порт
При использовании прокси-сервера провайдера ключ -pp позволяет указать номер порта, на котором работает прокси-сервер. Значение по умолчанию 3128, большинство провайдерских прокси-серверов используют именно его.
-ln число
Обычно pop3recv помещает в панель задач рядом с часами значок в виде конверта. Щелчок мыши по этому значку открывает окно, в котором видны все детали общения агента с почтовым сервером. Объём окна достаточно велик — 30000 строк. Для хранения такого количества информации требуется большой объём памяти, даже система иногда не выдерживает — при завершении работы агента в этом случае возникает программная ошибка. С помощью ключа -ln размер окна можно уменьшить до приемлемой величины.
-dw
Ключ -dw запрещает агенту создавать окно протокола и выводить значок в панель задач. Используйте его, если регулярное мелькание конвертов в панели задач раздражает Вас, а также при настройке специализированного сервера, работающего "вслепую". В конце концов, Вы ничего не теряете — вся информация записывается в выходной файл, который при должных настройках хранится достаточно долго, чтобы Вы при необходимости могли его найти и проанализировать.
-q
Закрытие окна протокола — щелчком мыши по крестику или вводом с клавиатуры Alt+F4 — приводит к завершению работы агента. По умолчанию выполняется быстрый выход — никаких команд или данных почтовому серверу не посылается, поэтому при следующем подключении возможен повторный приём уже загруженных сообщений. Если в командной строке pop3recv присутствует ключ -q, то агент и в случае ручного прерывания сеанса выполняет предписанную протоколом процедуру завершения связи, чтобы POP3-сервер освободил почтовый ящик и удалил уже принятые письма.Вернуться к описанию почтового сервера
Вернуться к содержанию