T-mail

13.Почтовые ящики

Персональные почтовые ящики для нетмэйла

Именные персональные почтовые ящики

Адресные персональные почтовые ящики

Работа с почтовыми ящиками

Файловые адресные почтовые ящики

 

Персональные почтовые ящики для нетмэйла

Довольно часто мэйлеры используются совместно с почтовыми роботами, т.е. программами, которые обрабатывают письма к ним. Часто используются роботы типа AreaFix, Filefix и им подобные.

Традиционно совместная работа строится так: мэйлер по окончании сеанса связи, распаковав почту, запускает последовательно несколько роботов, которые сканируют каталог для почты и забирают оттуда "свои" письма.

Этот вариант возможен и в T-Mail, поскольку можно определить процесс для обработки пришедшей почты (Process Netmail).

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

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

Для таких операций с почтой в T-Mail введено понятие MailBoxes, или персональных почтовых ящиков. Персональные почтовые ящики могут быть двух типов: именные и адресные.

Именные персональные почтовые ящики

При совпадении имени адресата с именем владельца почтового ящика или с заданной для этого ящика маской (и если при этом письмо адресовано на один из адресов вашей системы) T-Mail перемещает письмо в каталог, определенный для него. Когда же в этом каталоге появится ответ (в виде письма) от "хозяина" этого почтового ящика, T-Mail перенесет его в основной каталог для почты и отправит по назначению. Этими действиями можно управлять, например, задав только перенос в ящик, но запретив перенос ИЗ ящика.

Имя владельца почтового ящика не может начинаться с точки, цифры и символа косой черты '/' (в этом случае оно будет считаться адресом).

Адресные персональные почтовые ящики

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

Работа с почтовыми ящиками

Список почтовых ящиков задается в файле t-mail.ctl.

Синтаксис:

MailBox [(<flash>)] <owner><direction><directory> [<address>] [|<action>]

Каждая строка содержит имя или адрес "особого" адресата, следом следует знак '=', '<-' или '->' (<direction>), определяющий направление передачи почты, после него - каталог для этого адресата и (необязательно) - адрес, если есть желание изменить адрес назначения. Можно так же указать имя программы (или командного файла), которая будет выполнена в случае, если в соответствующий почтовый ящик что-то попало. Вместо такой программы может быть указано одно из ключевых слов, допустимых при выполнении процессов (см. описание переменных Process в t-mail.ctl). Строку может предварять индикатор flash (в круглых скобках). Подробно синтаксис переменной MailBox описан в файле t-mail.ctl.

При упаковке почты T-Mail наряду с почтовым каталогом просматривает и MailBoxes. Если там появилось новое письмо (например ответ от mail-робота) то оно будет перемещено в почтовый каталог и упаковано для отправки. Первыми обрабатываются адресные, а потом именные почтовые ящики.

Пример (t-mail.ctl):

MailBox Ivan Pupirin =═════ c:\t-mail\mail5030/15.99| echo Vanya! Wake up!

MailBox /15.1 ══════ ═══════=══════ c:\t-mail\mail/15.4

MailBox (X) /15.13═════ √>═════ c:\t-mail\mail\13mail/15.0

MailBox FileFix ═══ ══════=══════ c:\filefix\| c:\filefix.bat -Scan -Toss

MailBox AreaFix ═══════=══════ c:\areafix\

MailBox 5030/15.43 ════=══════ c:\t-mail\mail\junkmail | !echo JunkМail received

MailBox Andy Elk* ═══=══════ c:\t-mail\mail\elkmail

MailBox Moderator * =══════ c:\moder | del c:\moder\*.msg

В первых двух примерах в качестве каталога указан выходной каталог для почты самого T-Mail. Очевидно, в этом случае письмо будет просто переадресовано на новый адрес. Этот метод может использовать "удаленный SysOp" для получения своей почты.

При такой переадресовке в почтовый каталог следует обязательно изменить адрес назначения, в противном случае есть опасность "зациклить" T-Mail на этом письме.

Если имя пользователя определено как UUCP, то кроме писем, адресованных "пользователю" UUCP, в почтовый ящик попадут письма, в поле 'To:' которых встречается символ @, характерный для UUCP адресов. Кроме того, такой ящик обладает еще одной особенностью: письма ИЗ этого ящика в основной почтовый каталог передаются только в том случае, если в поле 'To:' этих писем нет символов '@'. Исключение: все это не относится к письмам, у которых символ '@' в поле 'To:' находится в первой позиции.

При задании имени пользователя можно использовать маски (с символами "*" и "?", по аналогии с масками файлов).

При запускеT-Mail создает недостающие каталоги дляпочтовых ящиков.

Файловые адресные почтовые ящики

В отличие от MailBoxes, предназначенных для того, чтобы разбирать приходящую почту, FileBoxes (файловые адресные почтовые ящики) служат для оптимизации выходного потока. Обычно, для того чтобы послать файл на некоторый узел, оператор должен создать письмо с соответствующим атрибутом (fileattached). Это письмо, помимо того, что дает информацию упаковщику о необходимости включить файл в очередь, служит целям маршрутизации - ведь сам файл (произвольный) не содержит информацию об узле назначения. Однако, на практике, большинство файлов пересылаются прямо на узел назначения, не подвергаясь никакой маршрутизации. Так, например, файлы, содержащие эхопочту, всегда пересылаются напрямую.

