Extra Systems Mail Server

Описание настроек dat-файла


Наряду с файлом esms.ini , часть настроек почтового сервера ESMS содержится в файле esms.dat , описанию которого и посвящена эта страница. Файл esms.dat должен находиться в каталоге Windows - сервер ESMS ищет его только там, и ни в каком другом месте.

Файл esms.dat представляет собой обычный текстовый файл и читается сервером ESMS построчно. Каждая строка файла esms.dat представляет собой одну из нижеописанных команд, либо может содержать комментарии администратора почтового сервера. Часть строк может быть пустой, то есть вообще не содержать никакого текста (это может понадобиться для лучшей читаемости этого файла человеком). Строки, содержащие команды, состоят из ряда полей (количество полей зависит от команды). Поля команды разделяются символом двоеточия (":"). При чтении полей символы пробела и табуляции игнорируются, так что они могут использоваться администратором произвольно для повышения читаемости. Код команды всегда размещается в первом поле. Нераспознанные строки игнорируются (и, таким образом, рассматриваются сервером ESMS как комментарии). Если некоторая команда имеет по спецификации некоторое количество штатных полей, то администратор может добавить к ней (в конце той же строки) любое количество своих полей с комментариями - эти дополнительные поля не читаются сервером и ему не мешают.

Единицей учета в сервере ESMS является POP3-эккаунт. За исключением команды LAN (которая может находиться в любом месте), все прочие команды файла esms.dat размещаются блоками, относящимися к упомянутым POP3-эккаунтам. Началом такого блока является команда USER, концом - следующая команда USER или конец файла esms.dat. Все команды (кроме LAN), размещенные после очередной команды USER, описывают параметры данного клиента.

Рассмотрим теперь типичный блок файла esms.dat:

