Ключевые слова:ifmail, fido, (найти похожие документы)
From: Ilgiz Kalmetev <ilgiz@mail.rb.ru>
Subject: Как настроить, установить и использовать ifmail
Greg Frydenlund, fidonet 1:125/710
Русский перевод Ilgiz Kalmetev, ilgiz@mail.rb.ru
Файл config пакета ifmail перевел Alexey Mahotkin, alexm@hsys.msk.ru
Необходимые программы
ifmail-2.11
fmail - это транспортный пакет rfc<->ftn и ftn<->rfc, который работает
совместно с агентом транспортировки новостей и агентом транспортировки
почты. Для активизации он использует getty. Он очень похож на uucico
из пакета UUCP. На момент написания последняя версия была 2.11 .
ifmail разработал Eugene G. Crosser (crosser@average.org или
2:5020/230).
Последнюю версию можно найти:
* ftp://ftp.average.org/pub/ifmail
* ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin/
* ftp://sunsite.unc.edu/pub/Linux/system/Fido/
* или на любом зеркале sunsite.
ifmail-2.10-tx8.4
tx версии имеют некоторые улучшения, вроде поддержки charset, MIME
quoted printable, лучше работают с MSGID, обрабатывают ссылки и
различают некоторые PGP. Также есть возможность обрабатывать
Gatebau-style преобразования MSGID<->Message-ID.
txt версию поддерживает Pablo Saratxaga (srtxg@linux.chanae.stben.be
или 2:293/2219 или 4:850/1.29)
Последнюю версию можно найти:
* ftp://ftp.z2.fidonet.org/pub/linux/Fido/
* или на большинстве зеркал sunsite.
_________________________________________________________________
Сборка & установка ifmail
Во-первых, вы захотите рапаковать ваш архив с ifmail. Я распаковываю
его в каталог /etc . Вы можете поместить его в любой каталог по вашему
желанию. Только помните, что надо правильно изменить все пути.
Во-вторых, вы захотите подредактировать главный кофигурационный файл
компиляции /etc/ifmail/CONFIG. Я удалил их объяснения для краткости.
ifmail CONFIG
CONFIGFILE = \\\"/etc/ifmail/config\\\"
DEBUGFILE = \\\"/var/log/ifmail/ifdebug\\\"
LOGFILE = \\\"/var/log/ifmail/iflog\\\"
MAILLOG = LOG_LOCAL0
NEWSLOG = LOG_LOCAL0
CICOLOG = LOG_LOCAL0
LOCKDIR = \\\"/var/spool/uucp\\\"
PUBDIR = \\\"/var/spool/uucppublic\\\"
NEWSSPOOL = \\\"/var/spool/news\\\"
GEN_OPTS = -DDONT_REGATE -DSLAVE_SENDS_NAK_TOO \\\\
-DRNEWSB -DRESTAMP_OLD_POSTINGS=25 -DBELEIVE_ZFIN=1 \\\\
-DKEEP_MSGID_ON_SPLIT -DIGNORE_SOFTCR -DREFERENCES_MSC96 \\\\
-DRELAXED -DFORCEINTL -DHAS_TCP -DAREAS_HACKING \\\\
-DRESTAMP_FUTURE_POSTINGS -DFSCHTML -DMACHIGAI \\\\
-DALLOW_RETURNPATH -DKEEP_TEARLINES_CLEAN
# -DFORCE_REPLYTO -DTERMAIL_HACK
# -DGATEBAU_MSGID -DPUDDLE_GATE -DPCBOARD_GATE -DJE
# -DALLOW_CONTROL -DIRTY_CHRS -DPARANOID -DNEED_UUCPFROM
# Linux:
OPTS = -DHAS_STATFS -DSTATFS_IN_VFS_H -DHAS_SETSID -DHAS_NDBM_H \\\\
-DDONT_HAVE_TM_GMTOFF -DHAS_TERMIOS_H -DASCII_LOCKFILES \\\\
-DHAS_FSYNC -DHAS_IOCTL_H -DHAS_REGEX_H \\\\
-DHAS_SYSLOG -DNEED_BSY \\\\
-DREGEX_NEED_CARET -DNEED_FORK -DNEED_TRAP \\\\
${GEN_OPTS}
BINDIR = /usr/lib/ifmail
OWNER = fnet
GROUP = uucp
MODE = 0711
SMODE = 4710
Возможно вы захотите изменить пути на более подходящие для вашей
системы. Например вы можете назместить журнал с отладочными
сообщениями в каталог /tmp и журнал работы в /var/log/ifmail, который
вы тоже можете изменить, это в действительности неважно, поскольку
каждый логфайл ifmail 2.3 также обрабатывается syslogd, (мы вернемся к
этому позже).
Slackware 3.1 предлагает создавать lockfile в /var/spool/uucp, что
может привести к конфликтам с запущенным getty на этом порту. В этом
случае можно изменить /LOCKDIR/ на /var/spool/uucppublic.
Теперь мы готовы к компиляции. Введите в командной строке:
make all
и при отсутствии ошибок
make install
При компиляции ifmail возможны проблемы. Некоторые дистрибутивы
Slackware могут иметь ndbm.h файл, который может привести к ошибкам
компиляции. Чтобы решить эту проблему, отредактируйте файл
/usr/include/ ndbm.h . Поместите эти две строки самыми первыми в
файле.
#ifndef _NDBM_H_
#define _NDBM_H_ 1
Затем самой последней строкой добавьте:
#endif /* _NDBM_H_ */
В некоторых дистрибутивах linux могжет отсутствовать ndbm.h файл. Вы
всегда можете найти их в исходниках пакета db-devel-1.85-10.ELF.tar.gz
Другая проблема может быть связана с файлом trap.c и ядрами ветки 2.1.
Их можно исправить так. Во-первых, удалите -DNEED_TRAP (не
рекомендуется) или, во-вторых, добавьте -DPRE_21_LINUX в список опций
компиляции.
Также есть FAQ в /etc/ifmail/misc, который вы можете изучить для
решения возникших проблем.
Сейчас мы установим config файл ifcico. Вы найдете его пример в
/etc/ifmail/misc/config. Скопируйте его в /etc/ifmail или в то место,
которое былп указано в /etc/ifmail/CONFIG и подредактируйте его в
соответствии со значениями вашей системы.
Файл config пакета ifmail
#
# ФАЙЛ КОHФИГУРАЦИИ IFMAIL
#
# Copyright (C) Alexey Mahotkin 1999
#
# $Id: ifmail.config-ru,v 1.1 1999/05/03 16:38:49 alexm Exp $
#
# Это основной файл конфигурации, используемый программами пакета
# ifmail. По умолчанию он находится в /etc/ifmail/config, но его имя
# можно переопределить для каждой программы, используя ключ командной
# строки ``-I\\\'\\\'.
# Этот файл конфигурации ориентирован на версию ifmail 2.14 с
# наложенными патчами os5 от Сергея Оськина (ftp://oskin.macomnet.ru)
# В дальнейшем я собираюсь четко обозначить, какие параметры можно
# использовать только с этими патчами, а какие существуют и в
# оригинальном ifmail (http://www.average.org/ifmail/)
# Формат этого файла очень прост:
#
#
#
# Регистр букв в параметрах игнорируется.
# Пустые строки, строки, содержащие только пробелы, а также строки,
# начинающиеся с символа ``#\\\'\\\', игнорируются.
# В файл конфигурации можно включить другой файл с помощью директивы
# ``include\\\'\\\', например:
#
# include /etc/ifmail/passwd
#
### Информация о станции
# ====================
#
# Основной адрес станции
#
Address 2:5020/433@fidonet
#
# Дополнительные адреса (AKA)
#
Address 2:5020/286.16@fidonet
#
# Здесь описываются данные, передающиеся во время EMSI-сессии. В
# настоящий момент здесь нельзя использовать символы ``]\\\' и ``}\\\'\\\',
# поэтому избегайте их.
#
# Hазвание станции
#
Name those who go below
#
# Местонахождение станции
#
Location Moscow, Russia
#
# Имя системного оператора
#
SysOp Alexey Mahotkin
#
# Телефон станции
#
Phone +7-095-SEE-NODELIST
#
# Скорость модема
#
Speed 9600
#
# Флаги из нодлиста
#
Flags XA,V32B,V42B
#
### Журналирование
# ==============
#
#
# ВHИМАHИЕ: в настоящий момент сессионные пароли записываются в
# журнальные файлы, поэтому убедитесь, что эти файлы недоступны для
# чтения всеми, кроме владельца.
#
#
# Основной журнальный файл
#
LogFile /var/log/ifmail/iflog
#
# Отладочный журнальный файл
#
DebugFile /var/log/ifmail/ifdebug
#
# Количество отладочной информации. Это значение по умолчанию можно
# переопределить для каждой конкретной программы с помощью ключа
# командной строки ``-x\\\'\\\'.
#
Verbose 0
#
### Пути к программам и файлам
# ==========================
#
#
## Каталоги с входящими и выходящими файлами
# -----------------------------------------
#
# Общий каталог для принятых почтовых пакетов и файлов
#
Inbound /var/spool/ifmail/inb
#
# Каталог для почтовых пакетов и файлов, принятых от узлов, с которыми
# у нас запароленные сессии
#
ProtInbound /var/spool/ifmail/inb.prot
#
# Каталог для почтовых пакетов и файлов, принятых от узлов,
# присутствующих в наших нодлистах
#
ListInbound /var/spool/ifmail/inb.list
#
# Основной каталог для исходящих почтовых пакетов и файлов блокировок.
# Пакеты для узлов из других зон будут помещаться в ``outb.\\\'\\\', а
# пакеты для узлов из других доменов -- в ``.\\\'\\\'.
#
Outbound /var/spool/ifmail/outb
#
# Замена путей для мэйлеров, работающих под DOS. Если вы укажете этот
# параметр, то исходящие почтовые пакеты будут помещаться в Outbound,
# но пути к ним в .?LO-файлах будут записываться как указано в этом
# параметре.
#
DosOutbound h:\\\\spool\\\\ifmail\\\\outb
#
## Файловые запросы (FREQ\\\'и)
# -------------------------
#
# Внешний обработчик файловых запросов. Если этот параметр не указан,
# используются параметры ``public\\\'\\\' и ``magicname\\\'\\\'.
#
Ext_RP /usr/lib/ifmail/ifextrp
#
# Каталог с файлами, доступными для файлового запроса.
#
Public /var/spool/uucppublic
#
# Каталог с исполняемыми файлами для обработки \\\"волшебных\\\" файловых
# запросов. Если в этом каталоге есть запрошенный файл и его можно
# выполнить, то он выполняется, и то, что он напечатал на стандартном
# выходе, отсылается запрашивавшей системе. Если он неисполняемый, то
# в нем должен находиться список файлов, которые отсылаются в ответ на
# файловый запрос.
Magic /var/lib/ifmail/magic
#
## Hодлисты
# --------
#
# Основной нодлист. Указанное имя при необходимости дополняется
# номером .NNN.
#
Nodelist /var/spool/ifmail/nl.d/nodelist
#
# Дополнительные нодлисты и нодлисты других зон и доменов.
# Предполагается, что они находятся в том же каталоге, что и основной
# нодлист. Формат таков:
#
# Nodelist
#
Nodelist pnt5020.ndl 2:5020/0@fidonet
Nodelist chatlist 100:0/0@chateaunet
Nodelist private.ndl 2:5020/0@fidonet
#
## Преобразование имен
# -------------------
#
# Файл системных алиасов. Его формат:
#
#
#
SysAlias /var/spool/ifmail/sysalias
#
# Доменное имя, добавляемое к имени пользователя при использовании
# системных алиасов.
#
MyFQDN pccross.msk.ru
#
# Если этот параметр указан (HЕ РЕКОМЕHДУЕТСЯ!), то в сообщениях,
# адресованных соответствующему пользователю, будут искаться заголовки
# RFC. Если этот параметр не указан, то RFC-заголовки ищутся в начале
# всех писем.
#
# MagicName UUCP
#
# Преобразование доменов. Формат:
#
# DomTrans
#
# При преобразовании происходит текстуальная замена первого
# совпадающего FTN-домена на RFC-домен. Рекомендуется указывать
# начальную точку в имени домена. Если не указано ни одного параметра
# DomTrans, то происходит подстановка по умолчанию ``fidonet\\\'\\\' в
# ``fidonet.org\\\'\\\'. Если указан хотя бы один DomTrans, то следует явно
# указать необходимость такой подстановки.
#
DomTrans .n5020.z2.fidonet .fido.pccross.msk.su
DomTrans .n5030.z2.fidonet .fido.tctube.spb.su
DomTrans .fidonet .fidonet.org
#
# Автоматически обновляемая база соответствий имен пользователей и их
# адресов. Если этот параметр не указан или база недоступна, то в
# FTN-письмах генерируются кладжи @REPLYADDR и @REPLYTO.
#
Database /var/spool/ifmail/ifdbm
#
## Прочее
# ------
#
# Файл, в котором хранятся уникальные ID\\\'ы
#
Sequencer /var/spool/ifmail/seq
#
# Файл, в котором хранится описание соответствие имен эхо-конференций
# и ньюсгрупп. Формат таков:
#
#
#
# обычно \\\"fido7\\\"
#
Areas /etc/ifmail/Areas
#
# Таблицы преобразования кодировок символов. Формат таблиц таков:
#
#
#
# Символы могут быть указаны следующим образом:
# * символ в одиночных кавычках (\\\'a\\\');
# * десятичный номер символа (123);
# * восьмиричный номер символа (0123);
# * шестнадцатиричный номер символа (0x7f).
#
# Строки, начинающиеся с символа ``#\\\'\\\' являются комментариями и
# игнорируются.
#
#
# Преобразование из RFC-сообщений в FTN-сообщения
#
OutTab /usr/lib/ifmail/outkoi8alt
#
# Преобразование из FTN-сообщений в RFC-сообщения
#
InTab /usr/lib/ifmail/outaltkoi8
#
## Местонахождение различных программ
# ----------------------------------
#
# Транспорт для отсылания почтовых сообщений. ``$F\\\'\\\' заменяется на
# адрес из поля ``From:\\\'\\\', ``$T\\\'\\\' --- на адрес из поля ``To:\\\'\\\'.
#
sendmail /usr/lib/sendmail -f $F $T
#
# Программа для постинга статей в ньюсгруппы.
#
rnews /usr/local/news/bin/rnews
#
# Программа iftoss, используемая ifunpack
#
iftoss /usr/lib/ifmail/iftoss
#
# Программы для распаковки почтовых пакетов, используемые ifunpack.
# ``$F\\\'\\\' заменяется на имя почтового пакета.
#
unzip /usr/bin/unzip -ojq $F
unarj /usr/bin/unarj e $F
unarc /usr/bin/unpack $F
unzoo /usr/bin/zoo -extract $F
#
# Программа для упаковки почтового пакета, используемая ifpack.
# ``$F\\\'\\\' заменяется на имя почтового пакета, ``$P\\\'\\\' --- на список имен
# .PKT-файлов.
#
packer /usr/bin/zip $F $P
#
### Обработка сообщений
# ===================
#
# Префиксы имен ньюсгрупп, статьи в которые не следует передавать в
# FIDO.
#
BadGroup relcom.ads.
BadGroup relcom.commerce.
#
# Максимально допустимое количество групп в поле ``Newsgroups:\\\'\\\'.
# Если статья помещена одновременно в несколько групп, и их количество
# превышает максимально допустимое, то статья не попадет в FIDO. Если
# этот параметр не указан или равен нулю, то предела не существует.
#
MaxGroups 5
#
# Каким символом заменять пробел между именем и фамилией пользователя.
# По умолчанию ``.\\\'\\\'.
#
Dots _
#
# Помещать ли в FTN-письма поля ``Received:\\\'\\\'. Значение по умолчанию
# ``Yes\\\'\\\', рекомендуется ``No\\\'\\\'.
#
Received No
#
# Максимальный размер пакованного пакета, в байтах. Если этот размер
# превышен, то ifmail создаст следующий пакет.
#
MaxFSize 300000
#
# Максимальный размер непакованного пакета, в байтах.
# *.?ut files are NOT created if nonzero specified, you must run ifpack
# to make packets go out. (XXX) (что это означает?)
MaxPSize 30000
#
# Максимальный размер сообщения, конвертируемого из Internet в FIDO, в
# байтах. Если этот размер превышен, ifmail разбивает сообщение на
# несколько частей. По умолчанию 12300 байт.
#
MaxMSize 12300
#
# Типы пакетов (флаворы), не подпадающие под ограничение на размер
# пакета. Такие пакеты также не будут паковаться ifpack\\\'ом, а сразу
# помещаются в готовые к отправке пакеты. Флавор ``m\\\'\\\' означает \\\"весь
# нетмейл\\\".
#
NonPacked cm
#
# Файл с журналом новостей в формате cnews (XXX: какой файл в INN
# можно использовать вместо него?)
#
NewsLog /usr/lib/new/log
#
# Временная база данных SEEN-BY\\\'ев.
#
MsgIDBM /tmp/ifmsids
#
### Опции управления модемом
# ========================
# С этой строки, значения могут быть указаные логическими выражениями в
# round brackets. Допустимые операторы: \\\'!\\\', \\\'&\\\', \\\'|\\\', \\\'Xor\\\'.
# Возможны элементы:
# - Флаги нодлиста (наприемр, \\\"CM\\\", \\\"MNP\\\", \\\"V32\\\" итд.)
# - speed
# где - это \\\'=\\\', \\\'!=\\\', \\\'<\\\', \\\'>\\\', \\\'<=\\\',\\\'>=\\\'
# - address
# где - это (возможно неполный) фидоадрес, например, \\\"5020/*\\\"
# - time [,,...]
# где - запись с указанием дней и времени, например,
# Wk2000-0900,Sat1800-0000,Sun
# - phone
# например, \\\"phone 7-095-\\\"
# Параметры дозвонки
# Параметры \\\"ModemPort\\\", \\\"ModemReset\\\", \\\"ModemDial\\\", \\\"ModemHangup\\\".
# Если параметр из этого списка определяется несколько раз, то используется
# первое подходящее значение
# Параметры \\\"PhoneTrans\\\", \\\"ModemConnect\\\", \\\"ModemError\\\".
# Если параметр из этого списка определяется несколько раз, то используются
# все эти значения.
# В отправляемых и ожидаемых строках можно делать следующие подстановки:
# \\\\\\\\ символ \\\'\\\\\\\'
# \\\\r возврат каретки (0x0d)
# \\\\n новая строка (0x0a)
# \\\\t табуляция (0x09)
# \\\\b забой (0x08)
# \\\\s пробел (0x20)
# \\\\NNN (где N - восьмеричная цифра) - символ с восьмеричным кодом NNN
# \\\\d задержка 1 секунда (только для отправляемых строк)
# \\\\p пауза 1/4 секунды (только для отправляемых строк)
# \\\\T преобразовывать телефонный номер (только для отправляемых строк)
# \\\\D не преобразовывать телефонный номер (только для отправляемых строк)
# ModemPort представляет собой список портов, отделенных пробелами, с указанием
# возможной скорости соединения (через двоеточие); если скорость указана с
# символом \\\'L\\\' впереди, то это скорость залочки, иначе будет установлена
# максимальная скорость, а настоящая скорость будет взята из нодлиста. Если
# скоротсь не указана (или равна нулю), то принимается скорость предыдущего
# порта.
#ModemPort (time Any0000-0900,Sat,Sun) ttyS0
ModemPort ttyS0:L38400
# Модем занимает порт /dev/ttyS0, FIFO залочен на 38400 (без FIFO он должен
# быть залочен на 19200). Я пишу ttyS1, а не cua1, поскольку использую
# mgetty. Почему мне приходится это делать объяснено в документации к
# mgetty+sendfax от Gert Doering.
#для uugetty используется эта опция
#modemPort cua1:38400
#для mgetty используется эта опция
ModemPort ttyS1.
# Строки PhoneTrans - это правила преобразования первых цифр телефонного номера
# для звонков по локальным или междугородним номерам. В примере ниже код
# страны 7, а городской код 095. Для номеров, начинающихся с \\\"7-095-\\\"
# удаляется и номер становится семизначным. Для номеров, начинающихся с \\\"7-\\\",
# но не с \\\"7-095-\\\", удаляется только \\\"7-\\\" и номер становится междугородним
# с префиксом \\\"8W\\\". Для всех прочих номеров осуществляется международный звонок
# с добавлением префикса \\\"8W10\\\" к 11-значному номеру. Синтаксис:
# \\\"PhoneTrans / \\\"
PhoneTrans 7-095 /
PhoneTrans 7- / 8W
PhoneTrans / 8W10
# Команда сброса модема
ModemReset ATZ\\\\r
# Команда, с помощью которой модем звонит
ModemDial ATDP\\\\T\\\\r
# Команда, заставляющая модем положить трубку
ModemHangup ATZ\\\\r
# Положительный ответ модема в ответ на выполнение команды
ModemOK OK
# Вместо одной строки \\\"CONNECT\\\" я пишу несколько \\\"Connect\\\"-строк для корректного
# указания скорости соединенния в журнальном файле.
ModemConnect CONNECT\\\\s76800\\\\r
ModemConnect CONNECT\\\\s57600\\\\r
ModemConnect CONNECT\\\\s38400\\\\r
ModemConnect CONNECT\\\\s19200\\\\r
ModemConnect CONNECT\\\\s16800\\\\r
ModemConnect CONNECT\\\\s14400\\\\r
ModemConnect CONNECT\\\\s12000\\\\r
ModemConnect CONNECT\\\\s1200\\\\r
ModemConnect CONNECT\\\\s9600\\\\r
ModemConnect CONNECT\\\\s7200\\\\r
ModemConnect CONNECT\\\\s4800\\\\r
ModemConnect CONNECT\\\\s2400\\\\r
ModemConnect CONNECT\\\\r
ModemError BUSY
ModemError NO\\\\sCARRIER
ModemError NO\\\\sDIAL
ModemError RING\\\\r
ModemError ERROR
# Время ожидания строк \\\"OK\\\" и \\\"CONNECT\\\". Нельзя применять логические выражения
TimeoutReset 3
TimeoutConnect 30
# Задержка в секундах перед каждым звонком в \\\"автоматическом\\\" режиме.
# Игнорируется если список адресов задан явно в командной строке
DialDelay 0
# Опции дозвонки (зависимости от времени, адреса и флагов нодлиста).
# Применяются в порядке их указания. Допустимые опции \\\"[No]Call\\\", \\\"[No]Hold\\\",
# \\\"[No]PUA\\\", \\\"[No]EMSI\\\", \\\"[No]WaZOO\\\", \\\"[No]Freqs\\\", \\\"[No]Zmodem\\\", \\\"[No]ZedZap\\\",
# \\\"[No]Janus\\\", \\\"[No]Hydra\\\". Здесь, WaZOO установливается для рукопожатия
# YooHoo/2U2, но не для схемы передачи. Рукопожатие FTS-0001 и схема DietIFNA
# не могут быть запрещены (поскольку они заложены в стандарте). Опция \\\"Hold\\\"
# действительно замораживает \\\"замороженные\\\" пакеты и файлы: не отправляет их,
# если наша система инициировала соединение, \\\"NoHold\\\" отправит \\\"замороженные\\\"
# пакеты, если наша система инициировала соединение. \\\"NoPUA\\\" устанавливается
# для \\\"No PickUp All\\\", т.е. PUP (\\\"Pick Up Primary\\\"). NoCall запрещает
# исходящие звонки. Этот флаг не имеет значения, если адреса заданы явно в
# командной строке. Опции по умолчанию - \\\"все разрешено\\\"
#options ((!CM) & time Any0700-0200) Nocall
#options (time Any0900-2100 & ! address 2:5020/*) Nocall
options (time Any0001-2359) Call NoHold PUA EMSI WaZOO Zmodem ZedZap TCP
Файл Areas пакета ifmail
Сейчас вам нужно определить ваши области фидошных конференций. Пример
имеется в /etc/ifmail/misc/areas. Скопируйте его в /etc/ifmail или
туда, куда вы указали в /etc/ifmail/CONFIG, и отредактируйте в
соответствии с набором выписываемых вами эхоконференций.
# Преобразование areatags в группы новостей (with distribution) и наоборот.
# Все AREA tags должны быть в верхнем регистре (без исключения).
# AREA newsgroup distribution
C_ECHO fido.C_ECHO fido
C_PLUSPLUS fido.C_PLUSPLUS fido
NET_DEV fido.FIDONET_DEV fido
FTP_FIDO fido.FTP_FIDO fido
FTSC_PUBLIC fido.FTSC_PUBLIC fido
LINUX fido.LINUX fido
NET_125 fido.NET_125 fido
OFFLINE fido.OFFLINE fido
PASCAL fido.PASCAL fido
PERL fido.PERL fido
UFGATE fido.UFGATE fido
UNIX fido.UNIX fido
HAWAII surf.HAWAII surf
SO.CALIF surf.SO.CALIF surf
C_PROG prog.C_PROG prog
CPLUSPLUS prog.CPLUSPLUS prog
PASCALPROG prog.PASCALPROG prog
DELPHI prog.DELPHI prog
# Строка со \\\'*\\\' в поле \\\"AREA\\\" определяет группу новостей по умолчанию
# и distribution. \\\'*\\\' в поле \\\"newsgroup\\\", если есть, расширяетсядо
# первоначального areatag (с приведением букв к нижнему регистру).
* junk.* local
# Строка со \\\'*\\\' в поле \\\"newsgroup\\\" определяет areatag по умолчанию.
# \\\'*\\\' в поле \\\"AREA\\\", если есть, расширяется до первоначальной группы новостей
# (с приведением букв к верхнему регистру). (Distribution is insignificant).
BAD.* *
# Вы можете указать строку с отдельной звездочкой в поле \\\"AREA\\\" и
# с отдельной звездочкой в поле \\\"newsgroup\\\". Это приведет к взаимообратным
# преобразованиям - areatag станет newsgroup с буквами в верхнем регистре,
# а группа новостей станет areatag с буквами в верхнем регистре.
# Такая фишка не рекомендуется.
# * * world
Журналы регистрации ifmail
Для получения log-сообщений от ifcico вы должны правильно настроить
syslogd. Поэтому начинаем редактировать /etc/syslog.config. Сообщения
ifcico будут appear как local0.*. Для этого добавим строку:
local0.* /var/log/ifmail
(Внимание: использовать пробелы для разделения параметров НЕЛЬЗЯ,
только ТАБУЛЯЦИЯ) Таким образом все log-сообщения от ifcico пойдут в
/var/log/ifmail. Если используется contemporary версия syslogd, то вы
должны ввести :
killall -1 syslogd
Это должно информировать демона, что нужно перечитать файлы
конфигурации, и рестартовать.
Сейчас создаем подкаталоги ifmail в /var/spool/ifmail. Besides the
standard /outbound/ for Fido you will have to create directorys for
any other nets. Владельцем этих каталогов должен быть fnet.uucp, а
права доступа 775. ifcico может также создать каталоги для
отсутствующих сетей, но вам придется проверить и установить их права
доступа.
Вам также требуется добавить пользователя fnet в ваш /etc/passwd .
Пользователь fnet используется как владелец всех исполняемых файлов
ifmail. Позже вы увидите, что это will come in handy, когда
устанавливается crontab для создания почтовых запросов аплинкам или
периодически обрабатывается ноделист и распаковываются входные пакеты
с эхопочтой. Вот выдержка из моего /etc/passwd:
fnet:*:15:14::/etc/ifmail:/bin/bash
или
fnet:*:15:14::/etc/ifmail:
Постоянно идут дебаты, по поводу необходимости иметь шелл. По причинам
безопасности конечно, вам не стоит предоставлять возможность доступа к
системе и использовать ifpoll для звонка на узлы вне вашей зоны.
Однако, если у вас нет пользователей или ваша пользователи надежные
люди, то ничего плохого в предоставлении шелла нет. Вы можете захотеть
время от времени запускать ifpoll вручную через su. Я думаю вам нужно
определиться в этом вопросе самим с учетом особенностей вашей системы.
Компилятор нодлиста
Все нодлисты, как указано в config-файле, должны лежать в каталоге
/var/spool/ifmail/nodelist. Вызываем ifindex, который создаст
index.dir и index.pag, которые содержат откомпилированный ноделист.
Поскольку ifindex не слишком быстр, вы можете перед компиляцией
урезать нодлист до нужных вам размеров (напрмер, ограничиться только
вашей зоной). Вы можете спользовать этот скрипт. Поправьте в нем
значения в соответствии с вашими.
#!/bin/sh
#
# /var/spool/ifmail/nodelist/strip.nodelist
#
if [ ! $1 ]
then
echo Syntax Error!
echo Start with $0 xxx, whereas xxx is the number of the latest
echo nodelist.
exit
fi
NODELIST=NODELIST.$1
if [ ! -s $NODELIST ]
then
echo $NODELIST is not a correct nodelist
exit
fi
NLSHORT=nl_short.$1
if [ -s $NLSHORT ]
then
echo $NLSHORT already exists, moving to $NLSHORT.bak
mv -f $NLSHORT $NLSHORT.bak
fi
head -n 2 $NODELIST >> $NLSHORT
grep \\\',1-[0-9][0-9][0-9]-\\\\|^Zone,1\\\' $NODELIST >> $NLSHORT
echo Done.
Вы можете запускать скрипт так: strip.nodelist xxx, гдеe xxx - номер
последнего нодлиста. Скрипт генерирует nl_short.xxx из nodelist.xxx.
А что с diffs? Начиная с ifmail-2.6 имеется программа nlpatch,
включенная в состав пакета, которая разбирается со старыми нодлистами
и применяет последние diff, например:
nlpatch NODELIST.123 NODEDIFF.130
создаст 130-й нодлист.
Для обработки еженедельных nodediff`ов я использую скрипт
/etc/ifmail/misc/getnodelist. Я скопировал его в мой /usr/ lib/ifmail,
установив владельца fnet.uucp с правами доступа 764, и вызываю раз в
неделю из crontab как пользователь fnet. Вы можете подправить скрипт
под вашу систему.
#!/bin/sh
# Check Х see if we got a fresh nodediff, unpack Х apply it Х rebuild
# the index.
INB=/var/spool/ifmail/inbound
NLDIR=/var/spool/ifmail/nodelist
UNPACKER=\\\"/usr/bin/unzip -o\\\"
PATCHER=/usr/lib/ifmail/nlpatch
INDEXER=/usr/lib/ifmail/ifindex
NDMASK=\\\'nodediff*\\\'
NLMASK=\\\'NODELIST*\\\'
if cd ${INB} ; then
DIFF=`ls ${NDMASK}`
if [ ! -f ${NDMASK} ] ; then
echo No diff file
exit 0
fi
else
echo Cannot chdir to ${INB}
exit 1
fi
echo Processing ${DIFF}
if cd ${NLDIR} ; then
if cp ${INB}/${DIFF} . ; then
rm -f ${INB}/${DIFF}
else
echo Cannot copy ${INB}/${DIFF} to ${NLDIR}
exit 1
fi
else
echo Cannot chdir to ${NLDIR}
exit 1
fi
if ${UNPACKER} ${DIFF} ; then
rm -f ${DIFF}
DIFF=`ls ${NDMASK}`
else
echo Could not unpack ${DIFF}
exit 1
fi
if [ ! -f ${DIFF} ] ; then
echo Nodediff was unpacked to unknown name
exit 1
fi
NLIST=`ls ${NLMASK}`
if [ ! -f ${NLIST} ] ; then
echo Nodediff was unpacked to unknown name
exit 1
fi
echo applying ${DIFF} to ${NLIST}
if ${PATCHER} ${NLIST} ${DIFF} ; then
rm -f ${NLIST} ${DIFF}
exec ${INDEXER}
else
echo Error compiling new nodelist
exit 1
fi
Пакеты ifmail
ifmail создает пакеты по принципу Binkly, который использует те же
преобразования имен как и Binkly. Например, вот три расширения имен
пакетов используемые ifmail и Binkly.
.hlo = pkt заморожен
.flo = pkt готов к отправке
.clo = pkt is crash
ifmail сохранит эти пакеты в подкаталогах, которые он создает
используя сочетание ваших номеров сети/узла и номеров сети/узла адреса
назначения.
Скачиванние почты и рапаковка
Для дозвонки до линков я использую скрипт
/etc/ifmail/misc/contrib/ifpoll, в который внес несколько маленьких
изменений. Этот скрипт я вызываю каждую ночь из crontab пользователя
fnet для прозвонки к моему хабу. fpoll, скачать почту с узла моего
босса или узла, заданного в командной строке первым аргументом
Я запускаю этот скрипт каждый день через crond, но вы можете запускать его
ручками :) Запускайте его от имени владельца ifcico
# rasca, berlin 1993 (Rasca Gmelch, 2:2410/305.4)
# # где находятся \\\"ifcico\\\" и \\\"ifpack\\\"
FIDOPATH=/usr/lib/ifmail
# журнал ifcico
IFLOG=/var/log/messages
# владелец \\\"ifcico\\\"
IFCICO_OWNER=fnet
# sysop of fido stuff
IFCICO_SYSOP=postmaster
# адрес моего босса (адрес по умолчанию)
NODE=\\\"f33.n125.z1.fidonet.org\\\"
# число попыток дозвона до NODE
MaxTry=2
# задержка между исходящими звонками
DELAY=10
# куда выдавать содержимое журнала - файл или tty/console
INFO_TTY=/dev/tty1 echo \\\"`date \\\\\\\"+%b %d %T\\\\\\\"` ifpoll[$$]: starting\\\"
# напомнит мне, что не надо запускать от root..
if [ `whoami` != \\\"$IFCICO_OWNER\\\" ]; then
echo \\\"*** run $0 as the owner of ifcico ***\\\"
echo \\\"`date \\\\\\\"+%b %d %T\\\\\\\"` ifpoll[$$]:wrong uid (rc 2)\\\"
exit 2
fi
# argv[1] - возможный узел для звонка
if [ \\\"$1\\\" != \\\"\\\" ]; then
if [ \\\"$1\\\" = \\\"-?\\\" ] || [ \\\"$1\\\" = \\\"-h\\\" ]; then
echo \\\"usage: ifpoll []\\\"
exit 3
else
NODE=$1
fi
fi
# давайте запакуем пакеты ...
$FIDOPATH/ifpack -f
# повторять пока ifcico не соединиться или MaxTry не достигнет указанной величины
i=1; errlv=1
while let \\\'i <= MaxTry\\\' && let \\\'errlv != 0\\\' do
echo -n \\\"`date \\\\\\\"+%b %d %T\\\\\\\"` ifpoll[$$]: $i. try ($NODE) \\\"
# запуск ifcico в режиме мастера ..
chmod 664 /dev/ttyS1
$FIDOPATH/ifcico -r1 $NODE errlv=$?
if [ $errlv != \\\"0\\\" ]; then
echo \\\"failed :( \\\"
if [ $i != $MaxTry ]; then
sleep $DELAY
fi
let i=i+1
else
echo \\\"ok :)\\\"
fi
done
# если прозвонились, то распаковываем..
if [ $errlv = \\\"0\\\" ]; then
echo \\\"`date \\\\\\\"+%b %d %T\\\\\\\"` ifpoll[$$]: unpacking.. \\\"
$FIDOPATH/ifunpack
# добавьте здесь несколько строк для обработки tic-файлов или
# пришедших файллистов или еще чего-нибудь..
else
# отправить мне почту о неудачном звонке
echo \\\"`date \\\\\\\"+%b %d %T\\\\\\\"` ifpoll[$$]: Failed :(\\\"
echo \\\"`date \\\\\\\"+%b %d %T\\\\\\\"` ifpoll[$$]: Sending message :(\\\"
# Я изменил это, поскольку mailx - стандарт для большинства систем tail --lines=20
$IFLOG | mailx -s \\\"ifpoll: failed\\\" $IFCICO_SYSOP > /dev/null
fi
echo \\\"`date \\\\\\\"+%b %d %T\\\\\\\"` ifpoll[$$]: finished (rc $errlv)\\\"
# вернуть код ошибки ifcico
exit $errlv
Если запустить этот скрипт без параметров, он автоматически начнет
звонить моему аплинку, или вы можете указать параметром узел, на
который хотите позвонить (в pfnz-формате, например, ifpoll
f26.n9996.z96). Он вначале запакует весь netmail/echomail и позвонит
на узел. Затем, после успешного соединения, попытается распаковать
прибывшие пакеты. При возникновении сложностей с прозвоном
пользователь fnet отправит 20 строк в файл /var/ log/syslog, так что
вы можете определить причину проблемы (напр., сигнал BUSY, отсутствие
ответа, и т.д.). Конечно, скрипт надо отредактировать в соответствии
с вашей системой. Для распаковки пришедшей почты я запускаю вот этот
скрипт, называемый ifmailcheck в crontab как пользователь fnet. Он
ищет в /var/spool/ifmail/inb ftn эхопакеты и, если они есть, вызывает
ifunpack.
#!/bin/sh
# ifmailcheck, I call this script every hour
#
if (test -r /var/spool/ifmail/inbound/*.pkt)
then
/usr/lib/ifmail/ifunpack
fi
ifmail crontab
Здесь crontab я использую как пользователь fnet. Вы можете настроить
его под вашу систему. Если вы плохо понимаете синтаксис crontab, то
почитайте \\\'man crontab\\\' для подробных объяснений как это все
делается, создайте и отредактируйте crontab.
SHELL=/bin/sh
MAILTO=fnet
#=========================================================================
# ifmail crontab:
#=========================================================================
#
# Звонить моему аплинку в 4:30 утра для ежедневного обмена почтой
#
30 4 * * * /usr/lib/ifmail/ifpoll
#
# Каждый час проверять, не пришли ли пакеты
#
59 * * * * /usr/lib/ifmail/ifmailcheck
#
# Утром в понедельник поискать новый nodediff и обработать его
#
30 2 * * mon /usr/lib/ifmail/getnodelist
Дополнительная информация по ifmail есть в /etc/ifmail/ifcico/README,
также имеются маны.
* man ifmail
* man iftoss
Настройка INN
Во-первых, надо установить INN. Slackware приходит с INN и
устанавливает его в /usr/lib/news. Вдобавок, я рекомендую вам
заглянуть в (только для Slackware) каталог /usr/lib/news/tools.linux и
почитать про особенности установки, скрипты и faq. Также вы можете
использовать либо уже собранные исполняемые файлы, либо
скомпилированные вами. Я предпочитаю скомпилированные мною и
находящиеся в исходниках example-config.data для linux. Я правлю его
так, чтобы пути соответствовали установкам моей Slackware (по
умолчанию было /use/ local/...ick). Советую указать пути в
соответствии с вашей системой, или сделайте как я и установите INN в
каталог /usr/lib/news.
NN запускается как демон, так что вам не нужен nntp service,
определенный в файле inetd.conf . Закомментируйте строку и не забудьте
после этого перезапустить inetd выполнив kill -HUP inetd-PID.
Если вы установили INN в первый раз или из исходников, как я, то
сделайте несколько изменений в /usr/lib/news и его подкаталогах. Я
буду последовательно объяснять настpойку каждого файла:
Во-первых, некоторые маленькие файлы /usr/lib/news/passwd.nntp и
/usr/lib/news/nntpsend.ctl должны содержать только комментарии и
ничего больше. Вам также нужно создать файлы историй, выполнив скрипт
/usr/lib/news/ bin/makehistory от пользователя news.
/usr/lib/news/hosts.nntp содержит только следующие строки:
E> ## hosts.nntp - names Х addresses that feed us news ## Format ## :
## : ## can be a name ХКХ IP address; no wildcards. Any hosts not ##
listed here are handed off to nnrpd. localhost:
f710.n125.z1.fidonet.org:
Так только моему компьютеру позволен доступ к моему NNTP-серверу.
/usr/lib/news/nnrp.access должен выглядеть приблизительно так:
## nnrp.access - access file for on-campus NNTP sites
## Format:
## ::::
## Connecting host must be found in this file; the last match found is
## used, so put defaults first.
## Wildcard name ХКХ IP address
## R to read; P to post
## Username for authentication before posting
## Password, for same reason
## группы новостей patterns that can be read ХКХ not read
## To disable posting put a space in the Х fields, since
## there is no way for client to enter one.
##
## Default is no access, no way to authentication, Х no groups.
*:: -no- : -no- :!*
## Foo, Incorporated, hosts have no password, can read anything.
*:Read Post:::local.*
localhost:Read Post:::*
f710.n125.z1.fidonet.org:Read Post:::*
Так каждый может читать и писать через NNRP (это протокол, по которому
каждая читалка новостей общается с сервером новостей) в группы
новостей, чьи имена начинаются с local.*. Им не позволено читать и
писать в другие группы новостей. На моем компьютере каждый имеет права
на чтение и запись в каждую группу новостей.
Далее настраиваем /usr/lib/news/inn.conf примерно так:
## inn.conf -- inn configuration data
## Format:
## :
## Used by various programs Х libinn. The following parameters are defined:
## domain Local domain, without leading period.
## fromhost What to put in the From line; default is FQDN
## of the local host.
## moderatormailer Where to mail moderated postings, if not found
## in the moderators file; see moderators(5).
## pathhost What to put in the Path Х Xref headers; default
## is FQDN of the local host.
## organization If $ORGANIZATION doesn\\\'t exist. What to put in
## the Organization header if blank.
## server If $NNTPSERVER doesn\\\'t exist. Local NNTP server
## host to connect to.
##
## orginization line will be substituted for your origin line in echomail
organization:-={OCEAN BEACH BBS....San Francisco, CA}=-
server:localhost
fromhost:f710.n125.z1.fidonet.org
Наиболее важный файл конфигурации INN - это /usr/lib/news/newsfeeds,
который определяет, какие группы новостей куда отправлять.
## newsfeeds - determine where Usenet articles get sent
## Format:
## site[/exclude,exclude...]\\\\
## :pattern,pattern...[/distrib,distrib...]\\\\
## :flag,flag...\\\\
## :param
## Summary of flags:
## .*\\\\
::
overview\\\\
:*:Tc.WO:/usr/lib/news/bin/overchan
#
# Моя фидошная подписка
#
f33.n125.z1.fidonet.org/f33.n125\\\\
:fido.*,!fido.NET_125,!control*,!junk*,!local*\\\\
:Tf,Wfb,B16384/1024:
#
# My nets admin hub
#
f5109.n125.z1.fidonet.org/f5109.n125\\\\
:fido.NET_125,!fido.*,!local*,!junk*,!control\\\\
:Tf,Wfb,B16384/1024:
#
# Мои подписки в других сетях
#
f1.n211.z21.prognet.ftn/f1.n211\\\\
:prog.*,!fido.*,!local*,!junk*,!control\\\\
:Tf,Wfb,B16384/1024:
f60.n9991.z96.surfnet.ftn/f60.n9991\\\\
:surfnet.*,!prog.*,!fido.*,!local*,!junk*,!control\\\\
:Tf,Wfb,B16384/1024:
Затем правим /usr/lib/news/expire.ctl, который определяет, когда
содержимое групп новостей устаревает.
## expire.ctl - expire control file
## Format:
## /remember/:
## ::::
## First line gives history retention; other lines specify expiration
## for newsgroups. Must have a \\\"*:A:...\\\" line which is the default.
## wildmat-style patterns for the newsgroups
## Pick one of M U A -- modifies pattern to be only
## moderated, unmoderated, ХКХ all groups
## Mininum number of days to keep article
## Default number of days to keep the article
## Flush article after this many days
## , , Х can be floating-point numbers ХКХ the
## word \\\"never.\\\" Times are based on when received unless -p is used;
## see expire.8
## If article expires before 14 days, we still remember it for 14 days in
## case we get offered it again. Depending on what you use for the innd
## -c flag Х how paranoid you are about old news, you might want to
## make this 28, 30, etc.
/remember/:30
# Хранить все группы новостей минимум 3, максимум 90 и обычно 5 дней
# (с момента прибытия)
*:A:3:5:90
*:U:3:5:90
# Хранить модерируемые группы новостей дольше
*:M:5:9:90
# Хранить модерируемые c.o.l.* 1 месяц
comp.os.linux.*:M:5:30:30
# Хранить fido дольше, чем по умолчанию.
fido*:A:3:9:90
# Удалять junk очень быстро.
fido.junk:A:3:4:90
Конечно, вы можете установить все так, как нужно вам. Но вы не должны
сокращать время хранения (особенно для Fido) до минимума, так как
сообщения идут до вашей системы довольно долго и могут устаpевать
немедленно.
Сейчас вам нужно добавить некоторые Fido конференции в ваш файл
active. Вы можете сделать это двумя путями, запустить скрипт
/usr/lib/news/bin/newgroup или вручную отредактировать файл
/usr/lib/news/active. Я растолкую потом. Формат новой группы новостей
записи в файле active :
<10 0\\\'s> <9 0\\\'s & 1>
fido.LINUX 0000000000 0000000001 y
fido.PASCAL 0000000000 0000000001 y
Сейчас копируем файл etc/ifmail/misc/inn/send-ifmail в /usr/lib/news и
изменяем владельца на news.news. send-ifmail вызывается периодически
из crontab как пользователь news, чтобы поместить отправляемые статьи
из /var/ spool/news/out.going в /var/spool/ifmail/outb для отправки
через ifcico.
Чтобы получить пересылаемые новости, для нее должен быть заведен
каталог, который называется /var/spool/ news/out.going, с владельцем
news.news и правами доступа 775. В отличие от cnews в этом каталоге не
должно быть никаких подкаталогов для newsfeeds, так как INN использует
только один файл для подписки, который он создает сам. Если вы
\\\"апгрейдитесь\\\" с cnews до INN, вы должны удалить существующие
каталоги.
Поскольку INN работает с демоном, который всегда запущен, он должен
стартовать при загрузке. Добавьте следующее в конце /etc/rc.d/rc.M
перед вызовом rc.local:
/usr/lib/news/etc/rc.news &
Для первого испытания INN этот скрипт может быть запущен вручную (как
пользователь news). Но помните, что только один innd работает в это
время, не запускайте другие программы INN, пока вы работаете под
пользователем news.
В некоторых дистрибутивах другой NNTP-демон (nntpd) определен для
cnews в /etc/inetd.conf. Тогда innd не может стартовать, так как
TCP-порт уже занят. Тогда закомментируйте эту строку и перезапустите
inetd командой kill -HUP inetd.PID.
Чтобы заставить INN работать правильно добавьте в crontab пользователя
news :
SHELL=/bin/sh
MAILTO=news
#=========================================================================
# INN crontab:
#=========================================================================
#
# Offer spooled news batches to ifnews of outgoing echomail
#
30 */3 * * * /usr/lib/news/send-ifmail f33.n125.z1.fidonet.org
# Send spooled news to uucp uplink
#
#35 */3 * * * /usr/lib/news/send-uucp \\\"uucp-feed-name\\\"
# Run news.daily every morning at 6am
#
0 6 * * * /usr/lib/news/bin/news.daily < dev/null
# offer spooled news (that was spooled into /news/in.coming directory when the
# innd server wasn\\\'t available) again to the innd server.
#
13,33,53 * * * * /usr/lib/news/rnews -U
Каждые три часа пакеты для всех Fido-систем и UUCP-систем пакуются
(конечно, без UUCP-соединения вы можете пропустить посленюю часть).
Далее производится ежедневная очистка, о чем сообщается через почту.
Затем будут обработаны все не отправленные статьи.
Следующая вещь, которую мы сделаем - создание групп новостей. Для
этого и для большинства других изменений в системе новостей
используется команда ctlinnd. Она вызывается только пользователем news
и вы можете найти ее в каталоге /usr/lib/news/bin.
Новые группы новостей создаются командой ctlinnd newgroup fido.LINUX
(где fido.LINUX взято в качестве примера). Вы можете использовать
различные опции, которые объяснены в мане по ctlinnd(8). вы должны
создать группы новостей control, junk и fido.junk, которые содержат
сообщения управления (например, cancel), статьи для неизвестных групп
новостей и статьи для областей, не определенных в /etc/ifmail/areas.
Чтобы иметь описания групп новостей в читалке новостей, ва вероятно
захотите создать файл /usr/lib/news/ newsgroups, который содержит имя
группы новостей и ее описание (разделенные табуляцией) в каждой
строке. Порядок групп не важен, из повторяющихся строк будет
отображена только первая.
Так как INN посылает свои log-сообщения через syslog, нам надо сделать
такие изменения в /etc/syslog.conf:
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice /var/log/news/news.notice
Теперь создайте каталог /var/log/news, и перезапустите ваш syslogd.
Для прочей информации по INN, переходе с cnews на INN, проблемами пр.
прочтите весьма информативный INN-FAQ и маны.
6. gettys & inittab
getty используется для наблюдения за состоянием последовательной
линии, и при поступлении звонка он передает звонящего соответствующей
программе. Есть два getty, коотрые очень хорошо работают с ifmail -
getty_ps и mgetty+sendfax-0.98. Я использую mgetty+sendfax, так как он
работает и с uucp, и с fido звонками.
Чтобы использовать mgetty вам нужно отредактировать его несколько
конфигурационных файлов, но из них только один самый важный - это файл
login-config.dist . Вот мой файл /etc/mgetty-0.98/login-config.dist :
# login.config
#
# This is a sample \\\"login dispatcher\\\" configuration file for mgetty
#
# Format:
# username userid utmp_entry login_program [arguments]
#
# Meaning:
# for a \\\"username\\\" entered at mgettys login: prompt, call
# \\\"login_program\\\" with [arguments], with the uid set to \\\"userid\\\",
# and a USER_PROCESS utmp entry with ut_user = \\\"utmp_entry\\\"
#
# username may be prefixed / suffixed by \\\"*\\\" (wildcard)
#
# userid is a valid user name from /etc/passwd, ХКХ \\\"-\\\" to not set
# a login user id Х keep the uid/euid root (needed for /bin/login)
#
# utmp_entry is what will appear in the \\\"who\\\" listing. Use \\\"-\\\" to not
# set an utmp entry (a must for /bin/login), use \\\"@\\\" to set it to the
# username entered. Maximum length is 8 characters.
#
# login_program is the program that will be exec()ed, with the arguments
# passed in [arguments]. A \\\"@\\\" in the arguments will be replaced with the
# username entered. Warning: if no \\\"@\\\" is given, the login_program has
# no way to know what user name the user entered.
#
#
# SAMPLES:
# Use this one with my Taylor-UUCP patch (taylor104.p1) Х Taylor-UUCP
# passwd files. (Big advantage: tuucp can use the same passwd file for
# serial dial-in Х tcp dial-in [uucico running as in.uucpd]).
#
#U* uucp @ /usr/lib/uucp/uucico -L @
#
# If you use Taylor UUCP 1.05, use that:
#
U* uucp @ /usr/lib/uucp/uucico -l -u @
#
# Use this one for fido calls (login name /FIDO/ is handled specially)
#
# You need Eugene Crosser\\\'s \\\"ifmail\\\" package for this to work.
# mgetty has to be compiled with \\\"-DFIDO\\\" in the options list, otherwise a
# fido call won\\\'t be detected.
#
/FIDO/ fnet uucp /usr/lib/ifmail/ifcico @
#
#
# An example where no login name in the argument list is desired:
# automatically telnetting to machine \\\"smarty\\\" for a given login name
#
#telnet-smarty gast telnet /usr/bin/telnet -8 smarty
#
# This is the \\\"standard\\\" behaviour - *dont* set a userid ХКХ utmp
# entry here, otherwise /bin/login will fail!
# This entry isn\\\'t really necessary: if it\\\'s missing, the built-in
# default will do exactly this.
#
* - - /bin/login @
Если вы используете getty_ps, не забудьте добавить #define FIDO в
tune.h. Вам также надо будет определить конфигурационный файл для ttyS
устройства, которое вы используете. Примеры есть в /etc/default для
uugetty и в архиве. Вот мой /etc/default/uugetty.ttyS1:
ALTLOCK=cua1
ALTLINE=cua1
INITLINE=cua1
TIMEOUT=60
DEBUG=110
INIT=\\\"\\\" ATZS0=1\\\\r OK
# Its very important to include these two lines. Otherwise fido callers
# will go undetected. Also some older versions of uugetty are case sensitive
# so watch for this in the example configs that accompanied your archive.
FIDO=/usr/lib/ifmail/ifcico
EMSI=yes
WAITFOR=RING
CONNECT=\\\"\\\" ATA\\\\r CONNECT
DELAY=1
HANGUP=yes
Далее вам нужно добавить строку в ваш /etc/inittab для вашего getty.
Вот мой /etc/inittab:
# Serial lines
# This is my mgetty line for com port 2 .
S1:35:respawn:/usr/sbin/mgetty -D -s 38400 ttyS1
#
# You can add this line instead to your inittab if your using uugetty
#S1:35:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS1 -t 180 ttyS1 38400
Первое поле определяет устройство. Вторая runlevel`ы, для которых
действительны значения остальных полей. Третье поле \\\'respawn:\\\'
перезапускает программы, если она завершит свою работу. Четвертое поле
- путь и имя программы для запуска и параметры, нужные для запуска
getty. Более подробно описано в \\\'man inittab\\\'.
News/Echomail чтение и написание
Я использую в качестве читалки новостей tin версии
tin-1.3BETA.950824-color. Так как tin, подобно остальным читалкам
новостей не был написан с учетом Fido, в нем нет ответа на какой-то
адрес, а ответ отправляется к \\\"all\\\", однако ifmail может
адресовать письма с ответами на определенный адрес, если добавить
дополнительное поле в заголовке статьи X-Comment-To:
В вашем файле /.tin/attributes добавьте строки.
scope=fido.*
x_comment_to=ON
Mail/Netmail чтение и написание
Я использую Pine. Вам не нужно ставить что-то специализированное, вам
только нужно использовать pfnz- нотацию при указании адреса. Например
Greg Frydenlund 1:125/720
пишется как
Greg.Frydenlund@.f710.n125.z1.fidonet.org
или
Greg.Frydenlund@f710.n125.z1.fidonet.org (Greg Frydenlund)
A
Greg Frydenlund 21:100/64.
пишется как
Greg.Frydenlund@f64.n100.z21.prognet
Другой важный момент - отправка почты другим мейлерам (Areafix,
FileMgr). Часто возникают проблемы с почтой, созданной ifmail. Так как
почта часто имеет в первой строке \\\"* To: address\\\", что
интерпретируется некоторыми мейлерами как команда для всех Areas
(\\\"*\\\"). Если вы не желаете иметь такие строки, то можете ввести в
меню Setup под User-Defined-Header (перед отправкой сообщения)
дополнительную строку заголовка:
X-Flags: N
Другая проблема - FileScan и некоторые другие мейлеры имеют привычку
брать адрес не из заголовка, а из message-ID. Но там содержится не
FTN-адрес (Z:N/F.P), а Internet-адрес. Это можно исправить:
X-Flags: M
, чтобы генерировался обычный Fido-message-ID (для различных сетей
соответствующие адреса).
Конечно вы может комбинировать X-flags. Я к примеру использую для всех
писем к роботам:
X-Flags: MN
Если вы хотите отправить crashmails, нужно добавить дополнительно
\\\"/X-Flags: C\\\". Если вы пишите пойнту, почта обрушится на его
босса.
Можно делать аттачи. Добавьте \\\"X-Flags: F\\\" и имя файла (с путем!) в строке
subject.
Ели вы хотите установить флаги для всей почты, вы должны создать файл типа
~/.elm/elmheaders, который содержит только строки заголовка, например:
X-Flags: MN
Эти строки будут добавлены во все сообщения.
Если X-Flags не дают видимого эффекта, посмотрите логи ifmail, так как
ifmail возможно выскажется по этому поводу. Но надо продумать
доступность X-Flags, иначе каждый сможет создавать crashmails и
файловые запросы и отправлять их с вашего сайта.
Фрекание файлов
Для файловых запросов можно использовать perl-скрипт ifreq, который
расположен в etc/ifmail/misc/contrib. Некоторые freq-процессоры под
DOS имеют проблемы с отсутствием символа перевода строки в конце
строки. Ниже патч для этого:
--- ifreq~ Sat Aug 6 14:41:28 1994
+++ ifreq Sat Oct 8 12:05:09 1994
@@ -73,7 +73,7 @@
# open the flofile for appending
open(FLOFILE, \\\">>\\\" . $reqfile) || die \\\"can\\\'t open $reqfile\\\";
while (@files) {
- print (FLOFILE shift(@files), \\\"\\\\n\\\");
+ print (FLOFILE shift(@files), \\\"\\\\r\\\\n\\\");
}
close(FLOFILE);
Решение проблем
Если что-то работает не так (несмотря на мои объяснения), вы имеете
различные возможности отыскать ошибки и исправить их. В пакете ifmail
есть программа, предназначенная для этого - ifstat, которая сообщает
какие пакеты на какой адрес лежат на холде.
Не смущайтесь, если эти пакеты уменьшаются после запуска ifpoll,
поскольку почта упаковывается в ZIP файлы. Другое хорошее место, в
которое рекомендуется заглянуть - это файлы /var/log/syslog или
/var/log/messages.
Почта не обрабатывается
В этом случае было бы очень полезно увеличить уровень отладки ifmail в
/etc/sendmail.cf. Чтобы сделать это, добавьте параметр -4 в ifmail
(если вам этого недостаточно, то по мне лучше установить -8). Для
получения отладочных сообщений, я отправляю копию почты на
несуществующий адрес, так что я получаю сообщение со всеми отладочными
сообщениями в /var/spool/mqueue. Если такое сообщение не приходит, то
это может означать, что некоторые права доступа не правильно
установлены, что может заставлять систему ожидать (можно увидеть, что
sendmail и ifmail остаются запущенными). Используйте журнальные
сообщения sendmail, присылвемые через файл syslog и \\\"странные\\\"
сообщения лежацие в /var/spool/mqueue.
Эхо конференции не обрабатываются
INN должен обрабатывать статьи немедленно и складывать их в файлы
/var/spool/news/out.going/*. после запуска send-ifmail они должны
исчезнуть оттуда и вы должны найти их в /var/spool/ifmail/outbound.
Также проверьте права доступа ваших каталогов и удостоверьтесь, что
ifnews имеет доступ по чтению/записи в них (/tmp, /var/spool/ifmail/
fidonet и /var/spool/news/out-going/*).
Кроме того надо просмотреть все журнальные файлы (логи):
sendmail
/var/log/mail
INN
/usr/local/lib/news/log
/usr/local/lib/news/errlog
/var/log/inn/*
ifmail
/var/log/ifmail/iflog
/var/log/ifmail/ifdebug
Чтобы проверить создание пакетов или исправления проблем в уже
существующих пакетах вы должны использовать программу Inspect (под
DOS), которая прекрасно идет под dosemu. Разрешите dosemu доступ к
соответствующим каталогам и запустите DOSEmu как пользователь fnet или
news, после этого вы можете изменить файлы .pkt и архивы.