В таких случаях необходимость в сопроводительном служебном письме отпадает, при условии, что можно каким-то образом сообщить мэйлеру о адресе назначения. В некоторой степени эту проблему решают FileBoxes. Идея такова: каждому адресу может быть поставлен в соответствие файловый каталог, который считается его FileBox-ом. Если установлена связь с этой системой, T-Mail отправит все файлы из этого каталога и удалит их. Кроме того, будут отправлены системе и затем удалены файлы, которые находятся в файлбоксах для его AKA. Таким образом, чтобы дать задание T-Mail послать файл на некую систему, достаточно скопировать его в соответствующий FileBox.

ВНИМАНИЕ: при использовании файловых ящиков вводятся следующие ограничения на адреса систем, для которых эти ящики создаются:

zone- от 1 до 1023

net══ - от 1 до 32767

node- от 0 до 32767

point - от 0 до 1023

Файловые ящики для систем с иными значениями элементов адреса не создаются и не анализируются.

T-mail анализирует наличие файлов (и их размер) в файловых ящиках в конце цикла ожидания вызова (с интервалом, заданным в переменной Circle или Scan_Circle в t-mail.ctl). Эти данные используются для формирования очереди. Каждому адресу соответствуют 2 файловых ящика, имена которых предопределены. Один из них является "активным", то есть наличие файлов в нем заставляет t-mail попытаться вызвать систему с этим адресом, другой же - "неактивен" (hold filebox). Из "неактивного" файлового ящика файлы передаются только в том случае, если узел-владелец этого ящика вызвал вашу систему сам. Это аналогично использованию атрибута Hold в служебных письмах, сопровождающих пересылку файла (fileattached).

Имена "активных" и "неактивных" fileboxes отличаются последней буквой расширения. Например, для одного и того же адреса имена каталогов-fileboxes будут выглядеть так:

1234567.01════════════ - "активный" filebox

1234567.01H═════════ - "неактивный" (hold) filebox.

Поскольку FileBox привязан к соответствующему адресу, его имя "вычисляется" из адреса узла. Корневой каталог для FileBoxes задается переменной FileBoxes в t-mail.ctl:

FileBoxes c:\t-mail\files\boxes

Если эта переменная не определена, то файловые адресные ящики не обрабатываются.

В этом каталоге T-Mail ищет подкаталоги, имена которых вычисляются из адреса zone:net/node.point по следующей схеме (если значение переменной FileBoxesLongNames No):

zznnnfff.ppx

где

zz - 32-ричное представление zone,

nnn - 32-ричное представление net,

fff - 32-ричное представление node,

pp - 32-ричное представление point.

x - если этот почтовый ящик "активный", то пусто,

а если он "неактивный" (hold), то символ H.

Например, для адреса 2:5030/100.1 каталог будет иметь такое имя:

c:\T-Mail\filebox\024T6034.01

Более детально механизм вычисления имен описан в T-Mail API. Отметим лишь, что 32-ричное представление - это представление числа символами 0-9, A-V по основанию 32.

Если же переменная FileBoxesLongNames имеет значение Yes, то имена файловых ящиков формируются по иной схеме (только в версиях T-Mail для OS/2 и Windows NT):

<fileboxes directory>\<zone>.<net>.<node>.<point>[.H]

где<zone>, <net>,<node> и══ <point> -соответственные частиадреса, а суффикс ".H" добавляется в том случае, если файловый ящик - неактивный.

Например:

C:\FILEBOXES\2.5030.15.0 ═══════════════ ; default filebox for 2:5030/15

C:\FILEBOXES\2.5030.14.2.H ═══════════ ; default HOLD filebox for 2:5030/14.2

C:\FILEBOXES\4.567.1.0 ═══════════════════ ; default filebox for 4:567/1

Для T-Mail неважно, существует ли на диске каталог почтового ящика или нет. Если он существует и в нем есть файл(ы), то они будут отосланы и удалены. Пустые каталоги T-Mail удаляет после очистки, с тем, чтобы сократить время сканирования файловых ящиков. Если вам необходимо, чтобы пустые файловые ящики не удалялись, можно просто создать в каталоге этого ящика пустой подкаталог или скрытый файл (файл с атрибутом hidden). В этом случае файловый ящик удален не будет.

Наличие файлов с ненулевой длиной в активном файлбоксе (так же, как и наличие писем с attached files) является поводом вызвать соответствующий узел.

Кроме задания имен каталогов "по умолчанию", можно явно поставить в соответствие адресу дополнительный файловый ящик. Это делается заданием параметра BOX с именем каталога в файле subst.lst (см. "Файл подстановок"). В этом случае этот каталог будет дополнительным файловым ящиком для этого адреса. Его отличия от "активного" файлового ящика по умолчанию:

  1. каталоги, заданные в subst.lst (они имеют произвольные имена) не удаляются в случае, если они пусты;
  2. дополнительные файловые ящики не сканируются при определении объемов трафика для систем в очереди мэйлера, и наличие файлов в таких ящиках не является поводом для осуществления вызова соответствующей системы.

Рекомендуется избегать создавать свои собственные каталоги по пути, совпадающем с <FileBoxes>. T-Mail может принять ваш каталог за filebox, соответствующий какому-либо адресу со всеми вытекающими последствиями.