рЕЙЯР МЮОХЯЮМ Б ЙНДХПНБЙЕ KOI8-R. оЕПЕЙКЧВХРЕ МЮ МЕЕ ЯБНИ БЕА-АПЮСГЕП
            Основные моменты настройки мейлера bforce
            ─────┐для ответа на входящие вызовы.┌────
                 └──────────────────────────────┘

Как известно, мейлер bforce может соединяться с другими фидошными станциями
как по телефонным линиям, так и по IP каналам. В первом случае мейлер реализует
стандартную EMSI-сессию, а во-втором, он способен использовать протоколы BinkP
(стандартный порт 24554) и Ifcico (стандартный порт 60179). Первому протоколу
соответсвует ноделистовый флаг IBN, а второму -- IFC.

В отличие от других мейлеров (например таких, как t-mail под win32 или binkd),
bforce сам не отслеживает входящие вызовы. Этим занимаются другие программы,
которые анализируют входящие сообщения и, если они оказываются фидошными
вызовами, передают управление мейлеру.

Таким образом для того, чтобы bforce мог отвечать на входящие звонки, требуется
настройка дополнительного програмного обеспечения. Ниже я в кратце рассмотрю
настройку программы mgetty, которая отслеживает сигналы из com-порта и отвечает
на телефонные звонки и настройку супердемона xinetd, который отслеживает
входящие вызовы по каналам tcp/ip.


           ╔═══════════════════════════════════════╗
           ║1. Ответ на входящие телефонные звонки.║
           ╚═══════════════════════════════════════╝

Сигналы от модема отслеживает демон (резидент) mgetty. Это программа, которая
постоянно сидит в памяти компьютера, заставляет  модем поднимать телефонную
трубку, анализирует сигнал, поступающий с той стороны телефонной линии и, в
соответствиии с результатами этого анализа, передает управление той или иной
прикладной программе. В случае фидошного вызова это будет наш bforce.

Mgetty входит в комплект подавляющего большинства дистрибутивов linux. Поэтому
я не буду останавливаться на том, где взять эту программу, а только замечу, что
для того, чтобы она понимала "специфику" фидошных сообщений, она должна быть
откомпилирована с ключом "-DFIDO". Если вы компилируете программу из
исходников, обратите на это внимание. Сложнее, если у вас например RPM. Так
создатели Red Hat (Fedora Core) включают в дистрибутив пакет программы с
отключенной фидошной функцией. В таком случае самое простое -- найти пакет от
другого производителя, где эта функция включена. Например на моем RH 9.0 стоит
mgetty от ASP и прекрасно себя чувствует.

Будем считать, что с установкой разобрались, перейдем к настройке. У меня файлы
конфигурации mgetty находятся в каталоге "/etc/mgetty+sendfax/":


[root@news mgetty+sendfax]# ls -l
итого 48
-rw-------    1 root     root         1515 Апр 28  2003 dialin.config
-rw-------    1 root     root           86 Янв 25  2003 faxheader
-rw-------    1 root     root         2368 Янв 25  2003 faxrunq.config
-rw-------    1 root     root         1532 Янв 25  2003 faxspool.rules.sample
-rw-------    1 root     root         2953 Мар 17 13:04 login.config
-rw-------    1 root     root         1641 Окт 30  2004 mgetty.config
-rw-------    1 root     root         1046 Янв 25  2003 sendfax.config
-rw-------    1 root     root        18101 Янв 25  2003 voice.conf

Приведу несколько цитат из конфигурационных файлов. Основной файл конфигурации
mgetty.config

=====================================
debug 4
speed 57600

# настройки порта com1 (ttyS0 в unix-трансляции):
# возможно в вашей системе здесь будет другой значение
# например ttyS1 (com2)
port /dev/ttyS0
debug 3

# указываем, что у нас нет факса:
data-only y

# настраиваем диалог "программа-модем" для инициализации модема:
init-chat "" ATZ OK AT&F OK 

# и для ответов на входящие:
answer-chat "" ATA CONNECT \c \r 
======================================


Файл анализа входящих вызовов login.config:

===========================================
# Если звонит мейлер, передаем управление bforce:
/FIDO/  fido  uucp  /usr/local/bin/bforce @
# в этой строке fido и uucp -- пользователь и группа, от имени
# которых запускается mgetty

# Если звонит интернет-пользователь, передаем управление pppd:
/AutoPPP/ -    a_ppp   /usr/sbin/pppd auth -chap +pap

# Во всех остальных случаях передаем управление утилите login:
*       -       -       /bin/login @
==============================================

