Агент транспортировки новостей (News-Transport-Agent)
В качестве News-Transport-Agent может использоваться cnews или INN. Чтобы помочь вам определиться с выбором, ниже описаны некоторые преимущества и недостатки этих программ друг перед другом:
cnews состоит в основном из скриптов на языке shell, которые не так-то легко отлаживать и они медленнее запускаются. Cnews не может использовать NNTP (online-news-protocol). Если вы хотите использовать NNTP (например, для различных читалок новостей, которые работают с новостями только через NNTP), то вам нужен nntpd. Настройка nntpd несколько сложнее и не все возможности NNTP доступны.
INN непосредственно поддерживает NNTP. Вот почему запускается демон (innd) и местные статьи новостей немедленно становятся доступными локальным пользователям. При использовании cnews статьи в системе новостей появляются только после определенного отрезка времени (например, через 10 минут). cnews некорректно работает, если в /var/spool/news остается менее 10 МБ дискового пространства.
Я лично использую INN-1.5.1, поскольку INN в целом легче настраивать, чем cnews.
Агент транспортировки почты (MTA)
Здесь можно выбрать между smail и sendmail V8. Smail меньше и проще в настройке, но имеет несколько маленьких багов. sendmail V8 не так-то легок в настройке, но существует его конфигурация с макропроцессором M4, которая настолько упрощает работу, что конфигурирование sendmail становится таким же простым как и smail. Я лично перешел с smail на sendmail.
Читалка новостей
Можно использовать любую читалку новостей: tin, nn, trn, xvnews, xrn, slrn, knews,.. Если используется cnews, она должна работать в UUCP-режиме, то есть не только NNTP, иначе надо ставить nntpd, который достаточно сложен в изучении без документации. Я использую tin-1.3BETA.950824-color, потому что tin легок в использовании и требует минимальных усилий в настройке. В этом документе я привел несколько приемчиков при работе с tin.
Читалка почты
Здесь также можно использовать свою любимую: elm, pine, mail, xmail, xmailtool, xfmail,... Pine кажется самый лучший, но вы можете предпочесть другую программу.
Cnews
Старые дистрибутивы Slackware имели весьма урезанный cnews (например, не было всех man-страниц), и должны использовать как минимум пакет cnews из Slackware 2.1. Как альтернатива, его можно взять из полного source-distribution и собрать его сами. Я использовал performance-release от 93/02/20 с . Современные релизы я даже не испытывал. В этом HOWTO информация относится к более старым версиям, и я не планирую развивать это направление в будущем.
Дополнительные источники
Mail-HOWTO
объяснения по настройке вашего сервера почты. News-HOWTO
объяснения по настройке вашего сервера новостей. По INN доступен INN-FAQ, в котором не только освещается множество вопросов, но и объясняется процесс установки как в этом HOWTO. Serial-HOWTO
объяснения по настройке последовательных портов. NET-2-HOWTO
объяснения по настройке loopback-net Network-Admin-Guide
объяснения по настройке сетевых компонент и UUCP. UUCP-HOWTO
объяснения по настройке UUCP-хостов. "Управление UUCP и Usenet"
от O'Reilly & Associates.
Файл 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
Файл config пакета ifmail
# # ФАЙЛ КОHФИГУРАЦИИ IFMAIL # # Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999 # # Это основной файл конфигурации, используемый программами пакета # 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.<zone>'', а # пакеты для узлов из других доменов -- в ``<domain>.<zone>''. # 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
# ## Преобразование имен # -------------------
# # Файл системных алиасов. Его формат: # # <имя-пользователя> <FTN-адрес>
# SysAlias /var/spool/ifmail/sysalias
# # Доменное имя, добавляемое к имени пользователя при использовании # системных алиасов. # MyFQDN pccross.msk.ru
# # Если этот параметр указан (HЕ РЕКОМЕHДУЕТСЯ!), то в сообщениях, # адресованных соответствующему пользователю, будут искаться заголовки # RFC. Если этот параметр не указан, то RFC-заголовки ищутся в начале # всех писем. # # MagicName UUCP
# # Преобразование доменов. Формат: # # DomTrans <FTN-домен> <RFC-домен>
# # При преобразовании происходит текстуальная замена первого # совпадающего 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
# # Файл, в котором хранится описание соответствие имен эхо-конференций # и ньюсгрупп. Формат таков: # # <ЭХО-КОHФЕРЕHЦИЯ> <ньюсгруппа> <область-распространения>
# # <область-распространения> обычно "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
Фрекание файлов
Для файловых запросов можно использовать 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);
Где достать последнюю версию данного HOWTO
Если вы располагаете чересчур древней версией этого HOWTO, то можете найти новую редакцию этого документа у Greg Frydenlund (1:125/710 V32B) по имени ifmail-howto.gz.
также он доступен по WWW на
или через FTP на
BASH Programming - Введение
uugetty обслуживает начало процесса регистрации в системе. Когда используется модем, он отслеживает поступление звонков и (обычно) выводит строку приглашения "login:" (считывает имя пользователя и передает его программе "/bin/login").
Исходники для getty_ps могут быть найдены на большинстве зеркал sunsite в /system/Serial/getty_ps-2.0.7i.tar.gz.
BASH Programming - Введение
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'.
tx версии имеют некоторые улучшения,
tx версии имеют некоторые улучшения, вроде поддержки charset, MIME quoted printable, лучше работают с MSGID, обрабатывают ссылки и различают некоторые PGP. Также есть возможность обрабатывать Gatebau-style преобразования MSGID<->Message-ID.
tx версию поддерживает Pablo Saratxaga (srtxg@linux.chanae.stben.be или 2:293/2219 или 4:850/1.29)
Последнюю версию можно найти:
или на большинстве зеркал sunsite.
и агентом транспортировки почты. Для
ifmail - это транспортный пакет rfc<->ftn и ftn<->rfc, который работает совместно с агентом транспортировки новостей и агентом транспортировки почты. Для активизации он использует getty. Он очень похож на uucico из пакета UUCP. На момент написания последняя версия была 2.11 .
ifmail разработал Eugene G. Crosser (crosser@average.org или 2:5020/230).
Последнюю версию можно найти:
или на любом зеркале sunsite.
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 и подредактируйте его в соответствии со значениями вашей системы.
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 (InterNet News server)
Последний Slackware содержит как cnews, так и INN, так что каждый может выбрать. Текущий INN должен работать, но я предлагаю собрать и настроить программное обеспечение самим. Я использую INN-1.5.1, который можно взять на:
Эхоконференции не обрабатываются
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 и архивы.
Компилятор нодлиста
Все нодлисты, как указано в 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
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)
А
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. <p> Ели вы хотите установить флаги для всей почты, вы должны создать файл типа ~/.elm/elmheaders, который содержит только строки заголовка, например: <tscreen><verb> X-Flags: MN
Эти строки будут добавлены во все сообщения.
Если X-Flags не дают видимого эффекта, посмотрите логи ifmail, так как ifmail возможно выскажется по этому поводу. Но надо продумать доступность X-Flags, иначе каждый сможет создавать crashmails и файловые запросы и отправлять их с вашего сайта.
Mgetty-sendfax
mgetty-sendfax набор программ, разработанных для наблюдения, отправки и приема телефонных звонков и факсов в ОС UNIX. В отличие от getty или uugetty, которые переводят модем в режим автоответа, mgetty так не поступает. Когда поступает звонок, mgetty видит "RING" и приказывает модему ответить. Отвечая, модем говорит mgetty, какого типа звонок поступил.
Документация и FAQ mgetty-sendfaxcan могут быть найдены на Исходник можно скачать с большинства зеркал sunsite в /system/Serial/mgetty+sendfax-0.98.tar.gz.
Настройка 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.
INN запускается как демон, так что вам не нужен 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 содержит только следующие строки:
## hosts.nntp - names и addresses that feed us news ## Format ## <host>: ## <host>:<password>
## <host> 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: ## <host>:<perm>:<user>:<pass>:<groups>
## Connecting host must be found in this file; the last match found is ## used, so put defaults first. ## <host> Wildcard name или IP address ## <perm> R to read; P to post ## <user> Username for authentication before posting ## <pass> Password, for same reason ## <groups> группы новостей patterns that can be read или not read ## To disable posting put a space in the <user> и <pass> 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: ## <parameter>:<whitespace><value>
## 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: ## <size Article must be less then size bytes. ## Aitems Article checks -- d (must have Distribution header) ## p (don't check for site in Path header). ## Bhigh/low Internal buffer size before writing to output. ## H[count] Article must have less then count hops; default is 1. ## Isize Internal buffer size (if a file feed) ## Nm Only moderated groups that match the patterns. ## Nu Only unmoderated groups that match the patterns. ## Ssize Start spooling if more than size bytes get queued. ## Ttype Feed types -- f (file) m (funnel; param names the ## real entry) p (pipe to program) c (send to stdin ## channel of param's sub-process); x (like c, but ## handles commands on stdin). ## Witems What to write -- b (article bytesize) f (full path) ## g (first newsgroup) m (Message-ID) n (relative ## path) s (site that fed article) t (time received) ## * (names of funnel feed-in's или all sites that get ## the article) N (Newsgroups header) D (Distribution ## header) H (all headers) O (overview data) R ## (replication data). ## Param field depends on T flag. For Tf, relative paths are from the ## out.going directory. For Tp и Tc, it is a shell command to execute. ## If a Tm refers to this entry (which will have its own T param) then "*" ## is expanded to all the funnel sites that triggered this one. Useful ## for spawning one mail process, e.g. ## ## This file is complicated -- see newsfeeds.5!
# ME указывает, к каким группам новостей должен быть доступ
ME\ :*,!control,!<local>.*\ ::
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/:<keep>
## <patterns>:<modflag>:<keep>:<default>:<purge>
## First line gives history retention; other lines specify expiration ## for newsgroups. Must have a "*:A:..." line which is the default. ## <patterns> wildmat-style patterns for the newsgroups ## <modflag> Pick one of M U A -- modifies pattern to be only ## moderated, unmoderated, или all groups ## <keep> Mininum number of days to keep article ## <default> Default number of days to keep the article ## <purge> Flush article after this many days ## <keep>, <default>, и <purge> 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 :
<Areas tag> <10 0's> <9 0's & 1> <y>
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 и маны.
Если sendmail установлен, вы должны
Если sendmail установлен, вы должны установить набор конфигурационных файлов, которые в дистрибутиве Slackware спрятаны в архиве smailcnf.tgz. Вы найдете их в /usr/src/sendmail/cf. В этом каталоге должен быть README размером примерно 50KB, коотрый описывает новый метод настройки.
sendmail управляется через настроечный файл (размером примерно 20KB) (/etc/sendmail.cf), который вы не должны переписывать под себя (как думают многие, кто боится sendmail). Вам также нужен макропроцессор M4, и маленький конфигурационный файл (mc-File) в /usr/src/sendmail/cf/cf. M4 создаст ваш /etc/sendmail.cf из этого файла и несколько других настроечных файлов, которые вам не нужно изменять.
Вот объяснение, что означает "F=8mDMFhuSC, S=51/31, R=21" в вашем файле sendmail.cf в определении агента отправки в fidonet:
F секция содержит флаги, которые описывают поведение агентов доставки. Ниже расписаны флаги:
8 = использовать 8 бит m = позволить отправку нескольким адресатам D = форсировать вставку даты в заголовок сообщения M = форсировать вставку идентификационной информации в заголовок сообщения F = форсировать вставку информации об отправителе в заголовок сообщения h = сохранить раегистр букв имени хоста u = сохранить раегистр букв имени пользователя
Флаг C указывает sendmail добавить домен адресата без one (домен отправителя. Полезно для отправки кому-либо на вашей собственной BBS); и флаг S указывает sendmail выполнить агента доставки (в случае ifmail) с использованием его собственных UID и GID, указанных выражением U= . Если U= выражение пропущено или 0, sendmail запускает агента доставки от root (заметьте: в версиях sendmail выше v8.7, нет выражения U= , так что флаг S указывает sendmail всегда запускать агента доставки от root). У меня не указано выражение U= , так что ifmail запускается от root, что меня вполне устраивает.
Секция S указывает набор правил записи отправителя; правило 51 для "конверта" и правило 31, используемое для заголовка. Наконец, секция R указывает набор правил записи адресата. В этом случае набор правил 21 используется для записи и заголовка, и "конверта". Посмотрите ваш файл sendmail.cf, чтобы найти правила и узнать, что они делают.
Между прочим, эта информация почерпнута из книги "sendmail, 2nd edition" Bryan Costales и Eric Allman (автора sendmail), выпущенной O'Reilly & Associates (ISBN 1-56592-222-0). Я настойчиво рекомендую ее каждому, кто работает с sendmail. Она очень понятно и доходчиво написана, с большим количеством примеров.
Затем надо рассказать о IFMAIL. Поэтому вам следует создать файл /usr/src/sendmail/cf/mailer/ftn.m4 со следующим содержимым:
# /usr/src/sendmail/cf/mailer/ftn.m4 # # IFMAIL FTN mailer for sendmail V8 # # MAILER(smtp) и MAILER(uucp) must be included! # PUSHDIVERT(-1) ifdef(`FTN_MAILER_PATH',, `define(`FTN_MAILER_PATH', /usr/lib/ifmail/ifmail)') ifdef(`FTN_MAILER_USER',, `define(`FTN_MAILER_USER', `fnet:uucp')') ifdef(`FTN_MAILER_ARGS',, `define(`FTN_MAILER_ARGS', `ifmail -r $h $u')') ifdef(`FTN_MAILER_FLAGS',, `define(`FTN_MAILER_FLAGS', `8mDFMuSC')') ifdef(`FTN_MAX_SIZE',, `define(`FTN_MAX_SIZE', 100000)')
POPDIVERT ##################################### ### FTN Mailer specification ### #####################################
VERSIONID(`ftn.m4 V1.5')
ifdef(`_MAILER_smtp_', '# ifmail mailer Mftn, P=FTN_MAILER_PATH, F=FTN_MAILER_FLAGS, S=11, R=21, _OPTIONS(`UUCP_MAILER_CHARSET',`C=', `, ')U=FTN_MAILER_USER, ifdef(`_FTN_MAILER_MAX', `M=FTN_MAILER_MAX, ')A=FTN_MAILER_ARGS')
Как видите настройка ifmail не так сложна, и мы не совершаем чего-то из ряда вон выходящего, мы просто используем определение мейлера "ftn" так же, как и предопределенные мейлеры "smtp", "uucp" и т.д.
Сейчас давайте займемся настройкой mc-файла. Я назвал его /mymachine.mc, но имя не так важно, главное, чтобы он располагался в /usr/src/sendmail/cf/cf. mymachine.mc выглядит примерно так:
# /usr/src/sendmail/cf/cf/mymachine.mc # # sendmail V8 configuration for mymachine.mc # using UUCP и IFMAIL # include(`../m4/cf.m4') VERSIONID(`mymachine.mc V1.15')
OSTYPE(linux)dnl
define(`confUSE_ERRORS_TO', `True')dnl define(`confCOPY_ERRORS_TO', `postmaster')dnl define(`confMIME_FORMAT_ERRORS', `False')dnl
FEATURE(notsticky)dnl FEATURE(mailertable,hash -o /etc/sendmail/mailertable)dnl FEATURE(always_add_domain)dnl FEATURE(nodns)dnl FEATURE(nocanonify)dnl
MAILER(local)dnl MAILER(ftn)dnl MAILER(smtp)dnl MAILER(uucp)dnl
#Cwsome-uucp-host-name Cwf4.n211.z21.prognet Cwf64.n9996.z69.surfnet Cwf710.n125.z1.fidonet.org
# define(`SMART_HOST', uucp-dom:some-uucp-host-name) define(`SMART_HOST', ftn:f710.n125.z1.fidonet.org)
LOCAL_RULE_3 # Route fidonet.org, prognet и surfnet via FTN! R$* < $* z1.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z2.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z3.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z4.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z5.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z6.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* prognet > $* $1 < $2 f1.n211.z21.prognet > $3 R$* < $* surfnet > $* $1 < $2 f60.n9991.z96.surfnet > $3
В начале определяется операционная система (linux), затем мы определяем, что вся MAILERDAEMON-почта также должна отправляться postmaster`у, т.о. он сможет найти ошибки быстрее и исправить их. Затем даны некоторые опции для моей настройки, но вы можете переделать их под ваши нужды. Кроме того определены мейлеры "local" (для пользователей на той же машине, которые отправляются deliver, mail.local или procmail), "ftn" (Fido-соместимые сети через ifmail), "smtp" (отправка через online-mail-protocol SMTP) и "uucp" (отправка через UUCP). Последние два не нужны для системы, подключенной к Интернет только через ifmail, но мейлер "ftn" основан на них (вот почему ftn.m4 такой короткий). В строках, начинающихся с Cw определены различные имена моего компьютера:
define(`SMART_HOST', ftn:f33.n125.z1.fidonet.org)
вся почта которая не ущла другими путями будет отправлена через ifmail моему fido-аплинку. если у вас есть UUCP-аплинк, то вы можете заместить эти строки:
define(`SMART_HOST', uucp-dom:some-uucp-host-name)
которые отправляют такую почту моему UUCP-аплинку с именем some-uucp-host-name.
В конце mymachine.mc я поместил специальные конструкции:
LOCAL_RULE_3 # Route fidonet.org и prognet via FTN! R$* < $* z1.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z2.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z3.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z4.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z5.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* z6.fidonet.org > $* $1 < $2 f33.n125.z1.fidonet.org > $3 R$* < $* prognet > $* $1 < $2 f1.n211.z21.prognet > $3 R$* < $* surfnet > $* $1 < $2 f60.n9991.z96.surfnet > $3
Здесь z1.fidonet.org,..,z6.fidonet.org отображаются в f33.n125.z1.fidonet.org и все *.prognet в f1.n221.z21.prognet, т.о. вся Fido-почта, адресованная в различные Fidonet- зоны будет отправлена моим аплинкам, которые отправят их через FTP (вметсо UUCP). Пожалуйста заметьте: Должен быть как минимум один символ табуляции между $* и $1 (не только пробелы).
Поэтому мы выше определили файл /etc/sendmail/mailertable. В этом файле определены "исключения" из маршрута по умолчанию, например маршрут через фидо.
.prognet ftn:f1.n211.z21.prognet .surfnet ftn:f60.n9991.z96.surfnet
Как видно вся фидопочта идет через фидо. Эта mailertable должна быть скомпилирована в базу данных после любых изменений. Используйте следующие команды в каталоге /etc/sendmail:
makemap hash mailertable.db < mailertable
Если вы получили ошибку "makemap: Type hash not supported in this version", то кажется вы установили Slackware 3.0, который не поддерживает hash-типы (не спрашивайте меня почему). Тогда вы должны использовать такую команду:
makemap dbm mailertable < mailertable
в том же каталоге. Но сейчас в должны изменить строку mailertable в файле mymachine.mc с hash на dbm. Измените строку так:
FEATURE(mailertable,dbm -o /etc/sendmail/mailertable)dnl
Проблемы исчезнут.
После редактирования mymachine.mc, мы можем создать из него sendmail.cf . Перейдите в каталог /usr/src/sendmail/cf/cf и выполните здесь pmake mymachine.cf . Этим вы создадите /usr/src/sendmail/cf/cf/obj/mymachine.cf Переименуйте этот файл в /etc/sendmail.cf и настройа готова. Если pmake не установлен, то сделайте так:
m4 mymachine.mc > obj/mymachine.cf
Есть несколько других вещей, нужных вам для ручного редактирования sendmail.cf . Во-первых, посморите опцию O MatchGECOS и раскомментируйте ее. Это позволит использовать полные имена типа Greg Frydenlund вместо логинов типа gfryde01. Во-вторых, посмотрите секцию доверенных (trusted) пользователей и добавьте "Tfnet uucp". Это позволит sendmail применять SUID для fnet.uucp при выполнении ifmail.
Проделав все это вы готовы создать ваш почтовый alias-файл. Mine looks something like this. Применение почтовых алиасов - только одна из мощных возможностей sendmail, которая позволяет перенаправлять почту другим сайтам и пользователям. Его не тяжело администрировать. Почта для пользователя слева перенаправляется пользователю справа. Мой файл alias:
# # /etc/aliases # # compile this file by issueing the command: newaliases # nobody: /dev/null root: gfryde01 support: gfryde01 admin: gfryde01 operator: gfryde01 postmaster: gfryde01 faxadmin: gfryde01 usenet: gfryde01 sysop: gfryde01 uucp: gfryde01 news: gfryde01 mail: gfryde01 fnet: gfryde01 fido: gfryde01 greg_frydenlund: gfryde01 greg.frydenlund: gfryde01 gregfrydenlund: gfryde01
Этот файл должен быть скомпилирован командой newaliases после каждого изменения.
Сейчас запустим sendmail как демон:
/usr/sbin/sendmail -bd -q 15m
Добавьте вышеприведенную команду в /etc/rc.d/rc.local. На большинстве систем она уже определена в /etc/rc.d/rc.M . Кроме того можно запускать sendmail по cron, и заставить inetd слушать порт. Для этого вставляем в crontab пользователя root:
*/20 * * * * /usr/sbin/sendmail -q
а /etc/inetd.conf вставляем:
smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/sendmail -bs
Не забудьте выполнить kill -HUP inetd после изменения inetd.conf, чтобы информировать inetd об изменениях.
sendmail будет писать свои журнальные сообщения через syslogd. Я рекомендцю следующую запись в /etc/syslog.conf:
mail.* /var/log/mail
Не забывайтеперезапустить syslogd после этих изменений через killall -1 как уже описано в главе Настройка ifcico.
Чтобы проверить записывающие правила sendmail для fidonet-адресов, запустите sendmail командой
sendmail -bt
Введите эту команду в строке приглашения, и вы должны увидеть примерно вот это.
> 3,0 me@f10.n125.z1.fidonet.org
Последняя строка в этом спискее ниже представляет интерес для нас.
rewrite: ruleset 3 input: me @ f10 . n125 . z1 . fidonet . org rewrite: ruleset 96 input: < me @ f10 . n125 . z1 . fidonet . org . >
rewrite: ruleset 96 returns: < me @ f10 . n125 . z1 . fidonet . org . >
rewrite: ruleset 3 returns: < me @ f10 . n125 . z1 . fidonet . org . >
rewrite: ruleset 0 input: < me @ f10 . n125 . z1 . fidonet . org . >
rewrite: ruleset 98 input: < me @ f10 . n125 . z1 . fidonet . org . >
rewrite: ruleset 98 returns: < me @ f10 . n125 . z1 . fidonet . org . >
rewrite: ruleset 0 returns: $# ftn $@ f33 . n125 . z1 $: me < @ f33 . n125 . z1 . fidonet . org >
Вы можете видеть внизу этого списка, что мейлер ftn - это как раз то, что мы хотим. Я предлагаю вам испытать другой адрес (me@localhost), чтобы удостовериться, что sendmail обрабатвает все правила соответственно для вашей собственной системы.
News/Echomail чтение и написание
Я использую в качестве читалки новостей tin версии tin-1.3BETA.950824-color. Так как tin, подобно остальным читалкам новостей не был написан с учетом Fido, в нем нет ответа на какой-то адрес, а ответ отправляется к "all", однако ifmail может адресовать письма с ответами на определенный адрес, если добавить дополнительное поле в заголовке статьи X-Comment-To:
В вашем файле /.tin/attributes добавьте строки.
scope=fido.* x_comment_to=ON
Пакеты ifmail
ifmail создает пакеты по принципу Binkly, который использует те же преобразования имен как и Binkly. Например, вот три расширения имен пакетов используемые ifmail и Binkly.
.hlo = pkt заморожен .flo = pkt готов к отправке .clo = pkt is crash
ifmail сохранит эти пакеты в подкаталогах, которые он создает используя сочетание ваших номеров сети/узла и номеров сети/узла адреса назначения.
Почта не обрабатывается
В этом случае было бы очень полезно увеличить уровень отладки ifmail в /etc/sendmail.cf. Чтобы сделать это, добавьте параметр -4 в ifmail (если вам этого недостаточно, то по мне лучше установить -8). Для получения отладочных сообщений, я отправляю копию почты на несуществующий адрес, так что я получаю сообщение со всеми отладочными сообщениями в /var/spool/mqueue. Если такое сообщение не приходит, то это может означать, что некоторые права доступа не правильно установлены, что может заставлять систему ожидать (можно увидеть, что sendmail и ifmail остаются запущенными). Используйте журнальные сообщения sendmail, присылвемые через файл syslog и "странные" сообщения лежацие в /var/spool/mqueue.
Права доступа
Права доступа на файлы должны выставляться осторожно, особенно это относится к INN и sendmail. По соображениям безопасности исполнимые файлы INN не должны запускаться, если в системе нет пользователя news. По этой причине вы должны сейчас посмотреть и убедиться, что пользователи news и uucp есть в вашем файле пользователей. Вот выдержка из моего /etc/passwd :
news:*:9:13::/usr/lib/news:/bin/bash uucp:*:10:14::/var/spool/uucppublic:/bin/bash
Группы uucp и news должны существовать. Очень важно, чтобы вы вставили пользователей news, mail, root и fnet в группу uucp, чтобы sendmail мог SUID, для выполнения ifmail для рутинга и обработки нетмейла. Также важно добавить пользователя uucp в группу news. Вот вырезка из моего /etc/group :
news::13:news,uucp uucp::14:uucp,news,mail,root,fnet
Также все файлы в spool-каталоге должны быть доступны для записи для этой группы. Мы обсудим это позже.
Примеры конфигураций
Так как примеры, которые я привожу взяты из моей собственной системы, то они основаны на соответствующих версиях пакетов. Мои пакеты: Linux kernel 2.0.30, ifmail-2.10-tx8.3, INN-1.5.1 и sendmail-8.8.5. Мой Fido-адрес 1:125/710 и мои аплинки 1:125/33 и 1:125/5109. Вам нужно будет подкорректировать эти и подобные установки под ваши. Я успользую два crontab`а, один для пользователя fnet и второй для пользователя news. Прием звонков 24/7 (24 часа в сутки 7 дней в неделю) и звоню аплинкам в основном ночью. В настоящее время, у меня нет UUCP... :(
Пожалуйста, обратите внимание, что настройки могут отличаться, так как каждый дистрибутив линукс может изменяться от версии к версии. Со своей стороны я пытался оговорить такие ситуации, но вы все-таки должны проверить все ссылки на соответствие вашей системе, если примеры не работают так, как показано.
Если у вас пока нет шлюза в Internet, вы должны его поискать, поскольку ifmail его прекрасно поддерживает, и значит, что вы можете производить закачку по UUCP или как минимум связь через шлюз.
Пожалуйста: Не используйте мои адреса при тестировании вашей конфигурации. Используйте собственные, иначе я буду получать ответы на ваши вопросы.
Решение проблем
Если что-то работает не так (несмотря на мои объяснения), вы имеете различные возможности отыскать ошибки и исправить их. В пакете ifmail есть программа, предназначенная для этого - ifstat, которая сообщает какие пакеты на какой адрес лежат на холде.
Не смущайтесь, если эти пакеты уменьшаются после запуска ifpoll, поскольку почта упаковывается в ZIP файлы. Другое хорошее место, в которое рекомендуется заглянуть - это файлы /var/log/syslog или /var/log/messages.
Сборка & установка ifmail
Во-первых, вы захотите рапаковать ваш архив с ifmail. Я распаковываю его в каталог /etc . Вы можете поместить его в любой каталог по вашему желанию. Только помните, что надо правильно изменить все пути.
Во-вторых, вы захотите подредактировать главный кофигурационный файл компиляции /etc/ifmail/CONFIG. Я удалил их объяснения для краткости.
В Slackware sendmail V8 версии
В Slackware sendmail V8 версии 8.8.3, и вряд ли появятся проблемы с использованием последующих версий. Версия 8.8.3 имеет несколько дыр в защите, что имеет значение только если компьютер подключен к Интернет. Тут лучше использовать самую последнюю версию. Любой может взять свежий релиз на но как я уже говорил он входит в дистрибутив Slackware. Это весьма важно для установки полных файлов конфигурации, которые спрятаны в файле со странным именем smailcfg.tgz.
Скачивание почты и распаковка
Для дозвонки до линков я использую скрипт /etc/ifmail/misc/contrib/ifpoll, в который внес несколько маленьких изменений. Этот скрипт я вызываю каждую ночь из crontab пользователя fnet для прозвонки к моему хабу.
#!/bin/sh # ver 0.7 # ifpoll, скачать почту с узла моего босса или узла, заданного в командной # строке первым аргументом # # Я запускаю этот скрипт каждый день через 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 [<node>]" 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
Smail
В версии 3.1.28.1 smail имел ошибки в uuname-driver (который очень важен при использовании UUCP). Я использовал версию 3.1.29.1 из
smail-linuxbin-3.1.29.1.tar.gz. Slackware сейчас поставляется с sendmail вместе с smail, так что с получением smail проблем не должно возникнуть.
TIC-процессор
Есть несколько небольших TIC-процессоров, которые написаны на PERL. Особенно может быть рекомендован tic010b.tgz (также может быть назван как lt010b.tgz) от Cees de Groot (cg@bofh.lake.de, 241:10000/1512). Эта программа является частью пакета ifmail начиная с версии 2.8a и может быть найден в каталоге ifmail/misc/contrib/tic. Есть и другой TIC-процессор, который находится в UTIC стандартный для Unix-TIC процессор и написан Yar Tikhiy (yar@comp.chem.msu.su)
Упаковщики
Некоторые упаковщики имеются в составе дистрибутивов. Если какие-то упаковщики отсутствуют, то их можно взять с серверов вроде :
ZIP
unzip51 может распаковывать еще и новый ZIP-формат. Есть новый zip, который может упаковывать в новом формате. ARJ
unarj241 распаковывает ARJ-архивы, но под Linux упаковщика нет. LZH
lha существует и под Linux. ARC
старый, но очень важный упаковщик, например нодлисты могут паковаться им. Имеет как минимум один порт под Linux. RAR
unrar101 распаковывает RAR-архивы, но упаковщик я не нашел. Исходники unrar находятся на
За последние несколько лет ifmail
За последние несколько лет ifmail завоевал большую популярность среди сисопов ftn-узлов, переходящих с привычных ftn-мейлеров под DOS и программ для гейтования в Интернет на UNIX-мейлеры, выполняющие преобразование форматов ftn<->rfc. Так как число сисопов увеличивается, то находится все больше людей чувствующих себя не в своей тарелке из-за сложности освоения unix. Этот HOWTO поможет снять непонимание, показав насколько можно успешно администрировать юниксовый rfc<->ftn мейлер, используя комбинацию из ifmail, sendmail и INN.
Журналы регистрации 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. Я думаю вам нужно определиться в этом вопросе самим с учетом особенностей вашей системы.
Анонимное FTP
Для свободно распространяемой документации о Linux, смотрите сервера Linux Documentation Project и
Просматривайте группу новостей
для анонсов будущих разработок.
По крайней мере следующие сервера анонимного ftp содержат программы и дистрибутивы Linux.
Текстовое имя Числовой адрес Каталог с Linux ============================= =============== =============== tsx-11.mit.edu 18.172.1.2 /pub/linux sunsite.unc.edu 152.2.22.81 /pub/Linux ftp.funet.fi 128.214.248.6 /pub/Linux net.tamu.edu 128.194.177.1 /pub/linux ftp.mcc.ac.uk 130.88.203.12 /pub/linux src.doc.ic.ac.uk 146.169.2.1 /packages/linux fgb1.fgb.mw.tu-muenchen.de 129.187.200.1 /pub/linux ftp.informatik.tu-muenchen.de 131.159.0.110 /pub/comp/os/linux ftp.dfv.rwth-aachen.de 137.226.4.111 /pub/linux ftp.informatik.rwth-aachen.de 137.226.225.3 /pub/Linux ftp.Germany.EU.net 192.76.144.75 /pub/os/Linux ftp.lip6.fr 132.227.77.2 /pub/linux ftp.uu.net 137.39.1.9 /systems/unix/linux wuarchive.wustl.edu 128.252.135.4 mirrors/linux ftp.win.tue.nl 131.155.70.100 /pub/linux ftp.stack.urc.tue.nl 131.155.2.71 /pub/linux srawgw.sra.co.jp 133.137.4.3 /pub/os/linux cair.kaist.ac.kr /pub/Linux ftp.denet.dk 129.142.6.74 /pub/OS/linux NCTUCCCA.edu.tw 140.111.1.10 /Operating-Systems/Linux nic.switch.ch 130.59.1.40 /mirror/linux sunsite.cnlab-switch.ch 193.5.24.1 /mirror/linux cnuce_arch.cnr.it 131.114.1.10 /pub/Linux ftp.monash.edu.au 130.194.11.8 /pub/linux ftp.dstc.edu.au 130.102.181.31 /pub/linux ftp.sydutech.usyd.edu.au 129.78.192.2 /pub/linux
tsx-11.mit.edu и fgb1.fgb.mw.tu-muenchen.de являются официальными серверами для Linux GCC. Некоторые сервера содержат зеркала других серверов. Пожалуйста используйте ближайший (в сетевом смысле) сервер когда это возможно.
По крайней мере sunsite.unc.edu и ftp.informatik.tu-muenchen.de предлагают сервисы ftpmail. Для получения помощи отправьте письмо по электронной почте на адреса ftpmail@sunsite.unc.edu или ftp@informatik.tu-muenchen.de.
Если вы растеряны, попробуйте посмотреть , где перечислены различные дистрибутивы. Red Hat Linux и Debian считаются наиболее популярными дистрибутивами в настоящее время, по крайней мере в U.S.
Будущее
После выпуска Linux 1.0 работа производилась над некоторыми улучшениями. Linux 1.2 включает ускорение доступа к дискам, улучшение TTY, расширения виртуальной памяти, поддержка множества платформ, и многое другое. Linux 2.0, текущая стабильная версия, содержит даже еще больше улучшений, включая много улучшений производительности, несколько новых сетевых протоколов, одну из самых быстрых в мире реализаций TCP/IP и много, много больше. Еще большая производительность, больше сетевых протоколов и больше драйверов устройств будет доступно в Linux 2.2.
Даже при 3/4 миллионах строк кода в ядре, остается написать еще много кода, и еще больше документации. Пожалуйста подключитесь к списку рассылки linux-doc@vger.rutgers.edu если вы хотите внести улучшения в документацию. Пошлите письмо на адрес majordomo@vger.rutgers.edu с единственной строкой, содержащей слово ``help'' в теле письма (Не в заголовке).
CDROM
Сейчас большинство людей устанавливают Linux с CDROM. Дистрибутивы выросли до сотен мегабайт программного обеспечения для Linux, и скачивание их даже через модем на скорости 28.8 или через ISDN-соединение займет много времени.
В сущности есть 2 способа купить дистрибутив Linux на CDROM: как часть архива FTP-сервера, или прямо от производителя. Если вы купили архив, то вы часто можете выбрать из нескольких дистрибутивов, но нет поддержки. Когда вы покупаете дистрибутив прямо от производителя, то обычно получаете только один дистрибутив, но вы также получаете некоторую поддержку, обычно поддержку по установке.
Достаточная для работы конфигурация
Если вы хотите работать с программами, которые требуют повышенных вычислительных ресурсов, такими как gcc, X, и TeX, то вы скорее всего захотите использовать более быстрый процессор чем 386SX/16, но даже он может быть достаточным, если вы терпеливы.
На практике вы захотите по меньшей мере 4 MB RAM, если вы не будете использовать X, и 8 MB, если вы будете их использовать. Также если вы захотите иметь несколько работающих пользователей одновременно, то вы захотите иметь больше чем 4 MB оперативной памяти. Конечно система будет работать с меньшим количеством памяти, но тогда она будет использовать виртуальную память (используя жесткий диск как медленную память) и это будет настолько медленно, что будет неудобно для использования. Если вы используете много программ одновременно, то 16 MB значительно уменьшат свапирование. Если вы не хотите иметь ощутимое свапирование при нормальной загрузке, то 32 MB вероятно будет достаточно для одного пользователя. Если вы запускаете несколько интенсивно использующих память программ одновременно, то может быть необходимо установить 64 MB памяти для избежания интенсивного свапирования. Конечно, если вы запускаете пожирающие память приложения, то вы можете захотеть установить больше памяти.
Размер жесткого диска зависит от того, какое программное обеспечение вы хотите установить. Нормальные базовый набор утилит Unix, командных процессоров и административных программ должен использовать меньше чем 10 MB, с небольшим пространством для пользовательских файлов. Для более полной системы, возьмите Red Hat, Debian, или другой дистрибутив и предположите, что вам необходимо от 60 до 600 MB, в зависимости от того, что вы выбрали для установки и какой дистрибутив вы взяли. Добавьте к этому пространство, которое вы хотите выделить пользователям. С текущими ценами на жесткие диски, если вы покупаете новую систему, то нет смысла покупать диск, который будет слишком маленьким. Возьмите по крайней мере диск размером 2 GB, лучше всего 4 GB или большее и вы не будете сожалеть об этом. Linux будет нормально работать с очень большими жесткими дисками, такими как с недавних пор популярными 11 GB IDE жесткими дисками или с 18 GB SCSI жесткими дисками.
Добавьте больше памяти, больше жесткий диск и более быстрый процессор и другое оборудование, в зависимости от ваших нужд, желаний и бюджета чтобы использование стало более удобным. В общем, одно большое различие с DOS в том, что в Linux, добавление памяти создает больщую разницу, тогда как в DOS, добавочная память не дает такой большой разницы. Это конечно связано с пределом DOS на размер в 640KB, которого просто не существует в Linux.
Другие методы получения Linux
Существует много BBS, на которых есть файлы для Linux. Их список время от времени посылается в comp.os.linux.announce. Спросите своих друзей и в группах пользователей, или возьмите один из коммерческих дистрибутивов. Их список приводится Linux distribution HOWTO, доступный на , и регулярно посылаемый в группу новостей .
Кто использует Linux?
Linux является свободно доступным продуктом и ни от кого не требуется зарегистрировать копии в каком либо центральном офисе, так что достаточно трудно подсчитать сколько людей использует Linux. Некоторые компании полностью живут за счет продажи и поддержки Linux, и группы новостей о Linux являются одними из тяжело-читаемых в internet, так что количество людей исчисляется миллионами, но окончательное число трудно определить. Наилучшие маркетиноговые исследования в настоящее время показывают цифры от 7.5 до 11 миллионов пользователей.
Один человек, Harald T. Alvestrand <Harald.T.Alvestrand@uninett.no>, решил подсчитать количество пользователей Linux самым тяжелым способом: один за другим. Если вы хотите быть засчитанным как пользователь Linux, то пожалуйста используйте анкету доступную по адресу . Также вы можете послать сообщение по адресу linux-counter@uninett.no с одним из следующих заголовков: `I use Linux at home', `I use Linux at work', и `I use Linux at home and at work'. Этот человек также может принимать другие виды регистрации; запросите его о деталях.
Он посылает свои расчеты в каждый месяц; они также доступны с .
Минимальная конфигурация
Следующая конфигурация вероятно будет наименьшей возможной на которой будет работать Linux: 386SX/16, 1 MB RAM, 1.44 MB или 1.2 MB гибкий диск, любая поддерживаемая видеокарта (плюс клавиатура, монитор и так далее). Эта конфигурация позволит вам загрузиться и проверить, все ли работает, но вы не сможете сделать ничего полезного. Смотрите данные на о минимальной конфигурации Linux.
Для того чтобы делать что-нибудь, вам скорее всего понадобиться некоторое пространство на жестком диске, от 5 до 10 МБ должно быть достаточно для наименьшей установки (только самые необходимые программы и вероятно одно или два необходимых приложения, таких как программа терминала). Но это все еще очень ограниченно и очень неудобно, поскольку все еще нет достаточно места для того, чтобы что-нибудь делать. В общем это не рекомендуется за исключением тестирования работы некоторых вещей, и конечно для того чтобы хвастаться маленьким требованием к ресурсам.
Неполный список перенесенных в систему программ и другогопрограммного обеспечения
Большинство общих утилит и программ Unix было перенесено в Linux, включая почти все программное обеспечение проекта GNU и много X-клиентов из различных источников. В действительности, перенос часто слишком сильное слово, поскольку много программ компилируется сразу без модификаций или с очень маленькими изменениями, поскольку Linux достаточно хорошо соответствует POSIX. Никогда не существует достаточно приложения для любой операционной системы, но Linux имеет приложения и для конечного пользователя и для обслуживания серверов. Свяжитесь с производителем вашего любимого приложения для Unix и спросите его насчет переноса приложения в Linux.
Вот неполный список программного обеспечения о котором известно, что оно работает под управлением Linux:
Базовые команды Unix:
ls, tr, sed, awk и так далее (вы назовете их, и в Linux они скорее всего есть).
Средства разработки:
gcc, gdb, make, bison, flex, perl, rcs, cvs, prof.
Языки и среды разработки:
C, C++, Objective C, Java, Modula-3, Modula-2, Oberon, Ada95, Pascal, Fortran, ML, scheme, Tcl/tk, Perl, Python, Common Lisp и сного других.
Графические среды:
GNOME и KDE (десктопы), X11R6 (XFree86 3.x), X11R5 (XFree86 2.x), MGR.
Редактора:
GNU Emacs, XEmacs, MicroEmacs, jove, ez, epoch, elvis (GNU vi), vim, vile, joe, pico, jed, и другие.
Командные процессоры:
bash (POSIX sh-совместимый), zsh
(включая режим совместимости с ksh), pdksh, tcsh, csh, rc, es, ash (в большинстве sh-совместимый командный процессор, используемый как /bin/sh в BSD), и много других.
Программы связи:
Доступны PPP, UUCP, SLIP, CSLIP, полный набор утилит для связи по TCP/IP, kermit, szrz, minicom, pcomm, xcomm, term (запускает много командных процессоров, перенаправляет сетевые соединения, позволяет работать с удаленными X-приложениями, и все это через модемную линию), Seyon (популярная программа связи для X-windows), и несколько пакетов для fax и голосовой почты (используя ZyXEL и другие модемы). Конечно доступны удаленные сетевые соединения с системами.
Новости и почта:
C-news, innd, trn, nn, tin, smail, elm, mh, exmh, pine, mutt, и т.п..
Обработка текстов:
TeX, groff, doc, ez, LyX, Lout, Linuxdoc-SGML, и другие.
Игры:
Nethack, несколько игр для Mud и X, и большое количество других.
Все эти программы (это даже не сотая часть того что доступно) свободно распространяются. Коммерческое программное обеспечение становится широко распространенным; спросите поставщика вашего любимого коммерческого приложения, поддерживает ли оно Linux.
Новости о Linux
Ежемесячный журнал, названный Linux Journal, начал выпускаться более 4-х лет назад. Он включает статьи предназначенные для пользователей любого уровня мастерства, и которые должны быть полезны для всех пользователей Linux. Годовая подписка стоит $22 в США, $27 в Канаде и Мексике, и $32 в других странах, оплата в валюте США. Запросы на подписку могут быть отправлены через электронную почту на адрес subs@ssc.com, или по факсу на +1-206-782-7191, или звонком по телефону +1-206-782-7733, или письмом в Linux Journal, PO Box 85867, Seattle, WA 98145-1867 USA. SSC имеет общедоступный ключ PGP для шифрования вашей почты для защиты номера вашей кредитной карты; выполните команду finger info@ssc.com для получения ключа.
Существует несколько групп новостей Usenet для обсуждения Linux, а также несколько списков рассылки. Смотрите Linux FAQ для более детальной информации о списках рассылки (вы можете найти FAQ либо в группе новостей, либо на FTP-серверах).
Группа новостей является модерируемой группой для распространения анонсов о Linux (новые программы, исправления ошибок и т.п.)
Группа новостей является модерируемой группой новостей в которую посылают Linux FAQ, документы серии HOWTO, и другую документацию.
Группа новостей является немодерируемой группой новостей для обсуждения администрирования систем с Linux.
Группа новостей ---это немодерируемая группа специально для обсуждения разработки ядра Linux. Должны обсуждаться вопросы связанные с разработкой приложения, те которые непосредственно связаны с ядром. Все другие вопросы относящиеся к разработке приложений скорее всего будут относится к вопросам связанным с разработкой приложений в других версиях Unix и должны быть направлены в группу comp.unix, если они не будут совсем специфичными для разработки приложений под Linux, в этом случае вопросы должны быть направлены в группу comp.os.linux.development.apps.
Группа новостей --- это немодерируемая группа новостей специально для обсуждения вопросов связанных с разработкой приложений для Linux. Она не предназначена ни для обсуждения вопросов где взять приложения для Linux, ни для обсуждения того как должны выглядеть приложения для Linux.
Группа новостей предназначена для специфических для Linux вопросов о компьютерном оборудовании.
Группа новостей предназначена для специфических для Linux вопросов о сетевых разработках и настройке сети.
Группа новостей для специфических для Linux вопросов о X Windows.
Группа новостей является заменой для comp.os.linux, и предназначена для обсуждения всего, что не является темой для других групп.
В общем между группами новостей Linux нет пересечения сообщений между группами. Время от времени существует только передача сообщений между немодерируемыми группами и . Причиной разделения старой группы comp.os.linux на много групп было стремление уменьшить трафик в каждой группе.
Linux в сети находится по адресу
Официальный статус Linux
Хотя Linux поставляется с полным исходным кодом, он является программным обеспечением, защищенным авторскими правами, а не public domain. Однако он свободно доступен по GNU General Public License, на которую иногда ссылаются как на ``copyleft''. Для более детальной информации смотрите GPL. Программы, которые работают под управлением Linux имеет собственное авторское право, хотя многие из них также используют GPL. X использует MIT X copyright, а некоторые утилиты идут под BSD copyright. В любом случае все программное обеспечение на FTP-сервере является свободно распространяемым (а иначе его там не должно быть).
Поддерживаемое оборудование
Процессор:
Любой, на котором могут выполняться программы для защищенного режима процессора 386. Должны работать все модели процессоров 386, 486, Pentium, Pentium Pro, Pentium II, и их клоны. (Процессора 286 и ниже, могут поддерживаться на меньшем ядре, названном ELKS (Embeddable Linux Kernel Subset), но не ожидайте от него тех же возможнойстей). Версия для процессоров 680x0 (для x = 2 с внешнимl MMU, 3, 4, и 6), которые используятся на Amiga и Atari может быть найдена на сервере tsx-11.mit.edu в каталоге 680x0. Также поддерживается много машин DEC Alpha, SPARC и PowerPC. Также был сделан перенос системы на архитектуры ARM, StrongARM и MIPS. Более детальная информация может быть найдена в других источниках.
Архитектуры:
Шины PCI, ISA, EISA и VLB. Поддержка MCA (большинство настоящих машин PS/2) неполная, но улучшается (смотрите выше). Linux устанавливает более высокие требования к оборудованию чем DOS, Windows и большинство операционных систем. Это означает, что некоторое незначительное оборудование, которое работает без сбоев под управлением менее требовательной операционной системы, может работать со сбоями под управлением Linux. Linux является великолепным тестером памяти...
RAM:
До 1 GB на платформе Intel; больше н а 64-битных платформах. Некоторые люди (включая Linus) заметили, что добавление оперативной памяти без одновременного добавления кэш-памяти сильно замедляло их машины, так что если вы добавили память и заметили, что ваша машина замедлилась, то добавьте больше кэш-памяти. Некоторые машины могут кэшировать только определенное количество памяти, вне зависимости от того сколько оперативной памяти установлено (большинство популярных наборов микросхем могут кэшировать 64 MB). Наличие более 64 MB памяти будет требовать установки параметров времени загрузки при использовании ядра версии 2.0.35 и более ранних, так как BIOS был вначале спроектирован так, что не мог сообщать о более чем 64MB. Недавние ядра 2.1.x и более поздние могут обнаруживать большее количество памяти в системе.
Хранилища данных:
Поддерживаються настоящие устройства AT (EIDE, IDE, 16-ти битные HD контроллеры с MFM или RLL, или ESDI), так же как и жесткие диски SCSI и CD-ROM, с поддерживаемым адаптером SCSI. Также поддерживаются настоящие контроллеры XT (8-битные контроллеры с MFM или RLL). Поддерживаемые адаптеры SCSI: серии Advansys, Adaptec 1542, 1522, 1740, 27xx, и 29xx (с некоторыми исключениями), Buslogic MultiMaster и Flashpoint, основанные на NCR53c8xx контроллеры, контроллеры DPT, контроллеры Qlogic ISP и FAS, Seagate ST-01 и ST-02, серии Future Domain TMC-88x (или любые карты основанные на микросхеме TMC950) и TMC1660/1680, Ultrastor 14F, 24F и 34F, Western Digital wd7000 и другие. Также поддерживаются ленточные SCSI, QIC-02, и некоторые QIC-80. Кроме IDE и SCSU cdrom, поддерживаются некоторые патентованные устройства CD-ROM, включая Matsushita/Panasonic, Mitsumi, Sony, Soundblaster, Toshiba, ATAPI (EIDE), SCSI, и другие. Для более точной информации о моделях смотрите Hardware Compatibility HOWTO. N.B. Эти списки являются неполными и такими всегда будут. Продавцы дистрибутивов поддерживают более полные списки.
Видео:
VGA, EGA, CGA, или Hercules (и совместимые) работают в текстовом режиме. Для графики и X, существует поддержка (по крайней мере) обычного VGA, и некоторых super-VGA карт (большинство карт основанных на наборах микросзхем Tseng, Paradise, и некоторых Trident), S3, 8514/A, ATI, Matrox, и Hercules. (Linux использует XFree86 X червер, так что определите какие карты поддерживаются. Полный список поддерживаемых карт займет много страниц. Смотрите )
Сетевые возможности:
Поддержка Ethernet включает 3COM 503/509/579/589/595/905 (501/505/507 поддерживаются, но не рекомендуются) AT&T GIS (neé NCR) WaveLAN, большинство карт основанных на WD8390, большинство карт основанных на most WD80x3, NE1000/2000 и большинство клонов, AC3200, Apricot 82596, AT1700, ATP, DE425/434/435/500, D-Link DE-600/620, DEPCA, DE100/101, DE200/201/202 Turbo, DE210, DE422, Cabletron E2100 (не рекомендуется), Intel EtherExpress (не рекомендуется), EtherExpress Pro, EtherExpress 100, DEC EtherWORKS 3, HP LAN, HP PCLAN/plus, большинство карт основанных на AMD LANCE, NI5210, ni6510, SMC Ultra, DEC 21040 (tulip), Zenith Z-Note ethernet, Все карты Zircom и все карты Cabletron, кроме E2100, не поддерживаются в следствии нежелания производителей свободно распространять информацию о программировании.
Поддержка FDDI в настоящее время включает карты DEFxx производства DEC.
Сетевая поддержка Point-to-Point (Точка-к-Точке) включает PPP, SLIP, CSLIP, и PLIP. Поддержка PPP доступна и для стандартных асинхронных устройств типа модемов и для синхронных соединений, таких как ISDN.
Доступна ограниченная поддержка Token Ring.
Последовательные устройства:
Большинство карт, основанных на 16450 и 16550 UART, включая AST Fourport, Usenet Serial Card II и другие. Поддерживаются расширенные платы, включая серию Cyclades Cyclom (поддерживаются производителем), серию Comtrol Rocketport series (поддерживаются производителем), Stallion (большинство карт; поддерживаются производителем), и Digi (некоторые карты; поддерживаются производителем). Поддерживается некоторое оборудование ISDN, устройства с чередованием кадров (frame relay).
Другое оборудование:
SoundBlaster, ProAudio Spectrum 16, Gravis Ultrasound, большинство звуковых карт, большинство (все?) типы мышей (Microsoft, Logitech, PS/2), и т.п.
Возможности Linux
многозадачность: несколько программ работают в одно и тоже время.
многопользовательская система: несколько пользователей могут работать на одной машине одновременно (и без многопользовательской лицензии!).
многоплатформенность: работает на разных процессорах, не только на Intel.
многороцессорность: доступна поддержка SMP на платформах Intel и SPARC (для других платформ работа сейчас ведется), и Linux используется в нескольких свободно-связанных MP приложениях, включая системы Beowulf (смотрите ) и основанном на SPARC суперкомпьютере Fujitsu AP1000+.
многопоточность: имеет встроенную в ядро поддержку множества независящих потоков внутри пространства одного процесса.
работает в защищенном режиме на 386.
имеет защиту памяти между процессами, так что одна программа не может разрушить всю систему.
загрузка исполнимых файлов по требованию: Linux считывает с диска только те части программ, которые в действительности нужны.
разделяемые copy-on-write страницы памяти между программами. Это означает, что много процессов могут использовать одну и туже память для работы. Когда один из процессов пытается записать в эту память, эта страница (4КБ кусок памяти) копируется куда-нибудь. Copy-on-write имеет два преимущества: увеличение скорости и уменьшение используемой памяти.
виртуальная памяти использует подкачку страниц (а не свапирование всего процесса) на диск: на отдельный раздел или в файл в файловой системе, или оба способа, с возможностью добавления дополнительных областей свапирования во время работы (да, они все еще называются областями свапирования). Максимум 16 областей свапирования размером по 128 MB (2GB в свежих ядрах) могут быть использованы одновременно, теоретически максимум 2 GB используемого пространства для свапирования. Эти значения достаточно просто увеличить, если это необходимо, просто изменив несколько строк исходного кода.
унифицированный пул памяти для пользовательских программ и дискового кеша, так что вся свободная память может быть использована для кеширования, а кеш может быть уменьшен при выполнении больших программ.
динамически подключаемые разделяемые библиотеки (DLL), и статические библиотеки.
производится core dump для посмертного анализа программ, позволяя использовать отладчик для программы, не только когда она выполняется, но и тогда, когда она аварийно завершается.
в большинстве совместима с POSIX, System V и BSD на уровне исходного кода.
используя iBCS2-compliant модуль эмуляции, большей частью совместима с SCO, SVR3 и SVR4 на уровне двоичных файлов.
доступен весь исходный код, включая все ядро и все драйвера, средства разработки и все пользовательские программы; также, все это свободно распространяется. Множество коммерческих программ предоставляется для Linux без исходного кода, но все что свободно, включая всю базовую операционную систему, остается свободным.
управление заданиями POSIX.
псевдотерминалы (pty).
эмуляция сопроцессора 387 в ядре, так что программам не нужна собственная эмуляция. Каждый компьютер, работающий под управлением Linux представляется как имеющий математический сопроцессор. Конечно, сели на вашем компьютере уже есть математический сопроцессор, то он будет использован вместо эмуляции, и вы можете даже скомпилировать ядро без эмуляции математического сопроцессора, для уменьшения занимаемой ядром памяти.
поддержка множества национальных или настраиваемых клавиатур, и достаточно легко динамически добавить еще одну.
множественные виртуальные консоли: разные независящие сеансы работы на одной консоли, вы можете переключаться между ними используя комбинацию клавиш (не зависит от видео оборудования). Консоли выделяются динамически; вы можете создать до 64 консолей.
Поддержка разных общих файловых систем, включая minix, Xenix, и все общие файловые системы System V, также имеет собственную расширенную файловую систему, которая позволяет создавать разделы до 4 TB, с именами длиной до 255 символов.
прозрачный доступ к разделамo MS-DOS (или к разделам OS/2 FAT) используя специальную файловую систему: вам не нужны специальные команды для использования раздела MS-DOS, он выглядит точно также как обычная файловая система Unix (за исключением странных ограничений на имена файлов, права доступа и так далее). Сжатые разделы MS-DOS 6 в настоящее время не доступны без наложения дополнительной заплатки на исходный код ядра (dmsdosfs). Поддержка VFAT (WNT, Windows 95) и FAT-32 доступна в Linux 2.0
специальная файловая система, названная UMSDOS, которая позволяет установить Linux на файловую систему DOS.
доступ только для чтения к HPFS-2 для OS/2 2.1 (В 2.4 будет доступ и на запись. Прим. переводчика)
поддержка файловой системы HFS (Macintosh) доступна отдельно, как модуль.
файловая система CD-ROM, которая работает со всеми стандартными форматами CD-ROM.
сетевые возможности TCP/IP, включая ftp, telnet, NFS, и т.д.
сервер Appletalk
клиент и сервер Netware
клиент и сервер Lan Manager/Windows Native (SMB)
множество сетевых протоколов: базовые протоколы, доступные в последних разрабатываемых ядрах включают TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP (Appletalk), Netrom, и другие. Стабильные сетевые протоколы, включенные в стабильную ветку ядер включают в себя TCP, IPv4, IPX, DDP, и AX.25.
Введение в Linux
Linux является полностью свободной реализацией спецификации POSIX, с расширениями SYSV и BSD (что означает, что Linux выглядит как Unix, не основан не на том же исходном коде), Linux доступен и в двоичной форме и в форме исходных текстов. Авторскими правами на него владеет Linus Torvalds <torvalds@transmeta.com> и другие люди, работавшие над ним, и он свободно может распространятся действием терминов, определенных в GNU General Public License (GPL). Копия GPL включена в исходные тексты Linux; вы можете также получить ее с
Сам по себе Linux, это только ядро операционной системы, та часть, которая контролирует оборудование, обслуживает файлы, разделяет процессы и так далее. Существуют разные комбинации Linux с наборами утилит и приложений для формирования полнофункциональной операционной системы. Каждая из этих комбинаций называется дистрибутивом Linux. Хотя слово Linux в его точной форме относится к ядру, также корректно и широко применяется ко всей операционной системе, построенной вокург ядра Linux. Списки существующих дистрибутивов и их краткие описания приводятся в Ни один из этих дистрибутивов не является ``оффициальным Linux''.
Linux не является ни public domain, ни `shareware'. Это 'свободноное' программное обеспечение, часто называемое freeware или Open Source Software[tm] (смотрите ), и вы можете раздавать или продавать копии, но вы должны включать исходный код или сделать его доступным тем же самым способом, что и двоичные файлы, которые вы раздаете или продаете. Если вы распространяете любые изменения, то вы обязаны распространять исходный код для этих изменений. Смотрите GNU General Public License (Общую публичную лицензию GNU) для более детальной информации.
Linux остается свободным с выходом версии 2.0, и будет оставаться свободным. Потому-что из-за GPL, предметом которой является Linux, будет незаконным сделать его несвободным. Замечание: `свободная' часть предоставляет доступ к исходному коду вместо денег; полностью законно брать плату за распространение Linux, поскольку вы также распространяете исходный код. Это в общем; если вы хотите дополнительную информацию, то прочитайте GPL.
Linux работает на машинах с процессорами 386/486/Pentium с шинами ISA, EISA, PCI и VLB. MCA (патентованная шина IBM) не так хорошо поддерживается в ядрах серии 2.0.x и более ранних, но ее поддержка была добавлена в разрабатываемую в настоящее время версию, 2.1.x. Если вас интересует это, то смотрите информацию на
Существует порт на множество платформ Motorola 680x0 (в настоящее время работает на некоторых компьютерах Amiga, Atari и VME), который работает достаточно хорошо. Он требует процессора 68020 с MMU, 68030, 68040 или 68060, и также требует FPU. В настоящее время работают сетевые программы и X Window. Смотрите
Linux хорошо работает на машинах с процессорами DEC Alpha, поддерживая "Jensen", "NoName", "Cabriolet", "Universal Desktop Box" (более известный как Multia), и много других платформ. Для детальной информации смотрите
Linux также работает на машинах Sun SPARC; большинство машин sun4c, sun4m, и sun4u в настоящее время могут работать с Linux, поддержка sun4 находится в стадии разработки. Red Hat Linux (во время написания) являлся единственным дистрибутивом Linux доступным для SPARC; смотрите
Linux активно переносится на машины с архитектурой PowerPC, включая машины PowerMac (Nubus и PCI), Motorola, IBM, и Be. Смотрите и
Перенос на другие системы, включая MIPS (смотрите и ) и ARM, находится в процессе и показывает разную степень прогресса. Если вы заинтересованы и можете помочь, что вы можете найти других разработчиков, которые пожелают работать с вами.
Linux больше не считается находящимся в стадии бета-тестирования с момента выпуска первой версии 14 Марта 1994. Но все равно еще есть ошибки в системе и новые ошибки будут подкрадываться и будут исправляться в течении времени. Linux следует ``модели открытой разработки (open development model)'', все новые версии будут доступны всем, независимо от того считаются они или нет ``качественными''. Однако, для того, чтобы помочь людям разобраться берут они стабильную версию или нет, была реализована следующая схема: версии n.x.y, где x это четное число, являются стабильными версиями, и только исправления ошибок добавляются к ним при увеличении y. Так что при переходе от версии 1.2.2 к 1.2.3, будут только исправления ошибок и никаких новых возможностей. Версии n.x.y, где x это нечетное число, являются выпусками только для разработчиков и могут быть нестабильны и новые возможности добавляются к ним все время.
Время от времени, когда текущее разрабатываемое ядро стабилизируется, оно замораживается как новое ``стабильное'' ядро, и будет продолжаться разработка новой версии ядра. Заметим, что большинство версий ядра Linux, вне зависимости от того, являются ли они бета-версией или нет, является достаточно устойчивыми; в этом контексте ``стабильный'' означает ``медленно изменяющийся'' в добавление к ``устойчивый''.
Текущей стабильной версией является версия 2.0.35 (она будет изменяться по мере того, как драйвера устройств и исправления ошибок будут добавляться), и разработка ведется над экспериментальными ядрами 2.1.x. Исходные тексты ядра Linux содержат файл Documentation/Changes, который объясняет изменения, о которых вы должны беспокоится при обновлении на новое ядро. Однако, подавляющее большинство пользователей Linux просто обновляют время от времени свой дистрибутив для получения новой версии ядра.
Большинство версий Linux, бета или нет, достаточно стабильно, и вы можете продолжать использовать их, если они содержат все что вам нужно, и вы не хотите быть на острие ножа (bleeding edge). Один сервер имел компьютер работавший под управлением ядра версии 0.97p1 (датированной летом 1992) в течении 136 дней без ошибок или падений. (Он работал бы дольше, если бы не backhoe оператор не сделал ошибку при работе с главным трансформатором для dumpster...) Другие люди прислали данные о работе свыше года. Один сервер все еще имеет компьютер, работающий под управлением Linux 0.99p15s более чем 600 дней по последним сообщениям.
Одна вещь с которой вы должны быть осторожны---это то, что Linux разрабатывается используя открытую и децентрализованную модель, вместо использования закрытой и централизованной модели подобно другому программному обеспечению. Это означает, что текущая разрабатываемая версия всегда доступна (с задержкой на неделю или две), так что любой человек может использовать ее. Результатом этого является то, что когда версия с новыми возможностями выпускается, то она почти всегда содержит ошибки, но также в результате быстрой разработки ошибки находятся и исправляются быстро, часто за считанные часы, поскольку много людей работают над их исправлением.
По контрасту, закрытая и централизованная модель означает, что только один человек или группа работают над проектом, и они выпускают программное обеспечение, когда они думают, что оно работает нормально. Часто это приводит к большим промежуткам времени между версиями, долгому ожиданию исправления ошибок и замедленной разработке. Последние версии такого программного обеспечения иногда очень высокого качества, но скорость разработки в общем намного медленнее.
Для обсуждения этих двух моделей читайте статью Eric Raymond ``The Cathedral and the Bazaar'' по адресу . (Есть русский перевод статьи ``Собор и базар'' в библиотеке М. Мошкова ).
На 1-е сентября 1998, текущим стабильным ядром Linux было 2.0.35, а последней разрабатываемой версией было ядро 2.1.119.