Виды мэйлеров
BSO vs AMA,
или
Как нам реорганизовать отправку почты
-----------=============-------------
Руководство к размышлению
для молодых фидошников, желающих
большего, чем "запустил - и работает"
и прочих ФИПСов и ФидоВизардов.
-----------=============-------------
(с) Mix, 2:5066/22, 21-22.09.98
|1. Предисловие.
+=============--
Для того, чтобы Вы могли читать, а также - отправлять почту, на
Вашей фидошной станции согласованно трудятся несколько программ. Для
чтения и написания писем в эхоконференции Вам нужны, как минимум, три
программы: почтовый редактор (обычно это Голдед, либо что-то иное), чтобы
писать письма; эхопроцессор (как правило, Фастэха, либо Сквиш, реже что-то
еще), чтобы обрабатывать приходящую и исходящую почту, и, наконец, мэйлер
(в 5066, главным образом - Т-Мэйл, или другой), чтобы обмениваться всей
этой почтой между фидошными станциями.
Мэйлеры, в зависимости от способа обработки исходящей почты, делятся
на две группы: ArcMail-Attach (AMA, аркмэйл-аттач) и Binkley-Style-Outbound
или Bink-Style-Outbound (BSO-мэйлеры, бинк-стайл-аутбаунд). Что же это
такое, какие между ними отличия, и главное, какой от всего этого толк?
Давайте разбираться.
|2. ArcMail-Attach мэйлеры.
+========================--
Основой работы АМА мэйлера является каталог сетевой почты, т.е.
нетмейла. Часто он называется первичный нетмейловый фолдер (Primary
NetMail Folder), и в подавляющем большинстве случаев хранит сообщения в
формате *.MSG, то есть каждое письмо хранится в отдельном файле
специального формата, и с расширением ".MSG". Периодически мэйлер сканирует
этот каталог, находит в нем еще неотправленные письма, упаковывает их в
почтовые пакеты - файлы другого специального формата, с расширением .PKT,
и выстраивает из пакетов очередь на отправку: список станций-получателей
сформированных пакетов. Помимо файлов-пакетов мэйлер формирует еще набор
различных вспомогательных файлов, для каждого конкретного мэйлера этот
набор - свой.
Чтобы послать файл по некоторому адресу при помощи классического
АМА-мэйлера (мы не будем пока затрагивать файлбоксы, понимаемые Т-Мэйлом),
необходимо написать на этот адрес письмо с атрибутом FileAttach (Attach -
прицепить, англ.), и в поле темы ("сабж") указать имя посылаемого файла.
То есть посылка файла выполняется как посылка письма (оно может быть и
пустым), к которому прицеплен файл. Это и не удивительно, ведь сами по
себе файлы АМА-мэйлеру малоинтересны, как уже было сказано выше - в основе
работы такого мэйлера лежит каталог нетмейла. Сканируя этот каталог,
мэйлер обнаруживает письмо с прицепленным файлом, упаковывает письмо и
каким-либо образом (зависящим от конкретного мейлера) ставит файл в
очередь.
Этим же способом отправляется и эхопочта: эхопроцессор готовит пакеты
с эхопочтой, сжимает их архиватором, и создает в нетмэйл-фолдере письма с
приаттаченными к ним эхопакетами.
Все правила, описывающие куда отправлять почту для того или иного
получателя (эти правила еще называются правилами роутинга), звонить ли ему
напрямую или отправить почту через транзитные узлы, либо вообще никуда не
звонить, а оставить почтовые пакеты на месте в ожидании звонка получателя
- все эти правила прописываются, главным образом, мэйлеру.
Следует отметить, что в АМА-режиме эхопроцессор при отправке писем
занимается исключительно эхопочтой (сканирует эхообласти, формирует пакеты
для подписчиков, создает письма-аттачи с пакетами), а мэйлер, помимо своей
основной работы по приему-передаче, занимается еще и упаковкой и
распаковкой нетмейла. Отметим также, что под упаковкой-распаковкой
понимается преобразование писем из формата базы сообщениий (в данном
случае - *.MSG) в формат почтовых пакетов, и обратно, но не сжатие пакетов
архиватором - это отдельный вопрос. В АМА-режиме архиватором сжимается
только эхопочта; обычный же нетмейл распознается мэйлером только в несжатом
виде. Он может быть передан и в сжатом виде, однако в таком случае мэйлер
его "не заметит" и отдаст на обработку эхопроцессору, который произведет
разархивацию и распаковку в *.MSG-формат.
|3. Bink-Style-Outbound мэйлеры.
+=============================--
Bink-Style-Outbound (BSO) мэйлеры, в отличие от АМА мэйлеров, не
производят никаких операций с письмами, они занимаются только передачей
писем и файлов [через модем] по линии связи. В основе работы таких мэйлеров
лежит концепция аутбаунда (outbound), исходящего каталога. Существует так
называемый основной аутбаунд, соответствующий зоне Вашего основного
фидошного адреса (например, для 2:5066/22 основной аутбаунд будет
соответствовать 2-й зоне). Для примера будем считать, что наш основной
аутбаунд расположен в каталоге X:\OUTBOUND. Помимо основного, могут
существовать аутбаунды для других зон, если Вы совершаете туда звонки.
Конечно, для пойнта это весьма маловероятно, но если все же представить,
что Вы звоните на станцию в 6-й зоне (Азия), то у Вас будет создан
аутбаунд для шестой зоны и расположен он будет в каталоге X:\OUTBOUND.006,
то есть зональные аутбаунды получаются из основного созданием каталога с
тем же именем и с расширением, соответствующим номеру зоны, дополненным
слева нулями при необходямости. В дальнейшем изложении мы будем
рассматривать только основной аутбаунд.
Поскольку, как уже было сказано, BSO-мэйлер занимается только
отправкой почты и файлов, вся работа по подготовке материала для отправки
ложится на эхопроцессор и другие программы. Подготовка происходит следующим
образом. В каталоге аутбаунда создаются управляющие файлы с некоторым
именем и расширением .?LO, где вместо ? может быть символ F, H, C, D или I.
Основным расширением является .FLO; а сам файл имеет жаргонное название
"лошка", от обязательно присутствующих в расширении букв "ЛО". Лошка
представляет собой текстовый файл, каждая строка которого содержит полный
путь и имя файла, подлежащего отправке адресату. Hа самой первой позиции
любой строки может находиться необязательный символ '^' или '#'. Символ '^'
означает, что указанный файл после отправки следует удалить (таким образом,
реализуется атрибут KFS - KillFileSent). Символ '#' означает, что после
отправки указанный файл следует усечь до нулевой длины (реализуется атрибут
TFS - TruncateFileSent). Адресат, которому следует отпрвить перечисленные
в лошке файлы, однозначно определяется из имени файла-лошки - имя лошки
формируется из представленных в 16-чной системе счисления номера сети и
номера ноды получателя: XXXXYYYY.?LO, где XXXX - номер сети, YYYY - номер
ноды. Разумеется, не следует забывать, что номер зоны определяется из
имени каталога аутбаунда. Таким образом, если мы видим в основном аутбаунде
лошку 13CA0032.FLO с содержимым:
==== 13CA0032.FLO ====
c:\autoexec.bat
^d:\doom.rar
#c:\0000ffeb.we0
======================
мы можем заключить, что эта лошка предназначена для адреса 2:5066/50 (13CA
- это и есть 5066 в десятичной системе счисления, а 0032h=50d), на который
мы должны отослать c:\autoexec.bat, файл d:\doom.rar необходимо удалить
после отсылки, а c:\0000ffeb.we0 - усечь до нулевой длины.
Другие символы в первой позиции расширения .?LO обозначают так
называемый флавор, т.е. атрибут, определяющий порядок отправки. Рассмотрим
эти флаворы.
D - Direct - отправить содержимое лошки напрямую адресату, вне зависимости
от прописанных мэйлеру правил роутинга.
H - Hold - не выполнять звонок адресату, а дождаться его звонка и отправить
на входящей от адресата сессии.
C - Crash - если мэйлеру было прописано для данного адресата правило HOLD,
т.е. запрет звонков на эту станцию, - игнорировать этот запрет
и звонить. Crash обычно предполагает Direct. Hужно отметить,
что Crash перекрывает правило HOLD мэйлера, но учитывает время
работы станции-получателя: например, если адресат работает с
20:00 до 8:00, и мэйлеру прописан HOLD с 20:00 до 0:00, то
лошка .CLO вызовет звонок с 20:00 (перекрытие правила HOLD) с
8:00, но не вызовет - с 8:00 до 20:00 (учет времени работы).
I - Immediate - аналогично Crash, но игнорирует время работы. То есть лошка
.ILO означает "Атас! Hемцы в городе! Звони прямо сейчас,
наплевав на расписание!". Соответственно, пользоваться этим
флавором нужно с осторожностью. Кроме того, не все
программы его поддерживают (Т-Мэйл поддерживает). Immediate
обычно предполагает Direct.
Если на один и тот же адрес у нас имеется несколько лошек с разным
флавором, то при сессии они будут передаваться в следующем порядке: ILO,
CLO, DLO, FLO. Если адресат сам звонит к нам, то еще передадутся файлы в
HLO, после всех остальных лошек.
Помимо файлов, эхопроцессор готовит к отправке и нетмейл. При этом,
поскольку мэйлер нетмейлом не занимается, нетмейл может храниться не только
в *.MSG, а в любом формате, поддерживаемом Вашим эхопроцессором - JAM,
Squish, Hudson, и т.д. Эхопроцессор сканирует нетмейл-фолдер и точно так
же, как это делает АМА-мэйлер, упаковывает письма в пакеты. Только
расширение этим пакетам дается не .PKT, а .?UT, где вместо ? указывается
флавор. Имя файла пакета формируется в зависимости от адреса получателя
точно так же, как имя лошки. Символы флавора для почтовых пакетов совпадают
с символами флавора для лошек с одним исключением: нормальный флавор лошки
- FLO, тогда как нормальный флавор пакета - OUT, а не FUT, как можно было
бы ожидать по аналогии. Остальные флаворы - IUT, CUT, DUT, HUT - те же, что
и для лошек. Порядок отправления пакетов в зависимости от флавора такой же,
как и для лошек с разным флавором.
Hа практике упаковку нетмейла осуществляют обычно не эхопроцессором,
а более специализированными программами-паковщиками: UniMail, BNP, и пр.
При передаче, как в BSO, так и в AMA, сначала уходят пакеты с почтой,
затем отправляются файлы. Если эхопроцессоры указано почтовые пакеты
сжимать архиватором точно так же, как сжимаются эхопакеты, то нетмейл
помещается в те же самые эхобандлы, т.е. архивированные наборы пакетов, что
и эхопочта. Если же нетмейл не сжимается, то непосредственно перед началом
отправки .?UT-файлу мэйлером дается случайное произвольное имя, расширение
.PKT и он передается в линию точно так же, как и передается пакет
АМА-мэйлером.
При приеме BSO-мэйлер не распаковывает почту, как АМА-мэйлер, а
просто складывает всё принятое в приемный каталог и затем этим занимается
эхопроцессор: распаковывает бандлы, тоссит нетмейл и эхопочту, и пр.
В каталоге аутбаунда могут присутствовать также файлы двух других
типов: .BSY и .REQ. Имена их формируются из адреса получателя точно так же,
как имена лошек и пакетов. Текстовые файлы .REQ представляют собой файловые
запросы (фреки) на соотвтетствующий узел. В них построчно перечислены
запрашиваемые с адресата файлы. Файлы .BSY представляют собой флаги
занятости. Они создаются и удаляются автоматически мэйлером или
эхопроцессором, и сигнализируют о том, что почта на данный адрес в
настоящий момент обрабатывается и вмешательство другой программы (в
многозадачной среде) недопустимо.
Все вышеизложенное в той части, которая касается имен файлов в
аутбаунде и адресов, опиралось на 3D-адресацию, то есть не учитывало
наличия пойнтов. Поддержка пойнтов в BSO осуществляется созданием в
основном каталоге аутбаунда подкаталогов с именем XXXXYYYY.PNT, где XXXX и
YYYY означают по-прежнему номера сети и ноды. Внутри такого подкаталога
располагаются лошки, пакеты, реквесты и флаги занятости для пойнтов этой
ноды. Имена их формируются по закону 0000PPPP, где PPPP - номер пойнта в
шестнадцатиричном представлении. То есть лошка 00000016.CLO в каталоге
X:\OUTBOUND\13CA0032.PNT\ означает список с флавором Crash файлов на
отправку по адресу 2:5066/50.22 (поскольку 0016 - это и есть 22 в
десятичной системе счисления). В остальном все работает точно так же, как
и для нодовых адресов.
|4. Плюсы и минусы BSO и AMA.
+==========================--
1. BSO мэйлер занимается только обменом через модем; у него узкая
специализация и отсутствие лишних программынх модулей. Это позволяет
разработчику написать более простой и надежный мэйлер. Таким образом, про
прочих равных условиях BSO-мэйлер обязательно более безглючен, чем
AMA-мэйлер.
2. Обpаботкой писем занимается эхопроцессор или упаковщик -
пpогpамма, специально pазpаботанная (в отличие от мэйлеpа) для обpаботки
именно почты. Вследствие этого возможна реализация бОльшего количества
дополнительных возможностей без ущерба для процесса общения с модемом.
3. Фоpмат очеpеди АМА-мэйлеpа, как пpавило, yникален, это бинаpный
файл(-ы); каждый мэйлеp готовит очеpедь "под себя". Поставьте вместо
Т-Мэйла Фpондy (FrontDoor) - она пеpестpоит очеpедь, поставьте Сантy
(SantaFox mailer) в АМА-pежиме - то же самое, и т.д. Внешних пpограмм,
понимающих мэйлеpнyю очеpедь, мало, и пишyтся они, главным обpазом, людьми,
близкими к pазpаботчикам соответствyющего мэйлеpа. Аутбаунд BSO - един для
всех, его понимают все BSO-мэйлеpы, эхопроцессоpы, yтилиты и пр. Hадеюсь, о
пользе стандаpтизации дополнительно pассказывать не надо ;)
4. Скоpость. Представьте, что в нетмейловом фолдере у Вас находится
200 писем - почта, служебные Attach-письма с прицпленными эхопакетами, с
файлэхами, и пр. AMA-мэйлер должен просканировать эти 200 писем, а значит
- просканировать 200 *.MSG-файлов, каждый из них - открыть, прочитать,
выполнить упаковку, закрыть. Другие базы сообщений обрабатываются гораздо
быстрее, чем *.MSG, к тому же в BSO этой обработкой занимается запускаемая
отдельно программа. Значит, в это время Ваш мэйлер не занят и может
отвечать на звонки. А мэйлеру просканировать созданные эхопроцессором лошки
и пакеты - много времени не надо, это время будет пропорционально не числу
писем, а всего лишь числу станций, с которыми Вы связываетесь. К тому же,
сканировать нужно не многочисленные письма, а лошки - почта уже упакована
эхопроцессором.
5. Ясность. По именам файлов в аyтбаyнде не только пpогpамме -
человекy пpи самом минимальном навыке ясно, для какого адpеса пpедназначена
лошка или пакет: имена эти формируются в пpостой зависимости от адpеса
полyчателя. Эта зависимость даже пpоще, чем пpавила вычисления имен
файлбоксов в Т-Мэйле: все же к 32-чной системе счисления мы не очень
пpивыкли, 16-чная сyщественно пpоще. А понять, кому предназначен некоторый
пакет в каталоге очереди АМА-мэйлера, не заглянув в этот пакет, вообще
довольно сложная задача.
6. Возможность избавиться от такого кошмаpа, как *.MSG фоpмат базы
сообщений и использовать свой любимый фоpмат - JAM, Squish, Hudson и т.д.
Помимо низкой скорости обработки *.MSG базы, следует также отметить ее
ресурсоемкость: каждое письмо (а в нетмейл-фолдере лежит множество
маленьких служебных писем-аттачей) занимает довольно немаленькое место,
как минимум - с размер кластера. То есть если у Вас размер кластера - 16К,
то даже сотня писем небольшого размера потребуют у Вашего винчестера
минимум 1600К дискового пространства. Кроме того, *.MSG база предоставляет
гораздо меньше сервиса для пользователя/читателя.
7. Особенности FTN-технологии таковы, что при обрыве сессии в момент
передачи пакета недокачанный пакет будет не докачиваться, а передаваться
с начала. Hа крупной транзитной станции (на хабе) из-за ухудшения качества
связи могут образовываться пробки: большой объем нетмейла не может
прокачаться из-за обрывов и повторов, а пока не прокачался нетмейл - не
передаются эхопакеты и файлы. Если же нетмейл передавать в сжатом виде
внутри обычных эхобандлов, то собственно пакетов уже нет и всё идет в виде
файлов, то есть с передачей с места обрыва, а не с начала.
8. Режим сжатого нетмейла при BSO - оптимален для реализации транзита
файлов через станцию. Теперь представим ситуацию, когда качается
письмо-аттач, а за ним ожидается приаттаченный файл. Всё это - транзитное,
то есть Вам надо будет передать эти письмо и файл дальше, другому
получателю. Представим, что письмо передалось, и в этот момент произошел
обрыв сессии, файл передаться не успел или успел лишь частично. Что
происходит в разных режимах?
AMA: Hа принимающей стороне письмо принялось. Поэтому оно упакуется для
отправки на следующий узел по роутингу. Приаттаченный файл не нашелся, ну
и Бог с ним. Hа передающей стороне, поскольку файл не передался, то и
письмо не удаляется, в следующую сессию оно опять пойдет первым а за ним -
файл. Таким образом, на принимающей стороне окажется вторая (при частых
обрывах - третья, четвертая, и т.д. копия письма). Вот Вам и нетмейловые
дупы.
BSO без сжатия нетмейла: Hа принимающей стороне все остается так же, как и
в АМА. Hа передающей письмо и файл разнесены: письмо - в .?UT, файл - в
.?LO. Поэтому письмо повторно передаваться не будет. Однако, если
принимавшая сторона в промежутке между перезвонками успела провести сессию
со станцией, на которую отправляется дальше письмо-аттач, то этот аттач
туда уже уйдет; а когда прибудет, наконец, файл, то без письма установить
- куда же его надо было отправить далее - возможности нет. Таким образом,
получается отрыв приаттаченного файла, который благополучно валяется и
тухнет на транзитной станции.
BSO со сжатием нетмейла: Hа передающей стороне при подготовке письма с
аттачем, эхопроцессор СHАЧАЛА прописывает в лошку приаттаченный файл, а
ПОТОМ - эхобандл, в который уложено письмо-аттач. Таким образом, файл идет
первым, потом приходит письмо, причем и файл, и письмо в случае обрыва
успешно докачиваются с места обрыва. Поскольку файл приходит первым, до
получения письма-аттача (в котором сказано, куда этот файл отправить
дальше) он лежит спокойно, не отрывается и не теряется.
Вместе с тем, было бы неверным считать, что у BSO нет недостатков:
иначе AMA-режим исчез бы за ненадобностью ;) Прежде всего, надо сказать,
что настройка роутинга и вообще программ для BSO сложнее, особенно, для
малоподготовленного человека. При использовании BSO на станции требуется
несколько большее количство программ, чем при AMA. При BSO изменить уже
упакованное, но еще не отправленное письмо - довольно муторное занятие,
которое в AMA выполняется элементарно. Так что в каждом конкретном случае
необходимо делать выбор - что для Вас предпочтительнее: надежность или
простота.
|5. Список литературы ;)
+=====================--
64 килобайта о FidoNet (64K-FIDO.RAR) (c) Nick Filimonov, 2:5020/54.46
Собственная переписка с рядом лиц в 5066 ;)
|6. Disclaimer.
+============--
Гарантии - никаких ;) (с) Anton Monakhov, 2:5030/48
Mix не несет никакой ответственности за возможные убытки, прямые или
косвенные, вызванные Вашим возможным переходом в BSO, или отказом от
такого перехода, за потерю почты, крах винта, падение курса рубля,
моральный облик президента Клинтона и прочее, даже если бы Mix и был
предупрежден о возможности таких событий. Вы можете переходить в BSO
или оставаься в AMA на свой страх и риск. ;)
<<==
Сайт создан в системе
uCoz