Следует обратить внимание на следующие основные моменты

1. Mgetty должен быть скомпилирован с -DFIDO
2. Файлы конфигурации в /etc/mgetty+sendfax обязаны иметь права chmod 0600 и
   chown root:root
3. Пути к программам в login.config должны соответствовать реальности (нередко
   бывает наоборот ;)
4. Пользователь и группа, от имени которых запускается bforce должны быть
   _корректными_!!! Обычно этот пункт вызывает самые большие проблемы. То не
   хватает прав на обращение к модему, то не хватает прав для записи в inbound,
   то еще какой-нибудь геморой. 90% проблем заключены именно в этом пункте.


Дальше. Запуск mgetty осуществляется через файл /etc/inittab
откорректируйте там (или напишите если ее нет) такую строчку:

S0:2345:respawn:/sbin/mgetty -D /dev/ttyS0

Здесь:
S0 -- идентификатор. Должен быть уникальным (нигде больше в этом файле не
      повторяться).
2345 -- уровни запуска, при которых стартует mgetty (если не знаете что это
      такое, пропишите как указано здесь).
respawn -- указывает системе перезапускать mgetty после того, как она завершит
      работу (в любом случае пропишите как указано здесь).
/sbin/mgetty -- путь к программе
-D -- ключ, сообщающих Mgetty, что на линии нет факса (data only)
/dev/ttyS0 -- порт, на котором сидит модем.

Если после перезагрузки на модеме загорелась лампочка TR, то все настройки
выполнены правильно и mgetty подхватил модем.


И еще. Управление mgetty осуществляется файлом /etc/nologin.ttyS0 (расширение
может быть другим, если модем находится на другом порту). Наличие такого файла
запрещает mgetty поднимать трубку. Таким образом, прописав в crontab директивы
'touch /etc/nologin.ttyS0' и 'rm /etc/nologin.ttyS0' можно определять время,
когда ваша станция отвечает на входящие.

           ╔═══════════════════════════════════════╗
           ║2.  Ответ на входящие звонки по tcp/ip.║
           ╚═══════════════════════════════════════╝

Как было написано выше, bforce понимает не только сеансы по телефонным линиям,
но и по tcp/ip. Здесь мейлер тоже не сам отслеживает входящие вызовы а
принимает управление от демона xinetd (может быть inetd, но его мы здесь не
рассматриваем).

Итак, вам надо:

1. Отредактировать файл /etc/services и проверить в нем наличие следующих
   строк:

binkp           24554/tcp                       # Binkley
binkp           24554/udp                       # Binkley

fido            60179/tcp                       # Ifmail
fido            60179/udp                       # Ifmail

2. Скопировать файлы bforce-binkp и bforce-ifc в каталог /etc/xinetd.d/:

# cd /etc/xinetd.d/
[root@news xinetd.d]# ls -l bforce-*
-rw-r--r--    1 root     root          424 Май  3 12:54 bforce-binkp
-rw-r--r--    1 root     root          423 Май  3 13:40 bforce-ifc
[root@news xinetd.d]#

3. Откорректируйте следующие значения в этих файлах:

disable -- должно быть в значении No (значение yes отключает сервис)
user -- должен быть корректным (если вы разобрались с mgetty, то это для вас
   не вопрос)
server -- проверьте правильность пути к программе.

4. Перезапустите xinetd:

[root@news xinetd.d]# /etc/init.d/xinetd restart
Останавливается xinetd:                                    [  ОК  ]
Запускается xinetd:                                        [  ОК  ]
[root@news xinetd.d]#

5. Протестируйте, работает ли:

[root@news xinetd.d]# telnet localhost 24554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
-"OPT CRAM-MD5-27a76d745143285f7742-SYS vz111 station-ZYZ Tim Tashbaev-LOC
Bryansk, Russia-PHN 7-083-273-38-30-NDL MO,V34,TCP,IBN-TIME 2005/05/03
15:23:20-3VER binkleyforce/0.22.8.ugenk4/linux-gnu binkp/1.0-2:6001/10@fidonet

Хм... Работает. Сам удивляюсь. Нечто похожее должно быть и при обращении к
порту 60179 (telnet localhost 60179).

В общих чертах так. Если будет не получаться, то рекомендую действовать в
следующей последовательности:

1. Перечитать все еще раз с самого начала.
2. Подумать.
3. Полазить в манах (man mgetty, man inittab, man xinetd, etc)
4. Еще раз подумать.
5. Написать в эхоконференцию ru.unix.ftn


Искренне ваш... Igor Mitichev (2:6001/9.0)
3 мая 2005 г. 15:30