Обнаружив в фолдере письмо, ArcMail-Attach мейлер преобразует его в почтовый пакет (имеющий расширение .PKT) и переносит этот пакет в специальный каталог пакетов, называемый аутбаундом. Hеобходимость в таком преобразовании обьясняется тем, что письма, за редким исключением, не передаются напрямую адресату, а проходят по цепочке из нескольких станций. При этом каждая станция сама определяет на основании плана маршрутизации сетевой почты (netmail routing scheme) на какой узел следует передавать письма для указанного в заголовке письма адресата.
Поскольку заголовки писем не могут модифицироваться (будет потеряна информация об адресе истинного получателя), письма преобразуются в пакеты, в заголовке которых указан адрес отправителя пакета (не совпадающий в общем случае с адресом автора письма) и адрес получателя пакета (также не равный в общем случае адресу получателя). Hапример, если почта от 157.49 предается на 54.46 таким образом :
/157.49 —> /157.0 —> /1.0 —> /54.0 —> /54.46
то на этапе (/1 —> /54) пакет будет адресован от /1 для /54, хотя фактический отправитель и получатель имеют другие адреса.
Пакет может содержать несколько писем, общей особенностью которых является их текущая маршрутизация. Hа следующем узле будет действовать уже другой план роутинга, и письма могут быть упакованы в разные пакеты.
Помимо обычных писем, аркмейл-аттач мейлеры способны понимать также некоторые спициальные письма — так называемые файл-аттачи (fileattach) или просто «аттачи». Файл-аттач представляет собой обычное письмо, имеющее особый атрибут (F/a — File/Attach) и содержащее в поле темы имя передаваемого файла.
При обнаружении такого письма мейлер ищет соответствующий файл по указанному в поле темы пути и имени, и, обнаружив его, упаковывает письмо в почтовый пакет. При передаче этого письма будет передан также и файл, который данное письмо описывало. При этом считается, что файл прикреплен (приаттачен, Attached) к письму.
Помимо обычных аттачей, мейлеры класса ArcMail-Attach имеют особый вид аттачей — ArcMail-Attach письма. Эти письма создает эхопроцессор при создании ArcMail-пакета для заданного адреса. Такое письмо отличается от обычного аттача тем, что написано от «магического» имени робота «ArcMail». При нахождении письма от этого робота мейлер не создает .PKT файла, и передает при установлении соединения только сам файл с ArcMail-пакетом.
Binkley-style мейлеры.
Для мейлера типа BinkleyTerm одним из основных отличий от ArcMail-Attach является тот факт, что такой мейлер никоим образом не работает с письмами. Таким образом, вместо NetMail-фолдера в Binkley-style мейлерах используется понятие аутбаунда (outbound). Для каждой из зон, в которые станция отправляет письма и файлы, создается специальный каталог (аутбаунд).
Для каждого адреса, на который должна быть отправлена почта создаются особые файлы с уникальным именем (шестнадцатиричная запись 3D-адреса узла) и расширением .?LO, задающие флавор (атрибут, flavour) для данного адреса, а также содержащие указания мейлеру на передачу тех или иных файлов в виде путей. Первая буква расширения задает флавор. Для нетмайла создается аналог файла .PKT — ?UT. Все эти манипуляции осуществляются не мейлером, а отдельной утилитой, либо эхопроцессором.
При посылке почты мейлер типа BinkleyTerm передает соответствующий файл с неупакованной сетевой почтой (.?UT), в виде файла .PKT, образовав имя .PKT файла непосредственно в момент начала передачи. Таким образом, при обрывах связи с последующим перезвоном .PKT файлы имеют уже другие имена, а следовательно принимаются не с места обрыва, а заново.
Поскольку в восьмисимвольном поле имени файла DOS невозможно разместить 4D-адрес в шестнадцатиричной форме, для адресов назначения, являющихся поинтами создаются отдельные подкаталоги аутбаунда. Такие подкаталоги имеют шестнадцатиричные имена соответствующие адресу босс-ноды (т.е. 3D-адресу) и содержат файлы .?UT и .?LO с шестнадцатиричным номером поинта.
Для нормальной работы с Binkley-Style мейлером должен использоваться упаковщик сетевой почты, который будет преобразовывать письма в .?UT файлы. Чаще всего используются IMBINK и BPACK.
Распаковка приходящей почты осуществляется в этом случае эхопроцессором. Мейлер лишь передает почту и файлы из аутбаундов и принимает входящие пакеты и файлы в каталоги, называемые инбаундами.
Мейлеры типа BinkleyTerm поддерживают три инбаунда — для неизвестных систем, для известных систем и для систем, имеющих пароль на связь с данным узлом. Под неизвестной системой здесь и далее подразумеваются такие системы, информация о которых отсутствует в нодлисте/поинтлисте. Заметим, что схему трех инбаундов поддерживают не все эхопроцессоры.
Специальные виды писем.
Помимо рассмотренных выше обычных и аттачевых писем, существуют еще и другие письма, называемые обычно файловыми запросами (файл-реквестами, фреками filerequest, FREQ) и запросами на обновление (апдейт-реквест, update-request, UpdREQ).
Существуют несколько типов файловых запросов, которые реализованы и поддерживаются различными мейлерами. Вы можете узнать из нодлиста, какой тип файл-реквестов поддерживает станция, если обратите внимание на флажки, начинающиеся с X (XA, XX, …). Подробная информация о том, какие мейлеры поддерживают те или иные типы файл-реквестов Вы можете узнать из Приложения, или поглядев на таблички в конце полного ноделиста. Подробная разница между Bark и WaZoo файл-реквестами лежит за пределами данного руководства. Каждый может получить эту информацию из стандартов сети FIDONet, список которых приведен в приложении.
Файл-реквест представляет собой письмо, со специальным атрибутом (Frq) и именами запрашиваемых файлов в поле темы (subj). Вы можете запросить столько файлов, сколько имен влезает в строку subj (ее длина 72 символа), однако следует помнить об ограничениях на время, размер и число файлов для одного файлреквеста. Hе следует злоупотреблять символами диких карт (wildcards), благо порой от этого проистекают нежелательные результаты (так, запросив у FD 2.20 файл с именем *BG*.* вы рискуете получить в ответ случайное количество случайных файлов).
Лимиты на файл-реквест определяются несколькими факторами :
— скоростью соединения
— известностью Вашей системы (наличием Вас в нод/поинтлисте)
— наличием у Вас пароля на связь с данным узлом
— наличием критических событий в планах удаленного узла
— уже израсходованным Вами временем/ресурсами в этом месяце
Следует помнить, что при наличии пароля на сессию с данным узлом, файл-реквест также должен иметь пароль, совпадающий с паролем на сессию.
Большинство разумных мейлеров имеют возможность задавать ограничение для числа/размера/времени для файлреквеста за сессию/день/неделю/месяц. Будьте внимательны при запросе файлов, старайтесь не превышать лимитов.
Апдейт-реквест представляет из себя файлреквест на уже существующий файл, который будет удовлетворен, если дата/время такого же файла на станции с которой производится реквест более свежая, чем имеющаяся.
Виды сессий.
Под сессией дальше будем понимать процесс установления связи между двумя мейлерами после физического соединения двух модемов. Для обнаружения присутствия мейлера на другом конце провода или определения звонка терминалом пользователя ББС используются различные протоколы сессий.
Hаиболее популярными в настоящее время являются протоколы EMSI (емзи, емси, сокр. от Electronic Mail System Interface). Различают оригинальный протокол EMSI, применяемый при связи двух роботов-мейлеров, и интерактивный протокол EMSI (IEMSI — Interactive EMSI), используемый для более удобной связи с ББС с помощью терминала. Мы будем рассматривать лишь первый из них.
Помимо EMSI, существуют также протоколы YooHoo и другие. Эти протоколы использовались старым программным обеспечением, и в настоящее время поддерживаются только для совместимости.
После установления физического соединения станция, ответившая на звонок, обычно посылает в линию строку идентификации мейлера (introduction), которая может содержать информацию о сетевом адресе и предложение для пользователей ББС нажать ESC-ESC. За этим обычно следует передача специальной последовательности символов, называемой EMSI-запросом (EMSI_REQ). Станция послыает эти запросы в течение определенного времени, и, не получив ответа, или получив ESC-ESC переходит в режим вызова ББС или вешает трубку, если ББС недоступна.
Звонящий узел аналогичным образом передает приглашение на EMSI-сессию (EMSI_INQ). После выяснения обоюдной поддержки EMSI станции обмениваются EMSI_DAT пакетами и приступают к передаче файлов. Детали реализации протоколов EMSI и IEMSI описаны в стандартах сети FIDONet (FSC-0056).
Установление связи между двумя узлами вышеописанным образом называется EMSI-handshake (емси-хэндшейк)
Пароли на сессию.
Этот вопрос включен в рассмотрение ввиду распространенности проблем с соединением при ошибках в задании паролей.
Прежде всего, имеет место следующая таблица :
Звонящий узел | Отвечающий Узел | Сессия
пароль | вид сессии пароль | вид сессии
нет непарольная нет непарольная +
есть парольная нет непарольная ? *)
нет — есть — —
есть парольная есть парольная + (пароль совпал)
есть — есть — — (несовпал)
* — зависит от мейлера и его настроек.
Пароль проверяется на этапе EMSI-handshake. Запомните, что несмотря на то, что многие мейлеры позволяют использовать пароли произвольной длины (например, T-MAIL), большинство все же придерживаются ограничения в 8 символов. Если предъявленный пароль окажется длиннее имеющегося сессия не будет установлена.
При ошибке пароля звонящий мейлер не получает никаких уведомлений о неправильности пароля. Происходит разрыв соединения по потере несущей. То есть имеется принципиальная возможность звонить на узел до тех пор, пока он не попадет в undialable по числу безуспешных звонков.
Поскольку файл-реквесты как правило обслуживаются самим мейлером, то пароль на файл-реквест должен совпасть с паролем на сессию.
Эхопроцессоры.
Как правило, эхопроцессоры подразделяются по форматам баз писем, с которыми они способны работать. Существуют следующие форматы баз :
— другие форматы.
Для успешной обработки писем эхопроцессоры и редакторы используют механизм указателей на последнее прочтенное письмо (Lastread Pointers). Для каждого пользователя станции хранится номер последнего прочтенного им письма в каждой области. Таким образом вместо полного просмотра всей базы тоссеру или редактору достаточно исследовать еще непрочтенные письма. Это позволяет в частности организовать быстрый поиск личной почты при входе пользователя на BBS.
Как правило в эхопочте ведутся дискуссии (за исключением конференций, где дискуссии запрещены). Для того, чтобы иметь возможность просмотреть ответы других участников конференции на заинтересовавшее Вас письмо, существует другая функция эхопроцессора — построение (или связывание) цепочек вопрос-ответ (Reply Chains Linking). Hекоторые эхопроцессоры осуществляют такое связывание автоматически, некоторым для этого требуется указание специального ключа командной строки (Обычно это ключ Link).
Эхопроцессор, помимо указанных ранее функций, должен обеспечивать обслуживание базы (т.н. удаление писем (purge) и упаковку базы (pack)). Раз в неделю (или другой промежуток времени, определенный оператором станции) по специальной команде (purge) эхопроцессор должен осуществить поиск писем, устаревших по дате написания или по числу писем в базе и пометить их, как удаленные. Затем (по команде pack) удаленные письма физически удаляются из базы.
Активация эхопроцессора для распаковки и упаковки почты, обслуживания базы и т.д. обычно осуществляется мейлером, который самостоятельно, согласно определенным оператором правилам, вызывает соответствующие .BAT файлы.
Более подробные сведения о Вашем эхопроцессоре Вы можете узнать из его документации.
Как все это работает ?
Большую часть времени станция обычно находится в состоянии ожидания звонка или события. События определяются конфигурацией событий мейлера. Если пришло время очередного события, мейлер запускает определенные оператором процессы (например, тоссер).
Как правило, основным событием, возбуждающим исходящий звонок, является создание полла (poll) на какой-либо адрес. Полл представляет собой пустое письмо, которое создает либо мейлер (ArcMail-Attach) либо тоссер (если мейлер — BinkStyle). Отметим, что наличие писем на какой-либо адрес не вызовет звонка, если станция назначения не работает круглосуточно и это не отражено в нодлисте. Исключением из этого правила являются письма с атрибутом Cra.
Адрес, на который необходимо передать почту, включается мейлером в специальную очередь прозвона (queue). Управление очередью осуществляется самим мейлером, либо специальной внешней утилитой управления очередью. Через определенные промежутки времени, в течение которых мейлер ожидает входящего звонка, он при помощи иногда довольно сложного алгоритма выбирает из очереди следующий адрес прозвона.
Осуществляется звонок по указанному в нод/поинтлисте телефону, либо по телефону очередного скрытого (не упомянутого в листе) канала (Hidden Line). Hаличие у станции hidden-линий (называемых на жаргоне хидденами) определяется из конфигурации мейлера.
Если звонок неудачен (линия занята, нет ответа от удаленного модема, отсутствует длинный гудок в линии и т.д.) мейлер увеличивает счетчик неудачных попыток прозвона для данного адреса и переходит к следующей позиции в очереди. Такой процесс будет осуществляться до тех пор, пока счетчик не превысит предельно допустимого числа неудачных прозвонов, после чего соответствующий адрес исключается из очереди и становится запрещенным к прозвону (undialable). Из такого состояния как правило он может быть извлечен лишь при помощи вмешательства оператора.
Дозвонившись, мейлер устанавливает EMSI-сессию и передает письма и файл-реквесты на основной адрес удаленной станции, и на предьявленные AKA (если мейлер соответствующим образом сконфигурирован). Далее он получает почту и файлы от удаленного мейлера, получает ответы на файл-реквесты, и сессия успешно завершается.
Если сессия завершилась по потере несущей, мейлер увеличивает счетчик неудачных сессий, который тоже имеет свои пределы. При их превышении адрес назначения также попадает в undialable.
По окончании сессии как правило запускается тоссер (если была получена какая-либо почта). Тоссер осуществляет распаковку ArcMail-пакетов и (если это еще не сделано мейлером) .PKT с нетмайлом.
Часть III С чего начать ?
Для того, чтобы организовать у себя станцию сети FIDONet Вам, прежде всего, необходимо найти и установить перечисленные выше компоненты почтовой системы. Для начинающих обычно принято рекомендовать комплект :
— мейлер : T-Mail (берите один из релизов, они имеют номера версий, кончающиеся на два нуля — последняя на момент написания — 2400. В релизе есть документация и примерные конфиги. В версиях 24xx (бета-версиях) отсутствует документация, поэтому Вам все равно будет необходим релиз).
В качестве альтернативы можно поставить BinkleyTerm при помощи пакета PPoint, или взять готовый комплект.
— эхопроцессор : я рекомендую GEcho — как наиболее простой и наиболее быстрый. Есть надежные старые версии 1.01 (только *.MSG и Hudson) и 1.02 (JAM, Hudson, *.MSG). Версия 1.10 содержит ошибки и ей лучше не пользоваться. Последняя доступная — 1.11. Заметьте, что если Ваши принципы не позволяют Вам использовать нелицензированное ПО, то Вам лучше остановиться на версии 1.01 или 1.02, так как версии 1.10 и 1.11 предназначены для зарегистрированных пользователей. Если же Ваши моральные устои не столь прочны, то на многих BBS вы найдете соответствующие «утилиты» ;-).
— редактор : на быструю машину можно поставить GoldEd версии 2.41 (без JAM) или 2.42 (c JAM). Версии 2.50 со всяческими шестнадцатиричными номерами — беты, и содержат ошибки. Если машина медленная, или мало памяти, можно воспользоваться timEd'ом (1.01.g1 — самая последняя версия).
Под фразой «установить» я подразумеваю не процесс инсталляции a la Windows (как раз такого Вы в FIDONet и не найдете), а кропотливое изучение множества конфигурационных файлов и исправление значений в них под Ваши цели. Hе существует общих рекомендаций по установке того или иного обеспечения — Вам придется обратиться к документации на программу, если возникнут проблемы. Так как у Вас пока нет FIDO-адреса, то вместо него нужно проставить фиктивный адрес (для Москвы — 2:5020/999.999).
Кроме того, через FIDONet распространяется много так называемых FAQ (Frequently Asked Questions) по разным программам и системам. В любом случае будьте готовы обнаружить в используемой программе пару-тройку небольших, но досадных ошибок. Ошибки — неотъемлемая часть ПО для FIDONet, без них общение с нею не было бы столь эротичным.
Чтобы избежать ненужных вопросов и томительного ожидания ответа в какой-либо эхе на Ваши крики о помощи, воспользуйтесь схемой :
1. Если то, что вы настраиваете распространено, и отказывается выполнять одну из своих основных функций — значит, Вы неправильно это настроили.
2. Если у Вас возникли проблемы — первым делом обратитесь к документации на то, что Вы настраиваете. Прочтите ее внимательно, если позволяют возможности, ее даже лучше распечатать.
3. Если по прочтении документации проблема не разьяснилась, обратитесь за помощью к Вашему боссу, либо в локальную эху.
4. Если проблема не выяснилась на этом уровне (что случается очень редко) — напишите письмо в конференцию SU.CHAINIK.
Hе стоит налаживать каждую программу в отдельности — ведь им предстоит работать в комплексе. Поэтому лучше вначале *вчерне* настроить каждый продукт в отдельности, а затем уже настраивать весь комплекс целиком. Как правило при организации межпрограммного взаимодействия используются два пути — либо набор BAT файлов с обработкой ERRORLEVEL'ей, либо использование общего каталога флагов.
В первом случае требуется обратить внимание на порядок проверки значений в конструкции if ERRORLEVEL == чему-то (он должен удовлетворять порядку проверки равенства DOS). Во втором случае одна из программ сообщает остальным о необходимости совершения (или несовершения) какого-либо действия путем создания пустого файла со специфическим именем (флага).
Естественной первой ступенью в FIDONet является получение поинтового адреса. Если Вы желаете стать узлом FIDONet, Вам все равно придется сначала пробыть довольно продолжительное время чьим-нибудь поинтом. Будучи поинтом Вы не обязаны соблюдать ZMH и даже вообще отвечать на входящие звонки.
Для поисков поинта обычно используется эхоконференция RU.BBSNEWS.TALK. Hайдите ее на какой-нибудь BBS или попросите Вашего знакомого, уже имеющего адрес, отписать туда вашу просьбу. Проверив связь и напоив Вашего нового босса непременным фидошным пивом, Вы можете начинать освоение просторов сети.
Подписка на эхоконференции.
Вначале проверьте, что Ваш эхопроцессор правильно находит новые письма и создает ArcMail-пакеты, которые понимает Ваш мейлер. Для этого создайте фиктивную конференцию типа MO.ZHABA.TALK (приписав ей фиктивного аплинка с несуществующим номером узла типа 2:5020/1158) и напишите в нее письмо. После запуска тоссера на сканирование почты (GECHO SCAN или SQUISH OUT SQUASH) и запуска мейлера Вы должны увидеть в окошке очереди звонков закономерное удивление мейлера на пакет для 2:5020/1158. Удалите этот пакет, саму конференцию и ложного аплинка.
Итак, если Ваш эхопроцессор исправен, можно начинать. Для подписки на эхоконференции используется специальная программа-робот у Вашего босса, называемая AreaFix (ареафикс). Реальное имя робота может немного отличаться, но имя AreaFix как правило поддерживается большинством программ. В любом случае лучше предварительно узнать у Вашего босса имя соответствующего робота и временной интервал между запусками AreaFix'а на босс-ноде.