Почтовый сервер
Протоколы электронной почты
Электронная почта — один из старейших сервисов глобальной сети, сменивший за долгую жизнь не один стандарт, и к тому же один из самых активно используемых. Вероятно, именно поэтому нет и не предвидится единого протокола, обслуживающего передачу почтовых сообщений. На сегодняшний день наиболее распространены (а для Интернета приняты в качестве стандарта) три протокола.SMTP (Simple Mail Transfer Protocol) предназначен для отправки почтовых сообщений; при его применении активной является передающая сторона. SMTP используется как при отправке сообщений от почтового клиента почтовому серверу, так и для пересылки почты между почтовыми серверами. Сервер послушно принимает все сообщения и, в зависимости от ситуации, либо передаёт их для последующей обработки другим службам (впрочем, большинство серверов умеет самостоятельно помещать почту в почтовые ящики получателей), либо отправляет дальше, принимая на себя роль SMTP-клиента.
POP3 (Post Office Protocol версия 3), напротив, предназначен для приёма почтовых сообщений; при его применении активная сторона является приёмником. Почтовый сервер пассивно хранит сообщения в почтовых ящиках до тех пор, пока пользователи не заберут их своими программами чтения почты. Как правило, POP3 используется почтовым клиентом для обращения к почтовому серверу за новыми сообщениями, но иногда его используют и серверы "нестандартной ориентации", к которым, в частности, относится и Eserv.
IMAP (Internet Mail Access Protocol) — протокол того же назначения, что и POP3, но предоставляющий значительно больше возможностей. В частности, он позволяет хранить и обрабатывать почтовые сообщения прямо на удалённом сервере, не загружая их на диск локального компьютера. Поэтому IMAP используется всё активнее и в недалёком будущем, по-видимому, почти полностью вытеснит "конкурента".
Как это сделано в Eserv
Eserv версии 2 был написан в далёкие уже времена "засилья" протокола POP3, поэтому полноценная поддержка IMAP в нём отсутствует. Правда, в состав последних выпусков Eserv включена бета-версия IMAP-сервера, но она, во-первых, имеет ограничения в работе, а во-вторых, работает не при всяких настройках Eserv, поэтому оставим её за скобками и предоставим желающим возможность самостоятельно постичь все её особенности. Основу же почтового сервера Eserv составляют SMTP-сервер, POP3-сервер и специальная служба Тоссер, отвечающая за маршрутизацию сообщений.Вся обработка почты происходит в подкаталоге mail каталога установки Eserv. При установке Eserv в этом каталоге автоматически создаются подкаталоги spool, in, out, loop и lists. Вся поступившая почта, независимо от путей её поступления, попадает в подкаталог spool, где её анализирует Тоссер и, по результатам анализа, помещает либо в подкаталог in — в почтовый ящик соответствующего пользователя, — либо в подкаталог out — для отправки во "внешний мир", — либо в подкаталог loop, если доставка сообщения невозможна, — например, не задан адрес получателя или выявленный маршрут запрещён в настройках Eserv. В loop также могут попадать письма, которые Тоссер посчитал уже однажды обработанными, — подробнее об этой интересной особенности будет рассказано ниже. В spool, out и loop письма попадают и хранятся в виде отдельных файлов — каждое сообщение в своём файле.
Если в подкаталоге spool создать ещё один подкаталог to_check (автоматически он не создаётся), то поступающая почта будет помещаться в этот подкаталог. И так там и останется, поскольку Тоссер анализирует только сам подкаталог spool. Так задумано специально, на тот случай, когда над письмами необходимо выполнять какие-то дополнительные операции — подвергнуть антивирусной проверке, пропустить через спам-фильтр, изменить адрес отправителя или список получателей. Эти внешние проверки выполняются с помощью автоматического вызова описанного ниже командного файла tossspool.bat. Письма, прошедшие всю процедуру, перемещаются в spool (разумеется, за исключением писем, попавших "под нож" антивируса или противоспамного фильтра), где их впоследствии обнаруживает Тоссер. Такой нехитрый механизм гарантирует, что ни одно сообщение не избежит необходимой обработки.
В подкаталоге in располагаются файлы пользовательских почтовых ящиков — они имеют те же имена, что и их владельцы; письма добавляются в эти файлы. Особенности реализации Тоссера в сочетании с неточными настройками могут привести к появлению файлов почтовых ящиков для несуществующих пользователей, однако получить к ним доступ посредством почтовой программы невозможно — принимать почту от POP3-сервера могут только пользователи Eserv, перечисленные в соответствующей секции раздела ОбщиеНастройки. Почтовая программа соединяется с сервером POP3, сообщает ему имя ящика и пароль на доступ к нему, получает список имеющихся сообщений и затем получает все сообщения и отдаёт команды удаления прочитанных писем с сервера. Реальное удаление (физическое удаление сообщений в ящике) производится сервером не сразу при получении команды "удалить", а в момент завершения POP3-сеанса — таково требование стандарта. Два и более одновременных подключения к одному и тому же ящику невозможны.
Подкаталог lists для обработки почты не является обязательным — по умолчанию в нём хранятся списки рассылки, рассказ о которых также ещё впереди и которые можно хранить в любом другом каталоге по Вашему выбору.
Настройки почтового сервера
Настройки почтового сервера, для которых в интерфейсе выделен отдельный раздел, включают около двух десятков параметров — от самых базовых до тонких настроек, — и позволяют изменять поведение почтового сервера в достаточно широких пределах. Приложив примерно одинаковые усилия, Eserv можно превратить как в закрытый корпоративный почтовый сервер, так и в общедоступный. Настройки позволяют управлять переадресацией и рассылкой почты, устанавливать различные степени защиты. Подробнее о настройках почтового сервера.Почтовые агенты
До этого момента аспекты взаимодействия почтового сервера Eserv с внешним миром практически не рассматривались — за исключением процедуры пассивного приёма входящий почты по протоколу SMTP, которая мало чем отличается от таковой при взаимодействии с почтовыми программами пользователей локальной сети. Способы приёма входящей почты по протоколу POP3 из внешних почтовых ящиков и отправки наружу исходящей почты оставались "за кадром". Теперь пора разобраться и с этим.Взаимодействие почтового сервера с внешним миром обеспечивают внешние приложения, называемые почтовыми агентами. Запуск этих агентов обычно выполняется Планировщиком — специальным сервисом Eserv, которому посвящена отдельная глава. Стандартное место расположения агентов — каталог agents в папке установки Eserv. Даже беглый взгляд обнаружит там около десятка различных программ, нас же будут интересовать четыре из них. Это pop3recv.exe — агент приёма почты из внешних ящиков по протоколу POP3, — smtpsend.exe и smtpsend3.exe — агенты отправки почты по протоколу SMTP — и универсальный вспомогательный агент erobot.exe. Особый интерес представляет файл, который в каталоге agents изначально отсутствует — это tossspool.bat, командный файл, который Вы при необходимости можете создать самостоятельно.
pop3recv.exe
Задача агента pop3recv.exe — обратиться к удалённому почтовому серверу, подключиться к почтовому ящику и принять его содержимое для дальнейшей обработки почтовым сервером Eserv. Это так называемое консольное приложение — программа, полностью управляемая с помощью командной строки, режима, унаследованного от старых времён, не слишком удобного в повседневной работе, но крайне полезного при создании автоматизированных систем типа "установил и забыл". Подробнее о параметрах запуска и возможностях pop3recv.erobot.exe
Erobot.exe — универсальный обработчик почтовых и новостных сообщений. Его функциональность в каждом конкретном случае определяется конфигурационным файлом, представляющим собой специальный модуль подключения на языке Форт. Если запустить erobot без указания файла конфигурации, он проанализирует входной файл, выделит из него отдельные сообщения, но никаких выходных файлов создавать не будет. В рабочем режиме выходные файлы с отдельными сообщениями создаются в заранее предопределённом каталоге — для почты это либо mail\spool, либо mail\spool\to_check. Erobot использует относительные пути к каталогам, поэтому требует, чтобы при его запуске текущим каталогом был каталог установки Eserv. Эту особенность можно использовать при необходимости поменять каталог назначения, если неохота связываться с перепрограммированием конфигурационных файлов.Как и другие агенты, erobot представляет собой консольное приложение и полностью управляется с помощью командной строки.
Подробнее о параметрах запуска и возможностях erobot.
smtpsend.exe
Назначение почтового агента smtpsend.exe — отправка исходящей почты по протоколу SMTP. Агент ориентирован на работу с одним заранее выбранным почтовым сервером — так же, как это делает обычная почтовая программа на компьютере пользователя. Как правило, выбирается почтовый сервер Интернет-провайдера — обычно он самый легкодоступный. Правда, для работы с ним обычно требуется следование некоторым требованиям (у каждого провайдера они обычно свои), если у Вас не получается удовлетворить этим требованиям, придётся выбрать либо другой почтовый сервер, либо другой способ доставки почты — с помощью агента smtpsend3.exe.Сообщения для отправки выбираются агентом из каталога mail\out. Smtpsend использует относительные пути к каталогам, поэтому требует, чтобы при его запуске текущим каталогом был каталог установки Eserv. Эту особенность можно использовать при необходимости поменять каталог очереди на отправку.
Как и другие агенты, smtpsend представляет собой консольное приложение и полностью управляется с помощью командной строки.
Подробнее о параметрах запуска и возможностях smtpsend.
smtpsend3.exe
В отличие от агента smtpsend, функционирующего по принципу почтового клиента и взаимодействующего с одним почтовым сервером, smtpsend3.exe работает по тому же принципу, что и почтовые серверы — он доставляет письма по возможности непосредственно на почтовый сервер получателя. Его применение имеет смысл в том случае, когда невозможно использовать преимущества быстрой отправки на сервер провайдера, которые предоставляет smtpsend — например, при наличии нескольких возможных модемных подключений к Интернету, из которых отправлять почту на сервер провайдера с помощью smtpsend возможно только по одному, или в случае, когда Eserv используется в качестве самостоятельного почтового сервера.Сообщения для отправки обычно выбираются агентом из каталога mail\out. ~Smtpsend3 использует относительные пути к каталогам, поэтому требует, чтобы при его запуске текущим каталогом был каталог установки Eserv. Впрочем, существует способ явно указать используемый в качестве очереди на отправку каталог.
Как и другие агенты, smtpsend3 представляет собой консольное приложение и полностью управляется с помощью командной строки.
Подробнее о параметрах запуска и возможностях smtpsend3.
tossspool.bat
Tossspool.bat — это специальный командный файл, который может располагаться в каталоге agents (а может и не располагаться — его отсутствие не создаёт проблем). Если файл существует, Тоссер запускает его в начале каждого цикла разбора почты. В этом файле могут вызываться любые программы, выполняющие любые операции над письмами. Собственно, он и предназначен для подключения нестандартных процедур обработки, отсутствующих в почтовом сервере Eserv. Единственное требование — все действия должны выполняться максимально быстро. Дело в том, что Тоссер ожидает завершения работы командного файла. Сам же Тоссер вызывается при каждом подключении почтовой программы к POP3-серверу Eserv и при каждом отключении почтовой программы от SMTP-сервера, причём каждый вызов Тоссера ожидает завершения предыдущего цикла. Если обработка будет длительной, это создаст сложности в работе пользователей.Вызываемые в командном файле программы могут выполнять сложную переадресацию сообщений, выборочное копирование писем в архив, подмену обратного адреса (что поделаешь, иногда требуется и такое). На сегодняшний день наиболее активно tossspool.bat применяется для антивирусного контроля проходящей почты. Пример реализации такой проверки приведён несколько ниже. Дополнительную информацию Вы найдёте в главе Готовые решения.
Командный файл tossspool.bat рекомендуется использовать совместно с подкаталогом mail\spool\to_check. Поскольку файлы сообщений создаются без всякой синхронизации с работой Тоссера, то, появись они в каталоге mail\spool, существует вероятность появления файла именно к моменту окончания работы tossspool.bat — это привело бы к пропуску важного этапа обработки. Создание файлов сообщений в отдельном каталоге гарантирует, что ни одно письмо не пройдёт через Тоссер без предварительной обработки.
Почтовый робот
Почтовый робот — это особый тип задания Планировщика. Для назначения робота определённому почтовому ящику необходимо создать задание с именем автоматизируемого ящика и типом Почтовый робот. При поступлении письма, адресованного данному пользователю, Планировщик будет запускать это задание. В командной строке задания можно использовать специальную макропеременную %MailFileName%, которая содержит путь к файлу с сообщением. Она предназначена только для почтовых роботов и неприменима в заданиях другого типа. Никаких других особенностей собственно почтовый робот не имеет — все сведения, приведённые в главе Планировщик, относятся к нему точно так же, как и к прочим заданиям.Зато свои особенности имеет Тоссер. Если среди получателей письма имеется хотя бы один почтовый робот, файл сообщения не удаляется из каталога mail\spool — робот сам должен удалить его. Более того, наилучший вариант обработки письма состоит в предварительном его перемещении в рабочий каталог, чтобы оно не попало в следующий цикл обработки — в отличие от командного файла tossspool.bat почтовый робот запускается не внутри цикла Тоссера, а как параллельное, одновременно выполняющееся приложение.
Также следует обратить внимание на тот факт, что почтовый робот запускается после того, как письмо будет помещено в почтовый ящик пользователя. То есть, почтовый робот в принципе не может не допустить попадания письма в почтовый ящик. Если перед Вами стоит именно такая задача, решать её следует на этапе предварительной обработки с помощью tossspool.bat.
Антиспам
Встроенная в почтовый сервер Eserv защита от мусорной почты (кратко именуемой спам) хоть и выполнена на очень простом уровне, но достаточно эффективна. Отсеивание писем выполняется на основании анализа адреса отправителя. Для этого используется помещённый в каталог mail файл, имя которого начинается на spammers — например, это может быть spammers.txt, spammers.ru.txt; при этом расширение .txt вовсе не обязательно — просто файлы с таким расширением автоматически открываются Блокнотом, что очень удобно для редактирования. Если подходящих файлов несколько, то используются все. В каждой строке файла записывается один почтовый адрес, при этом допустимы символы групповой операции * и ?. Знак вопроса означает один любой символ, звёздочка означает любую (в том числе и пустую) последовательность символов. Так, запись *@yahoo.com блокирует поступление почты от любого отправителя из почтового домена yahoo.com. Обнаружив совпадение, SMTP-сервер отвергает письмо. Если же отправляющая сторона оказывается настырной (некоторые инструменты для рассылки спама принципиально не реагируют на возникновение ошибок) или почта принимается из внешнего ящика по протоколу POP3 (то есть попадает на обработку минуя SMTP-сервер), то письма с заблокированных адресов перемещаются в каталог mail\loop.В дополнение к файлам spammers используются файлы friends, именуемые по тому же принципу — friends.txt, friends.au.txt, friends.mail.ru.txt; если таких файлов несколько, Eserv использует все. Это тоже текстовые файлы, в которых в каждой строке записывается почтовый адрес. Если SMTP-сервер или Тоссер обнаруживает адрес отправителя в одном из файлов группы friends, то сообщение считается дозволенным, и списки запрещённых адресов не анализируются. Такой механизм позволяет блокировать целые домены (тот же yahoo.com), сделав исключение для отдельных отправителей или поддоменов.
Совместно с Eserv можно также использовать специализированные спам-фильтры, например, POPfile.
Посмотреть обзор противоспамных программ.
Антивирусная защита
Поскольку электронная почта — самый распространённый на сегодня способ размножения вирусов, всякий уважающий себя почтовый сервер предлагает средства для анализа и блокировки вредоносных программ. Почтовый сервер Eserv предоставляет две возможности — подключение антивирусной проверки в качестве внешней процедуры через универсальный обработчик tossspool.bat либо проверку почты с помощью интегрированного в Eserv антивирусного ядра. Подробнее об использовании антивирусной защиты.Вернуться к содержанию