USER                    : ann                           :
PASSWORD                : hY98$(Mt9                     :
ADDRESS                 : grisha@array.com              :
RESEND INPUT            : ad4@sorry.com                 :
RESEND OUTPUT           : gh8@none.com                  :
KEEP INPUT RESENDED     : yes                           :
KEEP OUTPUT RESENDED    : yes                           :
Этот блок определяет клиента с POP3-логином "ann" и POP3-паролем "hY98$(Mt9". Команда ADDRESS (этих команд может быть в блоке множество) задает почтовый адрес (адреса - если команд ADDRESS несколько) тех сообщений, которые будут помещаться в ящик этого клиента. Команда RESEND INPUT (их тоже может быть в блоке более одной) определяет адрес, на который будет автоматически пересылаться почта, поступающая для данного клиента (на все множество его адресов, указанных в командах ADDRESS). При такой пересылке почта будет сохраняться в ящике, если команда KEEP INPUT RESENDED имеет параметр "yes", и не будет помещаться в сам ящик (а будет только пересылаться), если KEEP INPUT RESENDED имеет параметр "no". Если в блоке нет команды KEEP INPUT RESENDED, то сервер ESMS считает что она есть, и ее умолчательное значение равно "yes". Разумеется, блок может и не содержать команду RESEND INPUT, в этом случае входящая почта никуда не пересылается, а просто помещается в ящик клиента и может быть в любой момент получена по протоколу POP3. При отсутствии в блоке команды RESEND INPUT, команда KEEP INPUT RESENDED (при ее наличии) игнорируется. Абсолютно аналогично дело обстоит с командами RESEND OUTPUT и KEEP OUTPUT RESENDED, только они имеют отношение не к принимаемой данным клиентом почте, а к отправляемой ним по протоколу SMTP (с любым адресом отправителя, указанным в совокупности команд ADDRESS данного блока).

Итак:

  1. Каждый блок должен содержать по одной и только одной команде USER и PASSWORD (при этом не допускается совпадения логинов в различных блоках).
  2. Каждый блок должен содержать одну или несколько команд ADDRESS (при этом не допускается, чтобы один и тот же адрес содержался в разных блоках).
  3. Каждый блок может содержать (а может и не содержать) одну или несколько команд RESEND INPUT (при этом допускается повторение адресов в разных блоках). При наличии в блоке команды (команд) RESEND INPUT допускается наличие в том же блоке команды KEEP INPUT RESENDED (при ее отсутствии значение ее параметра трактуется сервером как "yes"). Команда KEEP INPUT RESENDED подается в пределах блока лишь однократно и действует одновременно на все адреса, указанные в командах RESEND INPUT.
  4. Каждый блок может содержать (а может и не содержать) одну или несколько команд RESEND OUTPUT (при этом допускается повторение адресов в разных блоках). При наличии в блоке команды (команд) RESEND OUTPUT допускается наличие в том же блоке команды KEEP OUTPUT RESENDED (при ее отсутствии значение ее параметра трактуется сервером как "yes"). Команда KEEP OUTPUT RESENDED подается в пределах блока лишь однократно и действует одновременно на все адреса, указанные в командах RESEND OUTPUT.

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

USER                    : goe                           :
PASSWORD                : hY42$(Mt9                     :
ADDRESS                 : clients-list                  :
MAIL LIST               : c:\data\clients.txt           :
KEEP INPUT RESENDED     : no                            :

Файл адресов для команды MAIL LIST может генерироваться любой внешней программой из базы данных ваших подписчиков. Рассылку из почтовой программы по этому списку необходимо прозводить через ESMS на адрес, указанный в директиве ADDRESS (в приведенном примере - clients-list). Для защиты вашего списка от спамеров рекомендуется указывать вымышленный адрес (как в данном примере).

Для обеспечения загрузки сообщений с другого POP3-сервера имеется команда DOWNLOAD, которая относится к тому блоку, в котором она расположена. Пример:

USER                    : goe                           :
PASSWORD                : hY42$(Mt9                     :
ADDRESS                 : me@host.ru                    :
DOWNLOAD : pop3.some.ru : 110 : hote : y789G            :

Данная команда производит загрузку сообщений в ящик goe с сервера pop3.some.ru:110 с логином hote и паролем y789G.

Команда LAN может размещаться в любом месте файла esms.dat и не относится ни к какому блоку. Команда LAN описывает сегменты локальной сети, которым разрешено через протокол SMTP отправлять почту на любые адреса. Все прочие IP-адреса, не описанные в команде LAN, могут отправлять почту через ESMS только для клиентов данного сервера (то есть только на те адреса, которые содержатся в какой-либо из команд ADDRESS). Администратору почтового сервера следует самым внимательным образом отнестись к этой команде, так как при ее ошибочном конфигурировании можно из ESMS сделать так называемый "open relay", в поисках которого множество спамеров непрерывно сканируют интернет. Помещая в команду LAN некоторую сеть вы тем самым принимаете на себя ответственность за всех клиентов данной сети, и при рассылке из нее спама вам, возможно, придется нести за это ответственность (неприятные объяснения с провайдером, и даже вплоть до отключения).

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

LAN	: 192.168.0.1 : 255.255.255.0 :
Данная команда описывает в качестве локальной сети адреса от 192.168.0.0 до 192.168.0.255, то есть содержит адрес сети во втором параметре, а маску сети - в третьем.

Для создания черных и белых списков предназначены команды:

Формат всех этих команд идентичен и допускает две формы: форму IP-адреса (точнее, сети) и форму e-mail адреса. Форма e-mail адреса такова:

GLOBAL BLACK SENDER : badboy@badserver.com :

Форма IP-адреса такова:

GLOBAL BLACK SENDER : 192.168.0.1 : 255.255.255.0 :

Указанные команды с префиксом GLOBAL относятся ко всему серверу в целом и могут размещаться в любом месте dat-файла. Команды с префиксом LOCAL относятся к тому блоку dat-файла, в котором они находятся. Допускается подавать множество команд любого типа (как для сервера в целом, так и в конкретном блоке). Подача команды с префиксом GLOBAL фактически эквивалентна множеству команд с префиксом LOCAL - по одной для каждого блока dat-файла. Из этого правила есть одно исключение: команды с префиксом LOCAL не действуют на клиентов LAN (в отличие от команд с префиксом GLOBAL, которые действуют всегда и на всех).

Команда BLACK SENDER в форме e-mail адреса препятствуют приему почты с указанного в ней адреса. Если такая команда подается с префиксом GLOBAL, то ни один клиент данного сервера не получит ни одного письма от такого адреса. Если же используется префикс LOCAL, то таких писем не будет получать лишь тот блок, в котором такая команда размещена. При использовании команды BLACK SENDER включается, таким образом, так называемый режим "черного списка".

Команда WHITE SENDER в форме e-mail адреса разрешает прием писем исключительно с того адреса, который в ней указан. Если такая команда подается с префиксом GLOBAL, то ни один клиент данного сервера не получит ни одного письма от адреса, не содержащегося в такой команде. Если же используется префикс LOCAL, то таких писем не будет получать лишь тот блок, в котором такая команда размещена. При использовании команды WHITE SENDER включается, таким образом, так называемый режим "белого списка".

Режимы "черного" и "белого" списков, заданные в форме e-mail адресов нельзя смешивать (поскольку это бессмысленно): должен быть включен лишь один из них (или не включено ни одного).

Использование команд в форме IP-адреса полностью аналогично только что описанному использованию команд в форме e-mail адреса, за тем лишь исключением, что смешивание режимов "черного" и "белого" списка в этой ситуации допускается. Например, может быть написано:

LOCAL WHITE SENDER : 192.168.0.1 : 255.255.0.0 :
LOCAL BLACK SENDER : 192.168.0.8 : 255.255.255.0 :

что приведет к тому, что данный блок сможет получать почту от всей сети 192.168.0.1/16 за исключением такой ее части как 192.168.0.8/24. Иными словами, в этом случае работает правило приоритетов: из всего набора подходящих диапазонов адресов принимается в расчет тот, у которого маска имеет наибольшую длину.

В заключение отметим, что все адреса, на которые должна приниматься почта, следует явным образом описать в командах ADDRESS. Сервер ESMS трактует любой не указанный в команде ADDRESS адрес как удаленный, то есть: пересылает в интернет почту для него, полученную от локальных клиентов, и отказывается принимать для него почту от удаленных (не описанных в команде LAN) клиентов. Исключением из этого правила является команда POSTMASTER:

POSTMASTER : mydomain.ru :

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


Made by Vendor