binkd FAQ Ответы на часто задаваемые вопросы по FTN-мэйлеру binkd $Date: 2015/06/25 13:37:02 $ Этот FAQ составлен на основе вопросов, часто встречающихся в эхоконференции RU.BINKD. Часть ответов основана на рекомендациях разработчиков. Со всеми предложениями и замечаниями пишите: Stas Degteff 2:5080/102 01. Где взять последнюю копию binkd стабильной версии или беты. 02. Что такое binkd 03. Протокол binkp 04. Что такое и зачем нужен домен binkp.net 05. binkd не соединяется. Что делать? 06. Как подружить binkd и HTTP-прокси. 07. Как подружить binkd и SOCKS-прокси. 08. IP-пойнт: как заставить binkd забрать почту с босса (аплинка). 09. Ошибка "start_file_transfer: .: Permission denied". 10. binkd и диалап: автоматический дозвон и отсоединение. 11. Изменил конфиг при работющем binkd. Когда подействуют изменения? 12. Как подружить binkd c T-mail/IP? 13. Где взять лог анализер для binkd? 14. binkd долго коннектится, хотя сетка скоростная. 15. Почему binkd не понимает передаваемые параметры при запуске из inetd 16. Можно ли сделать FREQ в binkd. 17. Как сделать, чтобы binkd отвечал на FREQ? 18. Как добавить binkd в фидо-станцию, работающую на модеме. 19. Флаги по приему файла не создаются, программы не запускаются. 20. Не работает skipmask. 21. binkd под Windows 3.x. 22. Разные FTN-домены в binkd. 23. Как работает "domain ... alias-for ..." в конфиге 24. Что означает диагностика "send: TCP/IP error (-10000)", как это лечить? 25. Argus (Radius) и binkd: ошибка Argus "Aborting due to carrier loss" 26. В названии аутбаунда - символ комментария и binkd не видит каталог. 27. Есть ли возможность запуска приложения в binkd по событию? 28. В чем различие между binkd/w32 и binkd/w9x? 29. Сильно не хватает чата в binkd! И время синхронизировать хочется. 30. binkd принимает входящее соединение только после исходящего. 31. Ошибка "start_file_transfer: ECHO is off.: No such file or directory". 32. Как правильно создать полл. 33. Что означают цифpы в квадpатных скобках в логе? 34. Как настроить эхотаг для отправки исходящего нетмейла? 35. Зачем нужна директива share в конфиге (shared aka)? 36. Зачем нужна директива ftrans в конфиге? 37. Почему binkd в Windows работает сервисом только от администратора? 38. Кто-нибудь прикрутит, наконец поддержку нодлиста к бинкд? 39. binkd поддерживает домены с символами не из ASCII? A1. Обнаружил баг в binkd! A2. Как связаться с разработчиками. A3. Хочу сразу узнавать об изменениях в binkd! A4. А когда binkd будет делать ... ? ---------------------------------------------------------------------------- 01. Где взять последнюю копию binkd стабильной версии или беты. В файл-эхе AFTNBINKD. Кроме того, в Internet'е: Релизы, документация, анализаторы логов и пр. (Pavel Gulchouck 2:463/68): ftp://cvs.happy.kiev.ua/pub/fidosoft/mailer/binkd/ Скомпилированные версии (windows, os/2): http://download.binkd.org https://sites.google.com/view/vasilyevmax/ (Max Vasilyev 2:5057/77) Исходники лежат на гитхабе: https://github.com/pgul/binkd а также на синхронизированном с ним сервере CVS: :pserver:binkd@cvs.happy.kiev.ua:/cvs , модуль binkd, пароль пустой Примеры команд для сервера CVS. Залогиниться на сервер cvs: cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs login Получить последние исходники ветки current (на настоящий момент это 1.1): cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs co binkd Получить последние исходники ветки binkd 1.0.x-stable: cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs co -r binkd-1_0-stable binkd Получить исходники binkd 1.0.0-release: cvs -d :pserver:binkd@cvs.happy.kiev.ua:/cvs co -r binkd-1.0.0 binkd Анонимный FTP: ftp://cvs.happy.kiev.ua/pub/fidosoft/mailer/binkd/snapshot binkd/2 1.1a (current, EMX), скомпилированный еженощно: FREQ c узла 2:221/1, алиас файла: binkd2e. Можно скачать также с BBS узла 2:221/1 (доступна по telnet:rbb.dy.fi) http://rbb.homeip.net/pub/os2/comm/bbs/binkd2e.rar (Финляндия, Tommi Koivula 2:221/1 & 2:221/360) Man page, описание binkp, бинарники и пр. (Stas Degteff 2:5080/102): http://binkd.grumbler.org/ Этот FAQ: http://binkd.grumbler.org/binkdfaq.shtml (или .txt) В официальных источниках бинарники binkd именуются так, чтобы показать OS, компилятор и способ сборки. Версии для Windows (32bit): binkd.exe, binkdw32.exe - binkd/w32, консольный, скомпилирован MS Visual C binkd-dll.exe - binkd/w32, консольный, MS Visual C, требует msvcrt.dll binkd-mingw.exe - binkd/w32, консольный, MinGW32, требует msvcrt.dll binkd9x.exe - binkd/w9x, безоконный, скомпилирован MS Visual C binkd9x-dll.exe - binkd/w9x, безоконный, MS Visual C, требует msvcrt.dll binkd9x-mingw.exe - binkd/w9x, безоконный, MinGW32, требует msvcrt.dll Версии для OS/2: binkd2.exe - компилятор Watcom C, перла нет binkd2e.exe - emx, умеет подгружать перловую dll и работать без нее binkd2pl.exe - emx, perl слинкован статически (т.е. перловая dll не нужна) binkd2eo.exe - emx/omf (multithread), перла нет. ---------------------------------------------------------------------------- 02. Что такое binkd Бинкд - фидошный мэйлер, работающий через интернет по протоколу binkp (FSP-1018 и др.). Этот протокол поддерживается также мэйлерами Аргус (win32; RitLabs; https://www.ritlabs.com/en/products/argus/) и его клонами Radius и Taurus, BForce (unix), программой Internet Rex (DOS/W32/OS2) и BeeMail (win32; Stephen Proffitt, 1:105/10) Характеристики: - freeware, открытые исходники; - версии для Unix (linux, freebsd, SCO, ...), OS/2 (native & EMX), Windows NT/2000/XP и Windows 95/98/Me, Windows 3.x, DOS; - возможность работы демоном под Unix и сервисом Windows NT/2000/XP, отдельная версия для работы сервисом в Windows 9x; - простое TCP-соединение (целостность данных отслеживается на уровне TCP); - BSO (bink-style outbound); - ASO (Amiga-style outbound); - трансляция путей в ?LO файлах (используется при размещении аутбаунда на сетевых дисках); - персональные файлбоксы для отправляемых и принимаемых файлов для каждого узла; - поддержка файлбоксов T-mail и The Brake!; - поддержка трансляции FTN-адресов в доменное имя (*.binkp.net); - поддержка файла паролей стиля T-mail - начиная с 0.9.4 и ifcico - c 1.0; - поддержка FREQ с использованием SRIF; - создание флагов по приему файла (по маске); - запуск программ по приему файла (по маске); - отказ от приема файла (по маске) - начиная с 0.9.4; - работа через HTTP или SOCKS прокси-сервер (начиная с версии 0.9.3.https); - шифрование паролей (MD5) - начиная с релиза 0.9.4; - шифрование трафика - начиная с 0.9.5; - проверка IP-адреса удаленного узла при входящих соединениях - начиная с 0.9.5; - поддержка IPv6 - начиная с 1.0.0; - поддержка DNS записей IN SRV - начиная с 1.0.0; - поддержка perl hooks - начиная с 1.0.0; - поддержка ограничения скорости передачи - начиная с 1.0.0. ---------------------------------------------------------------------------- 03. Протокол binkp Расшифровка названия: binkd protocol. Описан в FSP-1018 (FIDOnet standard proposal - предложенный для обсуждения/рассмотрения FTSC стандарт) и порт 24554 выделен для binkp в RFC-1700 (request for comments, выпускаемый IANA). Использующий двустороннее TCP-соединение протокол обмена файлами, разработанный для FTN-мэйлера binkd. По умолчанию использует порт 24554. Существуют две версии протокола: 1.0 и 1.1, обратно совместимы. Основное отличие версии 1.1 в возможности делать FREQ во время сессии. Кроме того, binkp 1.1 в настоящее время имеет опции NR (non-reliable mode, режим работы с ненадежнвм каналом связи) и ND (no dupes mode, режим защиты от повторной передачи файлов), MD5 (хеширование паролей), CRYPT (шифрование трафика). Версия протокола 1.1 поддерживается мэйлером binkd, версия 1.0 реализована в мэйлере Argus и его клонах (в нем binkp реализован с добавлением собственного механизма обработки FREQ и другими изменениями), в MBSE, Internet Rex, BForce и других. В пакете Internet Rex (2.24 и более поздние) реализован также свой (несовместимый) вариант binkp/1.1. Описание протокола на русском языке лежит тут: http://binkd.grumbler.org/binkp/ ---------------------------------------------------------------------------- 04. Что такое и зачем нужен домен binkp.net binkp.net - домен, зарегистрированный для системы трансляции FTN-адресов в доменные имена internet. Используется при binkp-соединениях. Адрес 1:2/3 преобразуется в домен f3.n2.z1.binkp.net (для пойнта: 1:2/3.4 преобразуется в p4.f3.n2.z1.binkp.net), затем binkd (или другой binkp-мэйлер) получает средствами операционной системы IP-адрес узла. Если домен существует - можно пытаться установить соединение. Узлы могут оказаться в зоне binkp.net одним из двух способов: либо прописав свой адрес для доступа по binkp в нодлисте, либо явно его указав через http://binkp.net (и в этом случае, наоборот, в нодлисте можно указать адрес из binkp.net). ---------------------------------------------------------------------------- 05. binkd не соединяется, сообщает про таймаут (timeout). Что делать? 1. Проверьте, отвечает ли удаленный узел на порту 24554 (команда telnet). Если соединение не устанавливается, проверьте, подключен ли этот компьютер в данный момент к сети (команда ping). Если проверки успешные - проверяйте настройки (при этом помогает увеличение уровня протоколирования: loglevel 6 или больше). Вот примеры для узла 2:5080/68: 1.1. (В ответе на телнет управляющие символы убраны, разбиение на строки выполнено для удобства) m:\>telnet f68.n5080.z2.binkp.net 24554 -.OPT CRAM-MD5-593e3e5411515fc1cf75816bb74e41d0-SYS Academ -ZYZ Alexei Kuklin-LOC Ekaterinburg, Russia-NDL 115200,TCP,BINKP,HUB -%TIME Tue, 20 Feb 2001 15:25:20 +0500- VER binkd/0.9.4/Win32 binkp/1.1 - 2:5080/68@fidonet-OPT ND M:\>ping f68.n5080.z2.binkp.net Pinging fido68.imp.uran.ru [195.19.130.68] with 32 bytes of data: Reply from 195.19.130.68: bytes=32 time=505ms TTL=122 Reply from 195.19.130.68: bytes=32 time=555ms TTL=122 Reply from 195.19.130.68: bytes=32 time=406ms TTL=122 Reply from 195.19.130.68: bytes=32 time=372ms TTL=122 Узел работает. Проверьте настройки своего binkd. Возможно, задан слишком маленький таймаут (время, необходимое для установки соединения, можно оценить по задержке перед ответом в telnet). Другой вариант: телнет соединяется, а пинг - нет (сообщает "Request timed out" или "Превышен интервал ожидания"): M:\>ping f68.n5080.z2.binkp.net Pinging fido68.imp.uran.ru [195.19.130.68] with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Это означает, что ICMP-пакеты запрещены на пути между вами. На работу binkd они не влияют. 1.2. M:\>ping f68.n5080.z2.binkp.net Unknown host f68.n5080.z2.binkp.net Такой ответ означает, что ваш компьютер не смог обнаружить запись в DNS для этого узла. Проверьте настройки DNS в системе. Если они верны - убедитесь, что DNS-сервер работает и адрес удаленного узла указан правильно. 1.3. Если пинг проходит, а telnet-соединение не устанавливается - возможно, что binkd на этом узле в данный момент не отвечает. Попробуйте выяснить с сисопом узла, запущен ли у него binkd. Если запущен и соединяется с другими узлами - это означает, что доступ к порту 24554 закрыт на файрволле Вашей сети. Попробуйте запустить binkd через прокси-сервер - см. "Как подружить binkd и HTTP-прокси", "Как подружить binkd и SOCKS-прокси" 1.4. M:\>ping -w 5000 f68.n5080.z2.binkp.net Pinging fido68.imp.uran.ru [195.19.130.68] with 32 bytes of data: Reply from 195.19.130.68: bytes=32 time=3674ms TTL=122 Request timed out. Reply from 195.19.130.68: bytes=32 time=4232ms TTL=122 Request timed out. Телнет на порт 24554 иногда соединяется, а чаще - нет. Узел работает, но канал связи между вами сильно загружен или слишком медленный. При этом binkd соединяется не при каждой попытке (теряются IP-пакеты) или не соединяется вовсе (слишком мало время ожидания ответа удаленного узла). Первый случай "неизлечим", поскольку пакеты теряются в пути и повлиять на это Вы не в состоянии. Во втором случае нужно увеличить значение времени ожиданий в файле конфигурации binkd (значения задаются в секундах): timeout 60 connect-timeout 300 call-delay 60 Если увеличение этих значений не помогает - смените аплинка. 1.5. Телнет на порт 24554 не соединяется, хост на пинг не отвечает. Узел не отвечает. Вероятные варианты : 1 - в данный момент ваш компьютер либо удаленный узел не подключен к интернет или нарушена маршрутизация (обрыв на линии связи, отключение электропитания, проводятся работы у одного из провайдеров и пр.) - предпримите несколько попыток позже; 2 - Ваш компьютер находится в Intranet и выход в Internet возможен только через прокси-сервер - см. "Как подружить binkd и HTTP-прокси", "Как подружить binkd и SOCKS-прокси" ---------------------------------------------------------------------------- 06. Как подружить binkd и HTTP-прокси. Нередко в ЛВС организации пользователи выходят в Internet исключитально через прокси-сервер, установленный на единственном компьютере, имеющем выход в Сеть. При этом binkd не может установить прямое соединение с удаленным узлом и нужно использовать этот прокси-сервер. Поддержка прокси-серверов была включена в версии 0.9.3.https, 0.9.4 и более поздние. Работа через HTTP прокси возможна только в том случае, если в прокси-сервере разрешена команда CONNECT host 24554 (соединение с портом 24554) либо команда CONNECT разрешена для любого порта назначения. Обычно эта команда используется в протоколе "защищенный HTTP" (ссылки вида HTTPS://...), иначе называемого S-HTTP. Из-за этого такой прокси нередко называют "HTTPS-прокси". Если binkd сообщит, что произошла ошибка авторизации, значит в настройке прокси-сервера нужная команда запрещена или разрешена только для некоторых портов (обычно 443). Предположим, что компьютер, подключенный к Internet, имеет во внутренней сети IP-адрес 192.168.0.1 и прокси-сервер на нем "отвечает" по порту 3128. Вот строка в файле конфигурации binkd, нобходимая для работы через этот HTTP-прокси: 1. Прокси-сервер без авторизации пользователя (не требуется вводить имя и пароль): proxy 192.168.0.1:3128 2. Прокси-сервер с авторизацией пользователя (требуется вводить имя и пароль, к примеру, имя user и пароль password): proxy 192.168.0.1:3128/user/password 3. Прокси-сервер фирмы Microsoft с авторизацией пользователя по протоколу NTLM. (Требуется входить в домен.) К примеру, имя user и пароль password, компьютер пользователя host и домен ntdomain: proxy 192.168.0.1:3128/user/password/host/ntdomain Если администратор прокси-сервера разрешил соединения только с избранными портами (обычно это порт 443) - тогда binkd выдаст диагностику "Connection rejected by proxy". Вот пример: 31 Mar 16:48:43 [59987] BEGIN, binkd/0.9.3/SOCKS/HTTPS -p BINKD.CFG 31 Mar 16:48:43 [59987] clientmgr started + 31 Mar 16:48:43 [40423] call to 2:5000/44@fidonet 31 Mar 16:48:43 [40423] trying 195.209.235.3, port 24554... 31 Mar 16:48:43 [40423] connected to proxy.osu.ru:24554 31 Mar 16:48:44 [40423] Connection rejected by proxy (HTTP/1.0 403 Forbidden) ? 31 Mar 16:48:44 [40423] unable to connect: {13} Permission denied В этом случае можно попробовать использовать http-туннелинг, например с помощью httport, HTTPTunnel (http://http-tunnel.sourceforge.net/), stunnel (https://www.stunnel.org/) или найти узел, который принимает соединения по binkp на 443 порт. ---------------------------------------------------------------------------- 07. Как подружить binkd и SOCKS-прокси. Нередко в ЛВС организации пользователи входят в Internet исключитально через прокси-сервер, установленный на единственном компьютере, имеющем выход в Сеть. При этом binkd не может установить прямое соединение с удаленным узлом и нужно использовать этот прокси-сервер. Поддержка прокси-серверов была включена в версию 0.9.4 и более поздние. binkd работает с SOCKS-прокси версий 4 и 5. Первые не требуют авторизации (ввода имени и пароля), вторые как правило ее требуют. Предположим, что компьютер, подключенный к Internet, имеет во внутренней сети IP-адрес 192.168.0.1 и SOCKS-сервер на нем "отвечает" по порту 1080. Вот строка в файле конфигурации binkd, нобходимая для работы через этот SOCKS-прокси: 1. SOCKS-сервер без авторизации пользователя (не требуется вводить имя и пароль): socks 192.168.0.1:1080 2. SOCKS-сервер с авторизацией пользователя (требуется вводить имя и пароль, к примеру, имя user и пароль password): socks 192.168.0.1:1080/user/password ---------------------------------------------------------------------------- 08. Как заставить binkd забрать почту с босса (аплинка) Нужно создать полл. binkd это умеет посредством опции -P: binkd -P1:2/3 binkd.cfg обычно при этом нужно, чтобы binkd завершил работу по окончании сессии, для чего используется опция -p: binkd -p -P1:2/3 binkd.cfg Если binkd после окончания сессии долго не завершается, уменьшите значение параметра rescan-delay (иногда и timeout). Если binkd работает постоянно (например установлен как сервис в Windows) и требуется регулярно забирать почту, нужно использовать внешние по отношению к binkd программы или скрипты. Например, в DOS, Windows или OS/2 достаточно выполнить команду: cd . >> %outbound%\NNNNMMMM.ilo где NNNN - шестнадцатиричный номер сети, MMMM - шестнадцатиричный номер узла, %outbound% - путь к аутбаунду нужной зоны. ---------------------------------------------------------------------------- 09. Ошибка "start_file_transfer: .: Permission denied" Это сообщение появляется когда binkd не может открыть файл на отправку, указанный в лошке (*.?lo). Скорее всего в этом файле есть строка, состоящая из одной ".", т.к. poll создается командой echo . >> xxxxyyyy.flo ее нужно заменить на "cd . >> xxxxyyyy.flo" ---------------------------------------------------------------------------- 10. binkd/win и диалап: автоматический дозвон и отсоединение Задача: настроить систему так, чтобы binkd инициировал телефонный звонок к провайдеру, забирал почту, после чего соединение нужно разорвать. Решения: 1 вариант Установить автоматическое установление связи и таймаут в свойствах соединения (завершать соединение при отсутствии данных через указанное время). При этом удобно использовать нестандартную программу дозвона (Advanced Dialer и т.п.). binkd нужно будет периодически запускать с ключом -p (и, возможно, -Pадрес - чтобы binkd создал полл на адрес)% binkd -p -P1:2/3.4 binkd.cfg 2 вариант Используется опция командной строки -p и командный файл, в котором запускается сервис удаленного доступа (RAS), затем запускается binkd, после завершения binkd RAS останавливается. для Windows NT и Windows 2000 два варианта: === binkdpoll1.cmd rasdial Соединение binkd -p binkd.cfg rasdial Соединение /disconnect === === binkdpoll2.cmd net start "remote access service" net start "remote access auto service" binkd -p binkd.cfg net stop "remote access auto service" net stop "remote access service" === 3 вариант (наилучший для win9x) Используются опции командной строки -p и -Pадрес, управление соединением осуществляется нестандартной программой дозвона (к примеру, dialerp). Этот вариант наиболее надежен (особенно в случае плохой связи с модемом провайдера) благодаря тому, что dialerp при установлении соединения может запускать указанные программы. Вот командный файл, который нужно вызывать из параметра Execute файла конфигурации dialerp: ==== binkd -p -P1:2/3.4 binkd.cfg dialerp BREAK * ==== Остается вопрос: где взять dialerp. Ответ: спроси у автора (Alexander Vedjakin, 2:5020/540) или поищи в архивах файл-эх и на ftp/http. При любом варианте в файле конфигурации binkd нужно поставить малое значение у параметра rescan-delay - тогда binkd будет завершаться быстрее: === binkd.cfg # Outbound rescans period (sec) rescan-delay 2 === ---------------------------------------------------------------------------- 11. Изменил конфиг при работющем binkd. Когда подействуют изменения? Начиная с версии 0.9.1 binkd научился определять обновление файла конфигурации. Запущенный с флагом -C он при этом завершался с кодом 3. (После каждой входящей сессии производилась проверка времени модификации). Вот файл для запуска binkd версий 0.9.1-0.9.3 и 0.9.4-0.9.6/w32: ==== :aaa binkd -C binkd.cfg if errorlevel 4 goto end if errorlevel 3 goto aaa :end ==== В версиях 0.9.4/unix и /os2-emx (только в этих) сделан автоматический перезапуск binkd, если он запущен с ключом -C. Кроме того, начиная с версии 0.9.4 проверяются файлы, включенные в конфиг по include, и проверка происходит не только при входящих соединениях, но и через каждые rescan-delay секунд. В версии 0.9.4/w32 при установке binkd в качестве сервиса Windows NT, нужно установить его с параметром -C: тогда binkd будет перечитывать конфиг. До версии 0.9.4 изменения конфига не проверялись, если binkd был запущен в режиме client-only (ключ -c). В версях для unix конфиг перечитывается по сигналу SIGHUP, командой kill -HUP `cat /var/run/binkd.pid` В версии 1.0 сделано автоматическое перечитывание конфига при его изменении. Проверка проводится через каждые rescan-delay секунд. ---------------------------------------------------------------------------- 12. Как подружить binkd c T-mail/IP? Hикак не подружить. Протоколы принципиально разные: binkd работает по протоколу binkp, t-mail/IP - EMSI & etc. ---------------------------------------------------------------------------- 13. Где взять лог анализер для binkd? Существует множество Perl'овых скриптов и несколько win32-бинарников, к примеру вот: binkdstat 0.1 beta4 Christmas version 6.01.2002 Statistics generator for binkd (c) Dmitry Sergienko, 2:464/910@fidonet, dmitry@trifle.net 14.08.2000 http://web.apex.dp.ua/~trooper/binkdstat http://binkd.grumbler.org/loganalisers/binkdstat-ds.0.1_beta4_Christmas Также существует программа BndStat: BNDST101.ZIP 34812 14-Aug-01 (AREA:AFTNMISC) BndStat 1.01. With sources. binkd statistics generator. Compiled for all platforms. Included win32 binaries. (C) Dmitry Rusov, 2:5090/94 Анализатор логов от val khokhlov (perl): http://www.vk.kiev.ua/create/soft.html#bnkds http://binkd.grumbler.org/loganalisers/stat-binkd.pl.gz binkdstat (С) val khokhlov, Dmitry Kolvakh, обновлён в апреле 2006 http://binkd.grumbler.org/loganalisers/binkdstat.zip T-Hist (c) Michael Markowsky, 2:5020/378 (KLUG's BBS) Анализатор бинарного лог-файла разных мейлеров, в том числе binkd. Работает под DOS, Windows NT (2000, XP, 2003) и OS/2. ftp://ftp.grumbler.org/pub/binkd/hist30a7.zip Kleine Statistiker/BINKD for DOS v0.60a, русская версия Маленький генератор статистики для постинга её в эхоконференцию. ftp://ftp.grumbler.org/pub/binkd/statddos.rar ---------------------------------------------------------------------------- 14. binkd долго коннектится (~20 секунд), хотя сетка скоростная (ЛВС). Наверное "включен" параметр backresolv (писать в лог доменное имя удаленного хоста) и не настроен DNS. Самое простое - нужно закомментировать backresolv в файле конфигурации. Посложнее: необходимо настроить DNS. ---------------------------------------------------------------------------- 15. Почему binkd не хочет понимать передаваемые параметры при запуске из inetd В inetd.conf нужно первым параметром указывать имя программы (в случае с binkd - любая строка), вторым и далее параметрами - ключи запуска (-iqs и прочее по вкусу), последним параметром - полнопутевое имя конфига: binkp stream tcp nowait root /usr/fido/binkd binkd -isq /usr/fido/binkd.cfg Если не используется опция -q, в конфиге нужно убрать вывод на консоль (закомментировать printq, percents, conlog). ---------------------------------------------------------------------------- 16. Можно ли сделать FREQ в binkd. Запросто! binkd поддерживает WAZOO FREQ с помощью внешнего обработчика. Чтобы запросить файлы с удаленной системы нужно создать файл вида nnnnmmmm.REQ и поместить его в outbound рядом с файлами *.?ut и *.?lo, относящимся к нужному линку. Но файлы *.REQ не инициируют прозвонку в binkd, для совершения FREQ нужно создать полл. Что должно быть внутри .REQ файла описано в файле "!SRIF.TXT", скопированном из FSC-0086.001 c http://ftsc.org ---------------------------------------------------------------------------- 17. Как сделать, чтобы binkd отвечал на FREQ? Для приема и обработки FREQ в binkd настраивается вызов внешнего фрек-процессора, поддерживающего SRIF (FSC-0086). Читай файл "!SRIF.TXT" и комментарий к "exec" в конфиг-файле. Вот примеры строки в конфиге для DOS-based OS и для *nix (там приходится указывать маску с регулярными выражениями, чтобы binkd распознал файлы независимо от регистра букв: и *.REQ, и *.req): exec "\\ftn\\allfix\\allfix.exe RP -SRIF *S" *.req exec "/ftn/bin/tmafreq-srif *S" *.[rR][eE][qQ] С binkd начиная с версии 1.1a19 поставляется bash-скрипт srifreq, также с ним совместимы следующие FREQ-процессоры (но не только эти, подойдет любой FREQ-процессор, поддерживающий SRIF): Allfix от Harms Software Engineering: файлэхопроцессор со встроенным обработчиком файловых запросов, существуют версии под DOS и OS/2; ViReq от Michael Haase (2:2432/280): специализированный FREQ-процессор под Windows, распространяется Michael Massenberg (2:2411/505) посредством Fido-over-IP, по модему и ISDN. tmafreq от Maxim Timofeyev : FREQ-процессор, созданный для юниксоподобных ОС и портированный в Windows. Получить tmafreq можно на разных BBS и FTP с архивами файлэх, либо можно взять исходники с анонимного CVS :pserver:anoncvs@tma.spb.ru:/cvsroot, модуль "tmafreq". VIREQ/x от Volker Imre (2:246/2098): FREQ-процессор, созданный для юниксоподобных ОС, но он компилируется в OS/2, Windows и, возможно, в других ОС. Ныне он включен в проект "ftnapps" на Sourceforge и его можно загрузить со страницы http://ftnapps.sourceforge.net/vireq.html. Скомпилированные Win32 и OS/2 версии доступны на http://download.binkd.org https://sites.google.com/view/vasilyevmax/ ---------------------------------------------------------------------------- 18. Как добавить binkd в фидо-станцию, работающую на модеме. Нужно настроить модемный мэйлер и тоссер на режим BSO (binkley-style outbound), так чтобы у всех (и у binkd тоже) совпадали inbound- и outbound-каталоги. Например, в конфигурации мэйлера "T-mail" нужно указать: BinkStyle_Pack_For All Если же мэйлер "умеет" только AMA (arcmail-attach) - можно попробовать использовать файлбоксы и (или) найти программы, которые могут сконвертировать очередь Вашего мейлера в BSO или файлбоксы. (К примеру, утилита Mail2dir позволяет использовать файлбоксы с FrontDoor.) Такие средства лишают Вас возможности отправить почту одному и тому же линку и по IP, и по модему (например, в случае неполадок в одном из каналов связи). Другой вариант, радикальный, но наиболее гибкий по возможностям - сменить мэйлер. См. также вопрос 35. ---------------------------------------------------------------------------- 19. Флаги по приему файла не создаются, программы не запускаются Наверняка неправильно указана маска в конфиге. Нужно так (версии для windows и os/2 - первые две строки, в юникс-версиях остальные): flag m:\\ftn\\flg\\pntseg.flg m:\\\\ftn\\\\inbound\\\\sec\\\\pntstr*.* flag m:\\ftn\\flg\\toss.flg *.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa? *.pkt exec "/usr/local/bin/ftrack -c /fido/conf/ftrack" *.[Pp][Kk][Tt] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ss][Uu][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Mm][Oo][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Tt][Uu][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ww][Ee][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Tt][Hh][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ff][Rr][0-9A-Za-z] flag "/ftn/flg/echo-in" /ftn/inboundsec/*.[Ss][Aa][0-9A-Za-z] flag "/ftn/flg/fech-in" /ftn/inboundsec/*.[Tt][Ii][Cc] Надо указывать полное имя файла, который должен приняться, с четырьмя слешами или маска должна начинаться с символа "звездочка". Для флага нужно использовать двойные слэши. Полное имя - потому что имя файла без пути означает событие приема файла не в инбаунд, а в текущий каталог. Если маска начинается с "*", то в любой (а поскольку файлы принимаются в один из инбаундов, работает для всех сессий - и парольных, и непарольных). В юниксах нужно учитывать, что большие-маленькие буквы в именах файлов различаются (используйте регулярные выражения в масках). ---------------------------------------------------------------------------- 20. Не работает skipmask. Для skipmask имя файла сравнивается без пути и регистрозависимо. ---------------------------------------------------------------------------- 21. binkd под Windows 3.x. Sergey Zharsky (zharik@usa.net) портировал binkd 0.9.2 и binkd 0.9.5 для Windows 3.x. Работает c IP стеками Trumpet Winsock ver. 3.0 revision D и Novell TCP/IP Client for Win 3.11 (см. ответ на вопрос "binkd под DOS." параграф "Особенность..."). ---------------------------------------------------------------------------- 22. Разные FTN-домены в binkd и тоссер, не поддерживающий 5D outbound. Ситуация: два домена (с разными номерами зон, хотя это непринципиально), почта на первый домен отправляется, на второй - нет. Такая ситуация может возникнуть, если отсутствует поддержка 5D BSO у тоссера, трекера и других фидошных программ, используемых на FTN-системе. Типичная конфигурация binkd для двух доменов и 5D outbound: domain fidonet c:\\ftn\\outbound\\fidonet 2 domain omeganet c:\\ftn\\outbound\\omeganet 11 address 2:5070/222@fidonet 11:58/6@omeganet В domain прописывается не номер зоны собственного адреса, как можно было бы подумать, а зона, которую не надо добавлять к имени outbound'а (т.е. для зоны, указанной в строке domain, расширения подкаталога аутбаунда не обрабатываются). Если бы твой тоссер создавал для omeganet бандлы в каталоге omeganet, то надо было бы писать так, как указано выше; а раз он не работает с 5D и создает их в fidonet.00b, то писать надо вот так: domain fidonet c:\\ftn\\outbound\\fidonet 2 domain omeganet c:\\ftn\\outbound\\fidonet 2 address 2:5070/222@fidonet 11:58/6@omeganet Все свои адpеса обязательно пpописываешь с доменами. Каталог аyтбаyнда и пyть должен быть везде одинаковый (4D-тоссер считает все адреса принадлежащими одному домену). ---------------------------------------------------------------------------- 23. Как работает "domain ... alias-for ..." в конфиге Алиасы учитываются при анализе адреса удаленной стороны. Пример: domain fidonet.org alias-for fidonet При проверке домена: fidonet.org в адресе удаленной стороны заменятеся на fidonet и адрес 1:2/3.4@fidonet.org будет восприниматься как 1:2/3.4@fidonet ---------------------------------------------------------------------------- 24. Что означает диагностика "send: TCP/IP error (-10000)" и как это лечить? Тут две ошибки, основная исправлена перед ответвлением binkd 0.9.5-stable: 1. Дело в том, что в паре мест в коде binkd не было сделано сохранение значения кода ошибки, но это не проявлялось нигде кроме как в win-версии. Ошибка проявлялась потому, что в run-time библиотеке MS Visual C (в отличие от большинства) нарушается стандарт. Ошибка в том, что errno и h_errno в MSVC RTL являются макросами, раскрывающимся в системные вызовы, и все они сходятся в вызов GetLastError(). А значение, возвращаемое этой системной функцией, сбрасывается в нуль при любом успешном системном вызове. Таким образом, errno выставляется в ноль например при успешном открытии файла. (По стандарту errno не должен меняться если не было ошибки.) В binkd влияние этого бага устранено: 2003/04/28 07:30:16 gul * Bugfix: Log() changes TCPERRNO 2. Ошибка в Winsock - select() всегда возвращает успешный код для non-blocked socket. Влияние ее (и других обнаруженных в winsock ошибок) частично устранено: 2003/06/06 16:27:44 gul * Workaround winsock bug - giveup CPU when sending file 2003/08/11 08:41:55 gul * workaround winsock bug (patch by Alexander Reznikov) 2003/08/24 00:29:31 hbrew * win9x-select-workaround fix, thanks to Pavel Gulchouck) Eсть ещё эффект при высоких уровнях протоколирования (в лог пишется куча сообщений 'data transfer would block', отладочная информация по результатам работы select()). Hо на работу в обычном режиме это не влияет. Устранить это можно, но Павел не стал усложнять код. ---------------------------------------------------------------------------- 25. Argus (Radius) и binkd: ошибка Argus "Aborting due to carrier loss" Сессия между binkd и Radius (или Argus - это несущественно) обрывается с непонятной диагностикой "Aborting due to carrier loss" при включенном в Radius шифровании трафика. При этом на стороне binkd соединение обрывается по инициативе удаленной стороны ("Connection reset by peer"). Лог со стороны Radius: 30-Aug-2003 22:24:31 Encrypted (2:463/375) session 30-Aug-2003 22:24:32 Aborting due to carrier loss 30-Aug-2003 22:24:32 Session aborted 30-Aug-2003 22:24:32 End Причина в том, что авторы Argus придумали свой способ шифрования трафика, и в binkd это расширение не реализовано. Все бы ничего, но тонкость в том, что Argus (и вслед за ним Radius) не соблюдает совместимость с протоколом binkp: шифрование включается безусловно, без проверок его поддержки удаленной стороной. Такое вопиющее нарушение спецификации недопустимо - но увы. Выход: отключить шифрование в Argus для каждого линка, у которого используется binkd. Правильное поведение мэйлера должно было быть следующим: - если шифрование необязательно - продолжать некриптованную сессию; - если в настройке мэйлера установлено обязательное шифрование - сообщить удаленной стороне об аварийном завершении, например так: M_ERR "DES encription required" ---------------------------------------------------------------------------- 26. В названии каталога - символ комментария и binkd не видит каталог. При настройке binkd в работающей станции с bink/+: в путях встречается символ "#", он является комментарием для конфига binkd и, чтобы binkd воспринял правильный путь, этот символ надо искэйпить в конфиге обратным слэшем: domain fidonet c:\\fido\\\#out inbound-nonsecure c:\\fido\\unsec\#in inbound c:\\fido\\\#in В версии 1.0 начиная со снапшота 1.0a-317 этот искейпинг можно не использовать, поскольку началом комментария в середине строки стала считаться последовательность пробела и решетки (" #") или табуляции и решетки. Примеры ниже. Нет комментария: temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name Комментарии: inbound c:\\fido\\in # это комментарий, потому что есть пробел перед "#" # Вся эта строка - комментарий ---------------------------------------------------------------------------- 27. Есть ли возможность запуска приложения в binkd по событию? Если речь о временных событиях - нет, и не будет. Для управления событиями существуют разнообразные планировщики, в современных операционных системах они включены в поставку. Если же речь о событии приема некоторого файла - давно реализовано (начиная с версии 0.9), см. в конфиге токены exec и flag. ---------------------------------------------------------------------------- 28. В чем различие между binkd/w32 и binkd/w9x? binkd/w32 - традиционный вариант binkd, консольное win32 приложение. binkd/w9x - GUI-приложение win32, создающее временные консольные окна по мере необходимости. Если запустить binkd/w32 в существующем консольном окне (например, в окне command.com или cmd.exe), он будет работать в том же окне. В отличие от него binkd/w9x при запуске сразу же отдает управление вызвавшей его задаче. Необходимость разработки binkd/w9x была вызвана тем, что в Windows 95/98/Me и в Windows NT/2000/XP/2003 есть несколько серьезных различий. Во-первых, консоль реализована по-разному. Основное отличие - консоль в Windows 9x не воспринимает сигналы shutdown и window close, поэтому работающий binkd/w32 не может корректно завершиться при закрытии окна и завершении (перезагрузке) системы. Во-вторых, в версиях Windows разных веток сильно различаются принципы работы сервисов. В итоге, binkd 1.0a/w32 может работать только сервисом Windows NT и последующих, а binkd 1.0a/w9x - только сервисом Windows 95/98/Me. В будущем планируется сделать поддержку сервисов NT в binkd/w9x. Корректная поддержка работы binkd/w32 сервисом под Windows 9x невозможна из-за описанных особенностей реализации консоли в этих системах. ---------------------------------------------------------------------------- 29. Сильно не хватает чата в binkd! И время синхронизировать хочется. Чтобы початиться - используй talk, icq или irc (да хоть Gadu-Gadu). Если есть, где запустить binkd, то по тому же каналу может pаботать и все перечисленное, и многое другое. Чаться до умопомpачения, если сильно надо. И для синхронизации времени по IP есть специальные утилиты, например, ntpdate. Причем ntp* берут время с серверов точного времени, в отличие от мэйлеров. ---------------------------------------------------------------------------- 30. binkd-service принимает входящее соединение только после исходящего. Такое поведение замечено при работе binkd/w32, установленного сервисом на компьютер с работающим McAfee Firewall. При этом файрвол стартует после запуска binkd и не обнаруживает его активность, соответственно не дает установиться соединению. Соответственно нужно обеспечить запуск binkd после инициализации файрвола. Возможные решения: отказаться от использования binkd как самостоятельного Windows NT service и запускать его из-под внешнего менеджера сервисов, или запускать как обычную программу, либо отказаться от использования такого файрвола. ---------------------------------------------------------------------------- 31. Ошибка "start_file_transfer: ECHO is off.: No such file or directory". Сообщение в логе: в английской версии Windows ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file or directory в русской версии Windows ? 10 Sep 20:37:23 [1664] start_file_transfer: Режим вывода команд на экран (ECHO) отключен.: No such file or directory Такая ситуация возникает в том случае, когда полл создан командой echo >> 12345678.ilo При этом первая строка файла - сообщение от команды echo о текущем статусе эховывода на экран. О том, как правильно создавать полл см. вопрос 32. См. также вопрос 09. ---------------------------------------------------------------------------- 32. Как правильно создать полл. Чтобы создать полл в BSO, нужно создать пустой файл NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo или NNNNMMMM.flo. Имя файла состоит из: шестнадцатиричного номера сети (первые 4 знака), шестнадцатиричного номера узла (4 знака с пятого по восьмой), точки, знака атрибута (i = immediate, c = crash, d = direct, f = normal) и букв "lo". Конечно, если нужный файл уже существует, создавать его не нужно, более того: во избежание потери почты нужно следить чтобы он не был переписан. Наиболее универсальная команда (работает в DOS, Windows, OS/2, клонах unix, CP/M и многих других): cd . >>NNNNMMMM.flo В DOS, Windows, OS/2 также работает: type nul >>NNNNMMMM.flo В клонах UNIX можно использовать на выбор одну из нескольких команд: touch NNNNMMMM.flo echo -n "" >>NNNNMMMM.flo >>NNNNMMMM.flo cat /dev/null >>NNNNMMMM.flo ---------------------------------------------------------------------------- 33. Что означают цифpы в квадpатных скобках в логе? Это PID (Process ID) в мультипроцессных версиях binkd (например, в версиях для юниксоподобных ОС) или TID (Thread ID) в многопоточных версиях binkd (например, в версиях для Windows). Номер процесса (или потока) облегчает анализ лога: позволяет выделить сообщения от одного процесса (потока) binkd. В частности, помогает разделить сообщения, относящиеся к разным сессиям. ---------------------------------------------------------------------------- 34. Как настроить эхотаг для отправки исходящего нетмейла? Нужно настроить программу упаковки нетмэйла таким образом, чтобы почта упаковывалась в пакеты BSO (Binkley Style Outbound). Если такая программа до сих пор не использовалась, нужно её установить. В некоторых модемных мэйлерах возможность упаковки нетмэйла в BSO предусмотрена разработчиками (например, в T-mail, начиная с версии 2500). См. также ответ на вопрос 18. ---------------------------------------------------------------------------- 35. Зачем нужна директива share в конфиге (shared aka)? Shared AKA используется для отправки нетмэйла по одному из нескольких альтернативных маршрутов (одному из нескольких линков) и является защитой от "падения" линка. Для примера в конфиге share 2:999/999 2:5020/52 2:5020/238 указаны аплинки 2:5020/52 и 2:5020/238 с подстановкой (точнее, добавлением) AKA 2:999/999. Затем настраиваешь паковку netmail на адрес 2:999/999, и binkd отправит его на того аплинка, с которым будет первая сессия. Если нет связи с 2:5020/52 - нетмэйл уйдёт к 2:5020/238. Если нет связи с 2:5020/238 - уйдёт к 2:5020/52. При этом адресат пакета 2:999/999 будет заменен на реального получателя, и в пакет будет проставлен пароль пакета того линка, кому будет отправлено письмо. Shared AKA реализован в binkd версий 1.0 и старше. ---------------------------------------------------------------------------- 36. Зачем нужна директива ftrans в конфиге? Чтобы разместить binkd и тоссер на разных компьютерах в сети, при этом аутбаунд располагается на сетевом диске и пути к нему разные. Более того, тоссер может работать на машине с FAT и путями вида d:\long\path\to, а binkd - на юниксовой с путями вида /mnt/samba/wincomp1/path/to. ---------------------------------------------------------------------------- 37. Почему binkd в Windows работает сервисом только от администратора? В руководствах по информационной безопасности рекомендуется каждый сервис выполнять с правами специального пользователя. Но при попытке сделать это для binkd получаем ошибку, и чтобы добиться результата, нужно изменить настройку. Проще всего взять версию 1.0a-499 или старше: в этой версии требуемые binkd права минимизированы. Если же используется binkd 0.9.x, нужно изменить настройку в операционной системе. Во-первых, установить и запустить сервис в Windows может только администратор. Дать право другому пользователю на установку, запуск, остановку и удаление сервисов можно в "локальной политике безопасности"; также можно воспользоваться программой subinacl.exe, которую можно скачать тут: http://www.microsoft.com/en-us/download/details.aspx?id=23510 Во-вторых, binkd 0.9.x при работе сервисом требуется право записи в ветку реестра HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters (если Вы указываете при установке сервиса имя для сервиса, вместо "binkd-service" будет выбранное имя, из которого удалены пробелы). Для описываемой ситуации установить сервис можно из-под учетной записи администратора, затем отредактировать параметры запуска сервиса в программе MMC из остнастки "Services" ("Службы"): задать пользователя (например, fido) и пароль. Затем для версии 0.9.x нужно дать право на редактирование этой ветки пользователю fido, это можно сделать в редакторе реестра или с помощью упомянутой выше программы subinacl.exe. Чтобы можно было запускать или останавливать сервис binkd обычному пользователю, нужно выдать ему соответстствующие права, например, так (для пользователя username и сервиса с именем binkd-service): subinacl /service binkd-service /grant=username=TO Подробнее см. http://support.microsoft.com/kb/288129/en-us и http://tinyurl.com/kqnbpfu ---------------------------------------------------------------------------- 38. Кто-нибудь прикрутит, наконец поддержку нодлиста к бинкд? binkd - это демон, реализующий протокол binkp. Он выполняет только одну эту свою функцию. В нём нет сканирования netmail (AMA), чата, ареафикса и прочих фидошных рюшечек. Он может использоваться вообще вне фидо, для пакетной передачи файлов. Он реализован достаточно гибко для того, чтобы удовлетворять "хотелки" юзеров, и чтобы им для этого не нужно было патчить сишный код и перекомпилировать бинарники. Часть параметров задаётся в текстовом файле конфигурации, а когда этого оказывается недостаточно - можно использовать перловые хуки. Фактически, это часть конфигурации, записанная на языке perl. Таким образом можно, например, хранить информацию о линках и паролях в mysql или ldap и делать много других штук. Взятие адресов из фидошного нодлиста - одна из таких функций, органично реализуемых через perl hooks. В случае каких-либо изменений в формате нодлиста нет необходимости выпускать новую версию binkd и обновлять её на всех узлах - достаточно внести изменения в перловую фунцию парсинга нодлиста (т. е., фактически, в конфиг), оставив бинарник прежним. Однако, если есть веские причины парсить нодлист именно самим бинарником binkd (например, если binkd работает в стиральной машине, для которой нет перла, а использование DDN по каким-то причинам нежелательно), и если кто-то пришлёт патч для парсинга нодлиста в binkd - с большой вероятностью этот патч будет применен, и binkd будет поддерживать нодлист natively. ---------------------------------------------------------------------------- 39. binkd поддерживает домены с символами не из ASCII? Да. Причём в OS Windows такой домен можно прописать прямо в файл конфигурации binkd. В Linux и OS X необходимо предварительно перекодировать доменное имя в пьюникод (punycode). ---------------------------------------------------------------------------- A1. Обнаружил баг в binkd! Попpобуйте освежить веpсию (возможно, ошибка уже исправлена). Если не помогло - надо "пинать" pазpаботчиков: binkd-bugs@happy.kiev.ua Pavel Gulchouck 2:463/68 pассылка binkd-dev@happy.kiev.ua В письме нужно подробно описать ситуацию возникновения ошибки, при этом обязательно указать номеp веpсии и приложить вырезку из подpобного лога (loglevel больше 5). Хорошее общее руководство по составлению багрепорта написал Саймон Тэтхем: http://www.chiark.greenend.org.uk/~sgtatham/bugs-ru.html ---------------------------------------------------------------------------- A2. Как связаться с разработчиками. Автор первых версий binkd - Дмитрий Малов - ныне отошел от проекта. C 2000-го года проект координирует Павел Гульчук 2:463/68 (Pavel Gulchouck ), он же и пишет большую часть кода. Для общения разработчиков и тестеров создана рассылка: binkd-dev@happy.kiev.ua. Чтобы на нее подписаться, напишите письмо: To: majordomo@happy.kiev.ua Subject: subscribe binkd-dev ---------------------------------------------------------------------------- A3. Хочу сразу узнавать об изменениях в binkd! Подпишись на список рассылки binkd-diffs@happy.kiev.ua: по нему отправляются изменения в исходниках (заодно можно и проверить патчи на ошибки). Инструкция в предыдущем ответе. Для обсуждения binkd, общения пользователей и разработчиков существуют две эхоконференции FIDOnet: русскоязычная RU.BINKD и англоязычная (международная) BINKD. Ищите на эхохабах :). ---------------------------------------------------------------------------- A4. А когда binkd будет делать ... ? Возможно, будет когда-нибудь. А может и не будет. Можно подождать, пока желаемая возможность будет реализована или устранить "недостаток" самостоятельно - ведь исходники открыты. При этом имеет смысл прислать разработчикам патч: возможно, он будет включен в основную ветку и наверняка будет размещен на вебсайте или FTP. === Конец.