файл Скорее всего Вы вообще не будете использовать этот файл, чтобы - 218 - описать UUCP hostname. По умолчанию, UUCP использует имя, которое Вы устанавливаете командой"hostname, но вообще это хорошая идея - установить имя UUCP явно. Типовой config файл показывается ниже: # /usr/lib/uucp/config - UUCP main configuration file Hostname vstout 13.3.6 Как сказать UUCP о других системах - sys Файл Файл sys описывает системы, о которых ваша машина знает. Anentry представляется ключевым словом системы; последующий выстраивает в линию к следующей директиве системы, детализируют параметры, специфические для того места. Обычно, вход системы определит параметры типа номера телефона и дружеской беседы входа в систему. Параметры перед самими первыми значениями по умолчанию набора строки системы, используемыми для всех систем. Обычно, Вы установите протокол paramters и т.п. в разделе значений по умолчанию. Наиболее важные элементы записи подробней описаны ниже . 13.3.6.1 Имя Системы Каждое имя системы может появляться более только один раз. Если Вы хотите использовать несколько наборы конфигураций для той же самой системы (типа различных номеров телефона uucico, должен пробовать по очереди), Вы можете определять альтернативы. Альтернативы описаны ниже. 6. Старая Версия 2 UUCP не делает широковещательной передачи имени в начале вызова; однако более новые реализации (а также и Taylor UUCP) делают это. 13.3.6.2 Номер телефона Если связь с удаленной системой достигается по телефонной линии, поле телефона определяет номер, который модем должен набрать для связи. Он может содержать отдельные лексемы, интерпретируемые процедурой набора uucico's. - 219 - Знак '=' означает " ждать вторичный тон набора кода", '_' генерирует паузу в одну секунду. Например, некоторые телефонные станции сбрасывают, если Вы не делаете паузу между набором префиксного кода и номера телефона. [Я не знгю соответствующий Английский термин для этого , но Вы знаете, что иногда на частной внутренней телефооной станции компании Вы должны набрать 0 или 9, чтобы получить выход наружу.] Любая встроенная символьная строка может использоваться, чтобы скрыть место-зависимую информацию(например код области). Любая такая строка транслируется с помощью файла dialcode. Предположим, что Вы имеете следующий dialcode файл: # /usr/lib/uucp/dialcode - dialcode translation Bogoham 024881 Coxton 035119 С такими определениями Вы можете использовать номер телефона типа Bogoham7732 в файле sys, это делает все немного проще. 13.3.6.3 Опции Port и Speed Опции Port и Speed используется, чтобы выбрать устройство, используемое для вызова удаленной системы, и установки максимального быстродействия. (7) вход системы может использовать или опцию единственные, или обе опции в конъюнкции. При поиске подходящего устройства в файле port, только те порты ,могут быть выбраны, которые соответствуют имени порта и(или) диапазону скоростей. Вообще, использование опции speed должен удовлетворить. Если Вы имеете только одно последовательное устройство, описанное в port, uucico будет всегда выбирать правильно, во всяком случае, так что Вы только должны дать этому желательное быстродействие. Если у Вас несколько модемов, присоединенных к вашей системе, Вы все еще часто не хотите к. 7. Скорость в бодах Вашего tty (телетайпа) должна быть по крайней мере так же высока, как максимально возможная скорость передачи. - 220 - Назовите специфический порт, потому что, если uucico находит, что имеются отдельные пары, это пробует каждое устройство по очереди, пока это не находит неиспользуемый. 13.3.6.4 Login chat (Дружеская беседа Входв в уистему) Выше мы уже сталкивались с сценарием дружеской беседы входа в систему (login chat script), который сообщает uucico, как регистрироваться в удаленной системе. Он состоит из списка лексем(маркеров), определяя строки, ожидаемые и посланные локальным процессом uucico. Усилие состоит в том, чтобы заставить uucico ждать, пока удаленная машина не пошлет приглашение входа в систему, затем послать имя входа в систему, ждать, пока удаленную система пошлет приглашение на ввод пароля, и посылать пароль. Ожидание и посылка строки чередуются. Uucico автоматически добавляет символ \r возврата каретки к, любой посылаемой строке. Таким образом, простой сценарий дружеской беседы походил бы на: login: vstout Password: catch22 Обратите внимание, что поля записи не содержат текста приглашений. Удостоерьтесь, что вы войдете в систему , даже если система посылает Login вместо login. Uucico также учитывает некоторые виды условного выполнения, например в случае, если getty удаленной машины должен быть сброшен перед посылкой приглашения. Для этого Вы можете присоединиться под-дружескую(sub-chat) беседу к ожидающейся строке, смещение черточкой. Sub-chat выполняется только если основное соединение не удалось, то есть произошла блокировка по времени. Один из способов использовать эту возможность состоит в том, чтобы послать BREAK, если удаленная система не отображает приглашение входа в систему. Следующий пример дает всесторонний сценарий дружеской беседы, который должен работать и в случае, если Вы должны нажать Enter прежде, чем войти в систему. Пустая строка ("") говорит UUCP ничего не ждать и продолжать посылать следующую строку немедленно. - 221 - "" \n\r\d\r\n\c login:-BREAK-login: vstout password: catch22 Имеется пара специальных строк и ESC-символов, которые могут включаться в сценарий дружеской беседы. Следующее - неполный список символов, допустимых в сцзнарки: Пустая строка сообщает, чтобы uucico не ждал ничего,а продолжил посылать следующую. \t Cимвол табуляции. \r символ возврата каретки. \s Пробел. Вы нуждаетесь в нем , чтобы включить пробел в строку дружеской беседы. \n перевод строки. \\ обратный слэш ( Backslash). В посылаемой строке, следующие ESC-символы и последовательности допустимы в дополнение к вышеупомянутым: EOT -символ конца передачи (^D). BREAK -Символ прерывания . \c Подавляет посылку возврата каретки в конце строки. - 222 - \d Задержка в течение 1 секунды. \E Дает возможность эхо - проверки.Требует, чтобы uucico ждал ECHO всего, что это записывает, чтобы читаться в стороне от устройства прежде, чем это может продолжать дружескую беседу. Это прежде всего полезно когда используется в дружеских беседах модема (с которым мы столкнемся ниже). По умолчанию эхо выключено. \e Отключает проверку эхо. \K То же самое, что и BREAK. \p Пауза в долю секунды. 13.3.6.5 Альтернативы Иногда желательно иметь несколько описаний для входа в одну систему, например, если система может быть достигнута на различных модемных линиях. С Taylor UUCP Вы можете делать это, определив так называемую альтернативу. Альтернативная строка сохраняет все установки из основной , и определяет только те значения, которые должны быть отменены в заданной по умолчанию , или добавиться к ней. Альтернатива - смещение из входа системы строкой, содержащей ключевое слово altgrnave. Чтобы использовать два номера телефона для pablo, Вы должны изменить sys следующим образом: system pablo phone 123-456 alternate phone 123-455 - 223 - При вызове pablo, uucico теперь сначала наберет 123-456, и ,если ничего не получается пробует альтернативу. Альтернативный вход сохраняет все установки из основного входа системы, и изменяет только номер телефона. 13.3.6.6 Ограничение времени вызова Taylor UUCP обеспечивает ряд способов,обеспечивающих ограничение времени обращения с удаленной системы. Вам потребуется сделать это или из- за ограничений, которае удаленная главная ЭВМ накладывает на услуги в течение деловых часов, или просто избегать времен с высокими ценами за услуги. Обратите внимание, что всегда возможно отменить ограничения времени обращения, запустив uucico с опцией -S или -f. По умолчанию, Taylor UUCP отвергнет соединения в любое время, так что Вы должны использовать некоторый вид спецификации времени в файле sys. Если Вы не очень заботитесь об ограничении времени обращения, Вы можете определить опцию времени со значением Аny (любой) в вашем файле sys. Самый простой способ ограничить время обращения - поле времени, которое сопровождается строкой, состоящей из дня и подполя времени. День может быть комбинацией Mo, Tu , We, Th, Fr, Sa, Su или Any(любой), Never(никогда), или Wk для дней недели. Время состоит из двух 24-часовых значений часов, отделяемых черточкой. Они определяют диапазон, в течение которого обращения допустимы. Комбинация этих лексем пишется без интервалов. Любая лексема дня и спецификация времени может быть сгруппирована вместе с запятыми. Например, время MoWe0300-0730, Fr1805-2000 допускает обращаться в понедельник и среду от 3 д о 7.30 утра, и в пятницу с 18.05 до 20.00. Когда поле времени охватывает полночь, и написано Mo1830- 0600, это фактически&ознвчает понедельник, между полночью и 6.00 утра, и между 18.30 пополудни и полночью(понедельника). Специальные строки Any и Never означают ВСЕГДА и НИКОГДА. Команда time задает параметр, который описывает время повтора в минутах. Когда попытка установить соединение не удалась, uucico не допустит другой попытки вызвать удаленную ЭВМ втечение некоторого интервала. По умолчанию, uucico использует показательную функцию схемы backoff , где интервал повтора увеличивается с каждым последующим отказом. Например, когда Вы определяете, что время повторения 5 минут, uucico откажется вызывать удаленную систему втечение 5-ти минут после последнего отказа. - 224 - Команда timegrade разрешает Вaм придать максимальную степень буферизации к плану. Допустим, что Вы имеете следующие команды timegrade во входе системы: Timegrade N Wk1900-0700, SaSu Timegrade C Any Это допускает задачи с приоритетом буферизации(spoolgrade) C и выше (обычно почта имеет степень B или C), они будут приняты всякий раз, когда обращение установлено, в то время как новости (обычно поставленный в очередь со степенью N) будут перемещены только ночью и в входные. Точно так же как команда time, команда timegrade берет интервал повторения в минутах как дополнительный третий параметр. Однако есть и недостатки высоких приоритетов буферизации: опция timegrade применяется только к тому, что ваша система посылают; удаленная система может все еще передать все, что угодно. Вы можете использовать опцию calltimegrade, чтобы явно запросить послать только работы выше некоторой данной степени буферизации ; но нет никакой гарантии, это удовлетворит условиям этого запроса. (8) Аналогично, timegrade поле не проверяется, когда удаленная система вызывает вашу, и любые работы, поставленные в очередь для системы вызова будут ей посланы. Однако, удаленная система может явно запрашивать ваш uucico, чтобы пграпичить себя некоторым приоритетом задач. 13.3.7 Описание устройств(Devices) - файл port Файл port сообщает uucico о доступных портах. Это могут быть порты модема, другие типы последовательных соединений и гнезда TCP. Подобно файлу sys, port состоит из отдельных кусков, начинающихся с ключевого слова port, сопровождаемым именем порта. Это имя может использоваться в описании порта в файле sys. Нет потребности в уникальности имени файла; если существуют порты с одним и тем же именем, uucico перепробует все по очереди, пока это не найдет тот, который в настоящее время не используется. Команда port должна обязательно сопровождаться именем типа, которое - 225 - задает какой порт описан. Допустимые типы - modem, direct для прямых соединений, и tcp для гнезд TCP. Если команда port отсутствует, по умолчанию тип порта - modem. В этом разделе, мы опишем лишь порты модема; порты TCP и прямые соединения будут обсуждаться далее. 8. Если удаленная система выполняет Talyor UUCP, это удовлетворит условиям. Для модема и прямого соединения, Вы должны определить устройство для вызова устройства напрямую. Обычно это имя специального файла устройства в каталоге /dev( подобно /dev/cua1). (9) В случае устройства модема, port также определяет, какой модем соединен с портом. Различные типы модемов должны быть конфигурированы по- разному. Четные модемы, что рекламация, чтобы быть Hayes совместимый не должна быть действительно совместима друг с другом. Следовательно, Вы должны сообщить uucico, как инициализировать Ваш модем и как соединяться с требуемым номером. Taylor UUCP хранит описания всех программ набора номера в файле dial. Чтобы использовать любую из них, Вы должны определить имя программы набора номера, используя команду dialer. Иногда Вам подребуется использовать модем различными способами( в зависимости систепы,которую Вы вызываете. Например, некоторые старые модемы не понимают, когда быстродействующий модем пытается соединяться на скорости 14400bps; они просто пропускают строку вместо того, чтобы вести переговоры на скорости в 9600bps. Если Вы знаете, что некоторые места используют такой "немой" модем, для вызова их Вы должны настраивать ваш модем иначе. Для этого Вам нужно добавить строку port ... в файл порт, которая определит другую программу набора номера. Теперь Вы можете задать новому порту другое имя, типа serial1-slow, и использовать директиву port в описании системы в файле sys. Лучший способ отличать порты состоит в том чтобы отличать порты по скоростям, которые они поддерживают. Например, два описания порта для вышеупомянутого могут выглядеть следующим образом: - 226 - #NakWell modem; connect at hight speed port serial1 # port name type modem #modem port device /dev/cua1 # this is COM2 speed 38400 #support speed dialer nakwel #normal dialer # NakWell modem; connect at low speed port serial1 # port name type modem # modem port device /dev/cua1 # this is COM2 speed 9600 # supported speed dialer nakwell-slow # don't attempt fast connect Tеперь запрос был бы на serial1 как имя порта, но использовать только 9600bps . Uucico сделает это автоматически 9. Некоторые люди используют ttyS * устройства , которые предназначены только для входа (dial-in). Используйте второй вход порта. Все остающиеся места, которые имеют быстродействие 38400bps , будут вызываться, используя первый кусок в port/ 13.3.8 Как набирать номер - файл dial Файл dial описывает способ, которым используются различные программы набора номера . Традиционно, переговоры UUCP программ набора номера быстрее чем модемы, потому что раньше было обычной практикой иметь одно (дорогое) автоматическое устройство набора, обслуживающее целый набор модемов. Сегодня большинство модемов имеют встроенную поддержку набора, так что это различие становится более размытым. Однако различные программы набора номера или модемы могут требовать различной настройки. Вы можете описать каждый из них в файле dial. Куски в файле dial начинаются с команды dialer, которая определяет имя программы - 227 - набора номера. Наиболее важная часть - дружеская беседа модема(modem chat), определяется командой chat. Подобно дружеской беседе входа в систему(login chat), она состоит из последовательности строк uucico, посылаемых программе набора номера и ответов, которые требуется получить. Они обычно используются, чтобы сбросить модем к известному состоянию, и набирать номер.Вот пример для Hayes-совместимого модема: # NakWell modem; connect at high speed dialer nakwell # dialer name chat "" ATZ OK\r ATH1E0Q0 OK\r ATDT\T CONNECT chat-fail BUSY chat-fail ERROR chat-fail NO\sCARRIER dtr-toggle true Дружеская беседа модема начинается с "", пустой ожидают строку. Cледовательно uucico пошлет команду (ATZ) сразу же. ATZ - команда Hayes для сброса модема. Затем uucico ждет, пока модем не послал OK, и посылает следующую команду, которая выключает локальный ECHO, и т.п.. После того, как модем возвращает OK снова, uucico посылает команду набора (ATDT). Escape-последовательность \T в этой строке заменяется на номер телефона, получаемый из файла sys. Uucico затем ждет, пока модем не возвратит COONECV, что говорит о том,что соединение с удаленным модемом было установлено успешно. Часто модем будет не в состоянии соединиться с удаленной системой, например, если другая система говорит с кем -то еще и линия занята. В этом случае, модем вернет сообщение об ошибке, указывающее на причину отказа. Дружеская беседа модема не способна обнаружить такие сообщения; uucico будет ждать требуемую строку пока не выйдет время ожидания. В файле регистрации UUCP(log file) будет записано "timed out in chat script" вместо истинной причины. Однако, Taylor UUCP позволяет Вам сообщить uucico об этих сообщениях, - 228 - используя chat-fail команду как показано выше. Когда uucico обнаруживает chat-file строку при выполнении дружеской беседы модема(modem chat), то прерывает обращение, и регистрирует сообщение об ошибках в файле регистрации UUCP(файле log). Последняя команда в примере, показанном выше говорит UUCP переключить DTR строку перед стартом дружеской беседы модема. Большинство модемов может быть сконфигурировано так , чтобы продолжить -ловушку при обнаружении изменений в DTR строке, и перейти в командный режим. (10) 13.3.9 UUCP поверх TCP В первый момент это может показаться абсурдом,но на самом деле UUCP поверх TCP не такая уж плохая идея, особенно при пересылке большого количества данных типа Usenet новостей. На TCP -базированных узлах, новостями в основном обмениваются, используя NNTP протокол, в котором статьи запрашиваются и посылаются индивидуально, без сжатия и прочей оптимизации. Хотя и подходящая для больших узлов с большим объемом новостей (newsfeeds), эта методика не подходит для небольших участков сети, которые получают новости медленным соединением типа ISDN. Им удобней объединить качества TCP с преимуществами посылки новостей в больших пакетах, которые могут быть сжаты и таким образом перемещаться с очень низкими затратами. Станжартпый способ передать эти пакеты состоит в том, чтобы использовать UUCP поверх TCP. В файле sys, Вы определяете систему, которую нужно вызвать через TCP. 10. Вы также можете сконфигурировать модемы на сброс при обнаружении перехода на DTR. Некоторые из них, однако, не понимают таких вещей и зависают. system gmu address news.groucho.edu time Any port tcp-conn chat ogin: vstout word: clouseau Команда address дает адрес IP главной ЭВМ, или ее полное имя - 229 - области(domain name). Соответствующий участок файла port выглядел бы: port tcp-conn type tcp service 540 Этот пример говорит, что соединение TCP должно использоваться, когда файл sys ссылается на tcp-conn, и что uucico должен пытаться соединяться с портом TCP Э 540 на удаленной ЭВМ. Это - заданный по умолчанию номер порта обслуживания UUCP. Вместо номера порта, Вы можете также давать символическое имя порта командой service . Номер порта, соответствующий этому имени будет разыскскан в /etc/services. Общее имя для UUCP-сервиса - uucpd. 13.3.10 Использование прямого соединения Допустим, что Вы используете прямое соединение вашей системы vstout с системой tiny.Как и в случае с модемом, Вы должны описать вход в систему в файле sys. Команда port идентифицирует последовательный порт tiny, подключен к. system tiny time Any port direct1 speed 38400 chat ogin: cathcart word: catch22 В файле port Вы должны описать последовательный порт для прямого соединения. Описание программы набора номера не необходимо, так как нет  никакой потребности в наборе. port direct1 type direct speed 38400 - 230 - 13.4 Что делать UUCP, а что нет - настройка доступа 13.4.1 Выполнение команд Задача UUCP состоит в том, чтобы копировать файлы от одной системы к другой, и запрашивать выполнение некоторых команд на удаленных главных ЭВМ. Конечно, Вы как администратор хотите управлять тем, какие права Вы предоставляете другим системам - разрешать им делать что угодно - определенно не очень хорошая идея. По умолчанию Taylor UUCP разрешает выполняьь на вашей машине лишь rmail и rnews, которые обычно используются для email и Usent новостей над UUCP. Заданный по умолчанию путь поиска, используемый uuxqt - опция времени компиляции, но обычно содержит /bin,/usr/bin, и /usr/local/bin. Чтобы изменять набор команд для определенной системы, Вы можете использовать ключевое слово commands в файле sys. Аналогично, путь поиска может быть изменен с утверждением пути команды. Например, Вы можете разрешить системе pablo выполнять команду rsmtp в дополнение к rmail и rnews: (11) system pablo commands rmail rnews rsmtp 13.4.2 Передача файлов Taylor UUCP также позволяет описывать передачу файлов в подробностях. Вы можете запретить любой обмен с определенной системой. Только установите request в no, и удаленная система не сможет ни искать, ни читать, ни посылать Ваешй никаких файлов. 11.rsmtp используется, чтобы поставить почте пакет SMTP. Это описывается в главах о почте. Аналогично, Вы можете запретить пользователям Вашей системы пересылку файлов 'в' или 'из' системы, установив transfer в no. По умолчанию любая пересылка им разаешается.  - 231 - " Кроме того, Вы можете конфигурировать каталоги 'в' и 'из' которых файлы могут быть скопированы. Обычно запрещают доступ с удаленных систем к определенным каталогам, но разрешают своим пользователям посылать файлы со своего исходного каталога. Обычно, удаленным пользователям разрешается получить файлы только от общего каталога UUCP, /var/spool/uucppublic. Это - традиционное место , в котором хранятся публично доступные файлы; очень похоже на FTP сервисы в Internet. На них обычно ссылаются используя символ тильды. Следовательно, Taylor UUCP обеспечивает четыре различных команды конфигурирования каталогов для посылки и получения файлов:local-send, который определяет список каталогов из которых пользователь может запросить файлы; local-receive, которая задает список каталогов, в которые пользователь может просить UUCP записать файлы ;remote-recive и remote- send, которые определяют то же самое для запросов в другую систему.Рассмотрим следующий пример: system pablo local-send /home ~ local-receive /home ~/receive remote-send ~ !~/incoming !~/receive remote-receive ~/incoming Команда local-send разрешает пользователям на вашей главной ЭВМ посылать любые файлы ниже /home и из от общего каталога UUCP в систему pablo. Команда local-receive разрешает им получать файлы или в общедеступный каталог в uucppublic, или в любой общедоступный каталоге ниже /home. Команда remote-send разрешает pablo запрашивать файлы из /var/spool/uucppublic или из любого общедоступного его подкаталога . Это сообщается к uucico восклицательным знаком,поставленным перед именем каталога. В заключение, последняя строка разрешает pablo записать любые файлы в каталог incoming. Одна из самых больших проблем при передаче файлов используя UUCP - это то, что файлы записываются в обшедоступные каталоги. Это может соблазнить нзкоторых пользователей вмешаться в личные дела других пользователей, и т.д.. Однако нет никакого способа решения этой проблемы, кроме отключения передач файлов UUCP вообще. - 232 - 13.4.3 Пересылка UUCP обеспечивает механизм, благодаря которому другие системы могут выполнять передачу файлов от Вашего имени. Например, это разрешает, чтобы Вы делали seciretrieve файл из uchile для Вас, и послали это вашей системе. Следующая команда достигнула бы этого: $ Uucp -r seci! Uchile! ~/find-ls.gz ~/uchile.files.gz Эта методика прохождения работы через несколько систем называется пересылкой. В вышеупомянутом примере причиной для использования пересылки могло быть то, что seci имеет UUCP- доступ к uchile, а ваша главная ЭВМ нет. Однако, если Вы используете систему UUCP, ограничте обслуживание пересылки для некоторых ЭВМ,которым Вы доверяете, чтобы не ужасаться телефонному счету, если кто-нибудь решит скачать себе через вас исходные тексты последего выпуска X11R6. По умолчанию, Taylor UUCP запрещает пересылку вооще. Чтобы давть возможность пересылки определенной системе, Вы можете использовать команду forward. Эта команда определяет список систем, которые могут воспользоваться пересылкой через вас. Например, администратор UUCP seci должен был добавить следующие строки к файлу sys, чтобы разрешить pablo запрос файлов из uchile: #################### # pablo system pablo forward uchile #################### # uchile system uchile forward-to pablo - 233 - Строка forward-to для uchile необходима , чтобы любые полученные файлы фактически передались pablo. Иначе UUCP пропустил бы их. Этот пример разрешает uchile только посылать файлы pabno чзрез seci; иной другой путь не допустим. Чтобы разрешить пересылку к любой системе, используйте специальное ключевое слово ANY (обязательно заглавные буквы). 13.5 Настройка вашей Системы. Если Вы хотите настроить вашу систему для вызова извне, Вы должны разрешить вход в систему по последовательному порту, и настроить некоторые системные файлы, чтобы обеспечить счета UUCP(accounts). Это будет обсуждаться в следующем разделе. 13.5.1 Установка getty Если Вы хотите использовать последовательную линию, как dialin порт, Вы должны запустить процесс getty на этот порт. Однако, некоторые реализации getty не очень подходят для этого, так как Вы обычно хотите использовать последовательный порт для соединения 'в' и 'из'.Следовательно, вы должны удостовериться, чтобы использовать getty, который может использовать линию вместе с другими программами (типа uucico, или minicom). Одна из таких программ - это uugetty из getty ps пакета. Большинство дистрибутивов Linux-a имеет его; проверите наличие uugetty в каталоге /sbin. Другая программа, которую я знаю - mgetty (нап. Gert Doering-м), которая также поддерживает прием факсов. Вы можете найти последние версии этих программ на sunsite.unc.edu (там же есть и исходные тексты). Объяснение различий в способе входа в систему между uugetty и mgetty - вне компетенции этого небольшого раздела; для подробной информации обращайтесь пожалуйста к Serial HOWTO (Grag Hankins),а также кдокументации, которая сопровождает getty ps и mgetty. 13.5.2 Обеспечение UUCP Счета(account) Затем, Вы должны установить счета пользователя, которые разрешают удаленной системе регистрацию в вашей системе и устанавливают соединение UUCP. Вообще, необходимо дать отдельное имя каждой системе, которая - 234 - взаимодействует с Вами. При установке имени для системы pablo, Вы (например) можете дать ей имя Upablo, как имя пользовауеля. Для систем, которые подключаются через последовательный порт, Вы должны добавить эти имена в файл паролей системы, /etc/passwd. Хорошим вкусом считается поместить все имена UUCP в специальную группу типа uuguest. Домашний каталог счета должен находиться в общем каталоге /var/spool/uucppublic; оболочка входа в систему - uucico. Если Вы имеете теневой установленный набор программ пароля, Вы можете делать это с командой useradd: # Useradd -d /var/spool/uucppublic -G uuguest -s /usr/lib/uucp/uucico uablo Если Вы не используете теневой набор программ пароля, Вам нужно отредактировать /etc/passwd вручную и добавить строку, анологичную показанной ниже, где 5000 и 150 - числовой uid и gid, назначенные пользователю Upablo и группе uuguest, соответственно. Upablo: x: 5000:150: UUCP Account:/var/spool/uucppublic:/usr/lib/ uucp/uucico После установки счета, Вы должны активизировать его, установив пароль командой passwd. Чтобы позволить UUCP соединяться с вами поверх TCP, Вы должны установить inetd, чтобы обработать подключения на порте uucp. Это можно сделать, добавив следующую строку в /etc/inetd.conf: (12) uucp stream tcp nowait root /usr/sbin/tcpd /usr/lib/uucp/uucico -l С опцией -l uucico выполняет собственную проверку на вход в систему.Она запросит имя и пароль также, как и стандартная программа login, но положится на собственный файл паролей вместо /etc/passwd. Этот файл - 235 - паролей называется /usr/lib/uucp/passwd и содержит пары имен входа в систему и паролей: Upablo IslaNegra Ulorca co'rdoba 12. Обратите внимание, что обычно tcpd имеет режим 700, так что Вы вызвали это как корень пользователя, не uucp, поскольку Вы обычно делали бы. Конечнп, этот файл должен принадлежать uucp и иметь доступ 600. Если эта база данных звучит подобно такой хорошей идеи, Вы хотели бы использовать на нормальных последовательных входах в систему, также, Вы будете разочарованы, чтобы слышать, что это не возможно в настоящее время без главных искривлений. Сначала от, Вы нуждаетесь в Taylor UUCP 1.05 в этом, потому что это разрешает, чтобы getty передал имя входа в систему пользователя вызова к uucico использование опции -u. (13) Затем, Вы должны прием getty, который Вы используете в вызов uucico вместо обычного /bin/login. С getty ps, Вы можете делать это, устанавливая опцию LOGIN в файле конфигурации. Однако, это отключает интерактивные входы в систему в целом(вполне). Mgetty, с другой стороны, имеет хорошую возможность, которая разрешает, чтобы Вы вызвали различные команды входа в систему, основанные на имени обеспеченный пользователь. Например, Вы можете сообщать, чтобы mgetty использовал uucico для всех пользователей, которые обеспечивают имя входа в систему, начинающееся прописной буквой U, но допускают каждого еще обработано стандартной командой входа в систему. Защищайте ваших пользователей UUCP от вызывающих операторов, дающих ложную систему и snarfing всю их почту, Вы должны добавить команды вызываемого - входа в систему к каждому входу системы в системном файле. Это описано в разделе 13.5.3 выше. 13.5.3 Защита против Жуликов Одна из самых больших проблем UUCP - то, что система вызова может назвать не свое имя; она объявляет имя вызываемой системе после фактического входа, но сервер не может проверить этого. Таким образом, - 236 - нападающий может войти под своим именем UUCP, симулировать, что был кем -то еще, и прочитатьчужую почту. Это особенно опасно, если Вы предлагаете вход в систему через анонимный UUCP,чей пароль общеизвестен. Если Вы не уверены, что Вы можете доверять всем системам, которые вызывают вашу, Вы должны принять меры против самозванцев/Для"этого необходимо потребовать, чтобы каждая система использовала имя входа в систему, заданное called-login в sys.Например: system pablo called-login Upablo 13. Опция -u присутствует в версии 1.04 также, но ничего не делает. В результате этого всякий раз, когда система говорит, что она - pablo, uucico проверит, регистрировалась ли она как Upablo. Если же нет, вызов будет отвергнут, а соединение разорвано. Вы должны делать это привычка добавить команду вызываемого - входа в систему к каждому входу системы, который Вы добавляете к вашему системному файлу. Важно, что Вы делаете это для всего sytems, независимо от того, ли они будут когда-либо вызывать ваше место или нет. Для тех мест, которые никогда не вызывают Вас, Вы должны возможно установить вызываемый - вход в систему к некоторым полностью поддельное имя пользователя, типа neverlogsin. 13.5.4 Будте бдителны - проверки последовательности обращения Другой способ отражать и обнаружить самозванцев состоит в том, чтобы использовать проверки последовательности обращения. Вызовите проверки последовательности, помогают Вам защитить против "злоумышленников ", которые так или иначе сумели выяснять пароль, с которым Вы регистрируете в вашу систему UUCP. При использовании проверок последовательности обращения, обе машины следят за числом соединений, уже установленных . Оно увеличивается с каждым соединением. После регистрации, вызывающий посылает порядковый - 237 - номер обращения, а вызываемый сверяет его со своим. Если они не соответствуют, попытка соединения будет отклонена. Если начальный номер выбирать произвольно, нападавшим будет нелегко угадать правильный порядковый номер обращения. Но проверки последовательности обращения делают для Вас еще больше: даже если некоторыq очень умный человек обнарузит ваш порядковый номер обращения также как ваш пароль, Вы pfvtnbnt это извне. Когда нападавший вызывает вашу подачу UUCP, и захватывает вашу почту, это увеличит порядковый номер обращения корма на один. В следующий раз Вы вызываете вашу подачу и пробуете регистрировать в, удаленный uucico откажется от Вас, потому что числа не соответствуют(согласовывают) anymore! Если Вы допустили проверки последовательности обращения, Вы должны регулярно проверять ваши регистрационные файлы на сообщения об ошибках, которые намекают на возможные причины. Если ваша система отклоняет порядковый номер обращения, система вызова предлагает, это, uucico поместит сообщение в регистрационный файл, говорящий что - нибудь вроде " Вне обращения последовательности, отклонил ''. Если ваша система не допущуна, потому что порядковые номера находятся вне синхронизации, в регистрационном файле будет примерно следующее " рукопожатие потерпело неудачу (RBADSEQ) ''. Чтобы включить проверку последовательности обращения, Вы должны добавить следующую команду к входу системы: # enable call sequence checks sequence true Еще Вы должны создать файл, содержащий порядковый номер. Taylor UUCP хранит порядковый номер в файле, называемом ".Sequence" в каталоге spool удаленной системы. Он должен принадлежать uucp, и иметь режим 600 (то есть чтение и запись разрешены только uucp). Самое лучшее инициализировать этот файл произвольным, согласованным начальным значением. Иначе нападающий может подобрать номер, пробуя все значения меньше, скажем, 60. # cd /var/spool/uucp/pablo # echo 94316 > .Sequence # chmod 600 .Sequence # chown uucp.uucp .Sequence - 238 - Конечно, удаленная система должна дать возможность проверкам последовательности обращения также, и использовать то же самое начальное значение, что и Вы. 13.5.5 Анонимный UUCP " Зсли Вы хотите обеспечивать анонимный UUCP- доступ к вашей системе, Вы сначала должны саздать специальное имя для него(см. выше). Общей практикой является дать ему имя входа в систему и пароль uucp. Кроме того, Вы должны установить несколько опций защиты для неизвестных систем. Например, Вы можете запретить им из выполнения любых команд на вашей системе. Однако, Вы не можете задать эти параметры в файле sys, потому что команда требует имени системы, которое Вы не знаете. Taylor UUCP решает эту проблему через команду unknown.Команда unknown может использоваться в файле конфигурации, чтобы определить любую команду, которая может обычно появляться во входе системы: unknown remote-receive ~/incoming unknown remote-send ~/pub unknown max-remote-debug none unknown command-path /usr/lib/uucp/anon-bin unknown commands rmail Это ограничит неизвестные системы разгрузкой файлов из подкаталогов pub и загрузкой файлов в каталоги ниже /var/spool/uucppublic. Следующая строка говорит uucico игнорировать любые запросы из удаленной системы, чтобы включить отладку локально. Последние две строки разрешают неизвестным системам выполнять rmail; но путь команды разрешает uucico искать команду rmail в частном каталоге, с именем anon-bin. Это позволяет Вам обеспечить некоторый специальный rmail, что, например, может передавать всю почту супер-пользователю для исследования. Это разрешает, чтобы анонимные пользователи достигли maintainer системы, но предотвращает в то же самое время отправление любой почты в другие места. Чтобы дать возможность анонимному UUCP, Вы должны определить по крайней мере одно неизвестное утверждение в конфигурации. Иначе uucico отклонит неизвестные системы. - 239 - 13.6 UUCP Протоколы низкого уровня Чтобы осуществлять контроль за приемом и передачей файлов, uucico кспользует набор стандартизированных сообщений. Этот набор иначе называется протоколом верхнего уровня. В течение фазы инициализации и фазы зависания они просто посланы поперек как строки. Однако, в течение реальной фазы передачи, дополнительный протокол низкого уровня использован, который является обычно ясным для более высоких(высших) уровней. Это должно делать проверки ошибки, возможные при использовании ненадежных линий, например. 13.6.1 Краткий обзор протоколов Поскольку UUCP используется поверх различных типов соединений, типа последовательных строк, TCP, или даже X. 25, специфические протоколы низкого уровня необходимы. Кроме того, отдельные реализации UUCP представили различные протоколы, которые делают приблизительно ту же самую вещь(дело). Протоколы могут быть разделены на две категории: потоковые и пакетные протоколы. Первые передают файл в целиком, возможно вычисляя при этом контрольную сумму . Нет непроизводственных затрат, но требуется надежное соединение,так как любая ошибка потребует повторной передачи файла. Эти протоколы обычно используются над соединениями TCP, но не подходят для использования над телефонными линиями. Хотя современные модемы хорошо исправляют ошибки, нельзя обнаружить ошибку между вашим компьютером и модемом. С другой стороны, пакетные протоколы разбивают файл на отдельные куски равного размера. Каждый пакет посылается и получается отдельно, контрольная сумма вычисляется, и квитирование возвращено датчику. Чтобы делать это более эффективный, протоколы подвижного окна было изобретено, которые учитывают ограниченный номер (окно) ожидающого обработки acknoledgements в любое время. Это значительно уменьшает время ожидания uucico в течение передачи. Несмотря на это, относительно большие непроизводительные затраты( по сравнению с потоковым протоколом), делают пакетный протокол неэффективным для использования поверч TCR. Ширина пути данных также дает различие. Иногда посылка восьмибитовых символов над последовательным соединением невозможна, например, если - 240 - соединение прсматривает глупый сервер терминала. В этом случае, символы с восьмым набором битов должны цитироваться на передаче. Когда Вы передаете восьмибитовые символы над соединением с семью линиями, они должны быть Согласно предположениям с самым плохим случаем, это удваивает количество данных, которые будут переданы, хотя сжатие, выполненное аппаратными средствами может компенсировать этот. Строки, которые могут передавать произвольные восьмибитовые символы, обычно называются восьмибитовыми чистыми. Дело обстоит так для всех соединений TCP, также как для большинства соединений модема. Следующие протоколы доступны с Taylor UUCP 1.04: g - наиболее общий протокол и может быть понятым виртуально всеми uucico's.Он делает полную проверку ошибок и следовательно хорошо подходит для плохих телефонных линий. g требует восьмибитового чистого соединения.Это - пакет-ориентированный протокол, который использует методику подвижного окна. i - является двунаправленным пакетным протоколом, который может посылать и получать файлы одновременно. Требуется дуплексное соединение и восьмибитовый путь данных.Он в настоящее время распознается только Taylor UUCP. t - протокол, предназначенный для использования над соединением TCP, или другими, свободными от ошибок. Использует пакеты в 1024 байтов и требует восьмибитового чистого соединения. e - аналог t, но только потоковый. f - предназначен для использования с надежным X. 25 соединением. Это потоковый протокол, желателен семибитовый путь данных. Восьмибитовые символы цитируются, что может сделать передачу неэффективной. G - реализация g-протокола в System V Relgase"4. Также распознается и некоторыми другими версиями UUCP. - 241 - а - протокол similiar к ZMODEM. Требуется восьми разрядное соединение, цитируются некоторые управляющие символы подобно XON и XOFF. 13.6.2 Настройка Протокола Передачи Все протоколы учитывают некоторое изменение в размерах пакета, блокировках по времени, и т.п.. Обычно значения по умолчанию, обеспечивающие работу при стандартных обстоятельствах, не оптимальны для вашей системы. Протокол g, например, использует размеры окна от 1 до 7, и размеры пакета в степенях 2 в пределах от 64 до 4096. (14), если ваша телефонная линия обычно настолько шумная, что теряется более 5% всех пакетов, Вы должны уменьшить размер пакета и сократить окно. С другой стороны, на очень хороших телефонных линиях непроизводительные затраты протокола при посылке запроса черз каждые 128 байт могут оказзаться расточительными, так что Вы можете увеличивать размер пакета до 512 или даже 1024. Taylor UUCP обеспечивает механизм настройки этих параметров командой protocol-parameter в файле sys. Например, чтобы установить пакет протокола g в 512 байт при обмене с pablo: system pablo protocol-parameter g packet-size 512 14. Большинство binaries включенных в дистрибутивы Linux устанавливают по умолчанию размер окна 7 ,размер пакета 128 байт . Настраиваемые параметры и их названия изменяются от протокола к протокола. Для полного списка см. документацию,поставляемую с Taylor UUCP. 13.6.3 Выбор Специфических Протоколов Не каждая реализация uucico понимает каждый протокол, так что в течение начальной фазы рукопожатия, оба процесса должны договориться об общем протоколе.Главный uucico предлагает подчиненому список обеспечиваемых - 242 - протоколов, посылая Pprotlist, из#которого подчиненный может выбирать. Основываясь на типе используемого порта (модем, TCP, или прямой), uucico составит заданный по умолчанию список из протоколов. Для модема и прямых соединений, этот список обычно включает i, a, g, G, j и f. Для соединений TCP, список - t, e, я, a, перегрузка, G, j, и f. Вы можете изменить этот заданный по умолчанию список командой protocols, которая может быть определена во входе системы также как входе порта. Например, Вы могли бы записать в файл port примерно следующее: port serial1 protocols igG Это требует любого входящего или исходящего соединения через этот порт, чтобы использовать i,g, или G., если удаленная система не поддерживает никакой из них, диалог потерпит неудачу. 13.7 Поиск неисправностей Этот раздел описывает возможные неисправности в вашем соединении UUCP, и дает возможные пути их исправления. Однако мы были просто не в состоянии охватить все возможные варианты. В любом случае, включите отладку опцией -xall, и смотрите на вывод в файле Debug в каталоге spool. Это поможет Вам быстро распознть, где происходит сбой. Также, я всегда находил полезным включать динамик модема, когда соединение не удавалось. С Hayes-совместимыми модемами это можно сделать, добавив " ATL1M1 OK " к дружеской беседе модема в файле dial. Первым делом стоит проверить все ли права доступа к файлам установлены правильно. Uucico должен принадлежать uucp, и все файлы в /usr/lib/uucp, /var/spool/uucp и /var/spool/uucppublic должены принадлежать uucp. Имеются также некоторые скрытые файлы (15) в каталоге spool, которые также должны принадлежать uucp. Uucico может сказать "Wrong time to call "(" Неправильное время - 243 - вызова "). Это может значить,что в файле sys , Вы не определили команду time, которая определяет, когда удаленная системв может вызываться, или фактически запретили заход в текущее время. Если время обращения не задано, uucico принимает, что система никогда не может вызываться. Uucico жалуется, что система уже блокирована. Это означает ,что uucico обнаружил файл блокировки для удаленной системы в /var/spool/uucp. Файл блокировки может остаться старого обращения к системе, если ее работа была прервана некорректно. Однако также правдоподобно, что естьдругой процесс uucico, который пробует набрать удаленную систему и застревает в сценарие дружеской беседы, и т.д.. Если этот процесс uucico не преуспел в соединение с удаленной системой, уничтожте его, и удалите все файлы блокировки, которые он оставил. Я могу соединиться с удаленной системой, но происходит сбой сценария дружеской беседы: Рассмотрите текст, который Вы получаете от удаленного места. Если он искажен, это может быть связано с быстродействием. Иначе, подтвердите, соглашается ли это действительно, тем, что ваш сценарий дружеской беседы ожидает. Помните, что сценарий дружеской беседы начинается с ожидающейся строкой. Если Вы получаете подсказку входа в систему, затем посылаете имя, но не получаете подсказку пароля, вставьте некоторые задержки перед посылкой этому, или четному промежутку символы. Вы можете быть слишком быстры для вашего модема. Мой модем не соединяется: Если ваш модем не указывает, что DTR линия была установлена, когда uucico вызывает,возможно Вы задали неправильное устройство uucico. Если ваш модем распознает DTR, сверьтесь с a 15. То есть файлы, чьи имя начинает с точки. Такие файлы обычно не отображаются командой ls. Программа терминала, которую Вы можете записывать к этому. Если это работает, включите отображение на экране к \E в начале дружеской беседы модема. Если это не делает ECHO ваши команды в течение дружеской беседы модема, проверьте, является ли ваше быстродействие строки слишком высоко или низпо для вашего модема. Если Вы видите ECHO, проверьте, отключили ли Вы ответы модема, или устанавливаете их к кодам числа. Проверите, что сценарий дружеской беседы непосредственно правилен. Не забудьте, что Вы должны записать две наклонных черты влево, чтобы послать тот модему. Мой модем пробует соединятся, но не может: Вставьте задержку в номер - 244 - телефона. Это особенно полезно когда набор идет из внутренней телефонной сети компании. Если вы обычно пользуетесь импульсным набором,попробуйте тоновый. В некоторых странах мощности телефонных сетей нарастили недавно и тоновый набор иногда помогает. log файл говорит, что я имею чрезвычайно высокие потери передачи: Это похоже на проблему быстродействия. Возможно связь между компьютером и модемом также медленна (установите ее для самой высокой эффективной скорости)? Или это ваши аппаратные средства, которые являются также медленно к сервисным прерываниям вовремя? С NSC 16550A chipset на вашем последовательном порте, 38kbps работает хорошо; однако, без FIFOs (подобных 16450 чипам), 9600 бит\сек - верхний предел скорости. Также Вы должны удостовериться, что аппаратное рукопожатие допускается на последовательной линии. Другая вероятная причина - аппаратное рукопожатие не допускается на порте. Taylor UUCP 1.04 не имеет никаких средств для включения RTS/CTS рукопожатия. Вы должны сделать это явно из rc.serial использование следующей команды: $ Stty crtscts < /dev/cua3 Я регистрируюсь в, но происходит сбой рукопожатия: Хорошо, может иметься ряд проблем. Вывод в регистрационном файле должен сообщить Вам множество. Рассмотрите то, каким протоколам удаленные предложения места (Это посылает строку Pprotlist в течение рукопожатия). Возможно они не имеют любого в общем (Вы выбираете любые протоколы в системном или порт?). Если удаленная система посылает RLCK, имеется просроченный lockfile для Вас на удаленной системе. Если вы уже не соединены с удаленной системой на жругой линии попросите удалить его. Если она посылает RBADSEQ, другое место имеет проверки счета диалога, допускаемые для Вас, но числа не соответствовали. Если это посылает RLOGIN, Вас не разрешали к входу в систему под этим идентификатором. 13.8 Регистрационные Файлы При компилировании набора программ UUCP на использование регистрации taylor-стиля, Вы имеете только три глобальных регистрационных файла,которые - 245 - находятся в каталоге spool. Основной регистрационный файл называется Log и содержит всю информацию относительно установленных соединений и перемещенных файлов. Типичный Log-файл выглядит примерно так uucico pablo - (1994-05-28 17:15:01.66 539) Calling system pablo (port cua3) uucico pablo - (1994-05-28 17:15:39.25 539) Login successful uucico pablo - (1994-05-28 17:15:39.90 539) Handshake successful protocol 'g' packet size 1024 window 7) uucico pablo postmaster (1994-05-28 17:15:43.65 539) Receiving D.pabloB04aj ucico pablo postmaster (1994-05-28 17:15:46.51 539) Receiving X.pabloX04ai uucico pablo postmaster (1994-05-28 17:15:48.91 539) Receiving D.pabloB04at uucico pablo postmaster (1994-05-28 17:15:51.52 539) Receiving X.pabloX04as uucico pablo postmaster (1994-05-28 17:15:54.01 539) Receiving D.pabloB04c2 uucico pablo postmaster (1994-05-28 17:15:57.17 539) Receiving X.pabloX04c1 uucico pablo - (1994-05-28 17:15:59.05 539) Protocol 'g' packets: sent 15, resent 0, received 32 uucico pablo - (1994-05-28 17:16:02.50 539) Call complete (26 seconds) uuxqt pablo postmaster (1994-05-28 17:16:11.41 546) Executing X.pabloX04ai (rmail okir) uuxqt pablo postmaster (1994-05-28 17:16:13.30 546) Executing X.pabloX04as (rmail okir) uuxqt pablo postmaster (1994-05-28 17:16:13.51 546) Executing X.pabloX04c1 (rmail okir) Следуящий"важный регистрационный файл - Stats, который содержит статистику передачи файлов. Раздел Stats соответствующий вышеупомянутой - 246 - передаче походит на это: postmaster pablo (1994-05-28 17:15:44.78) received 1714 bytes in 1.802 seconds (951 bytes/sec) postmaster pablo (1994-05-28 17:15:46.66) received 57 bytes in 0.634 seconds (89 bytes/sec) postmaster pablo (1994-05-28 17:15:49.91) received 1898 bytes in 1.599 seconds (1186 bytes/sec) postmaster pablo (1994-05-28 17:15:51.67) received 65 bytes in 0.555 seconds (117 bytes/sec) postmaster pablo (1994-05-28 17:15:55.71) received 3217 bytes in 2.254 seconds (1427 bytes/sec) postmaster pablo (1994-05-28 17:15:57.31) received 65 bytes in 0.590 seconds (110 bytes/sec) Третий файл - Debug. В нем содержится отладочная информация. Если Вы используете отладку, Вы должны удостовериться, что этот файл имеет режим защиты 600. В зависимости от режима отладки, который Вы выбрали, он может содержать имя входа в систему и пароль, который Вы используете для соединения с удаленной системой. Некоторые UUCP binaries включенные в дистрибутивы Linux-а компилировались, чтобы использовать регистрацию HDB-стиля. HDB UUCP использует целую связку регистрационных файлов, сохраненных в /var/spool/uucp/.Log. Этот каталог содержит еще три каталога, которые называются uucico, uuxqt, и uux. Они содержат вывод, сгенерированный каждой из соответствующих команд, сортируемый в различные файлы для каждой системы. Таким образом, вывод uucico при вызове системы pablo пойдет в .Log/uucico/pablo, в то время как uuxqt запишет в .Log/uuxqt/pablo. Строки, записанные в различный lofiles - такие же как и при регистрации Taylor. Когда Вы включаете отладку с HDB-стилем, вывод пойдет в .Admin в /var/spool/uucp. При соединении из вашей системы, информация об отладке будет послана в Admin/audit.locan, в то время как вывод uucico при вызове извне будет идти к .Admin/audit. - 247 - 14. Электронная почта Одно из наиболее видных использований сетей начиная с первых сетей - это электронная почта. Она начиналась как простое обслуживание, типа копирования файла одной машины для другой, и конкатенирования его к mailbox файлу получателя. В основном email этим и занимаеся, хотя возрастастающая сеть с комплексом требований и увеличением загрузки сообщений сделала необходимой более сложную схему. Были изобретены различные стандарты обмена почты. Много усилий было приложено для создания " мульти-медийной почты '', которая включает изображения и звук в сообщения почты. Очень большое количество программ транспортировки почты было выполнено для системы Un*x. Одна из лучше всего известных - sendmail Университета Berkeley. Первоначальный автор Eric Allman теперь активно работает над sendmail снова. Имеются два Linux порта доступных для sendmail-5.56c, один из которых будет описан в главе 16 .., в настоящее время разрабатываемая версия sendmail - 8.6.5. Почтовый агент, наиболее используемый с Linux - smail-3.1.28, который написан и обеспечен авторским правом Curt Landon Noll и Ronald S. Karr. Он включен в большинство поставок Linux. В последующем, мы будем обращаться к нему просто как smail, хотя имеются другие версии, которые полностью отличны, и которые мы не описываем здесь. Сравнивая с sendmail, smail довольно молод. При обработке почты без сложных требований маршрутизации, их возможности - довольно близки. Для больших требований, однако, sendmail всегда побеждает, потому что его схема конфигурации намного более гибка. И smail и sendmail поддерживают набор файлов конфигурации, которые должны быть настроены. Кроме информации, которая - 248 - требуется для запуска подсистемы почты (типа локального hostname), имеется намного больше параметров, которые могут быть настроены. Файл конфигурации sendmail сначала очень трудно понять Выглядит, как будто ваша кошка ходила по вашей клавиатуре с нажатой клавишей SHIFT. Smail файлы конфигурации более структурны и проще для понимания чем sendmail, но не дают пользователю так много свободы в настройке поведения mailer'ов. Однако, для малого UUCP или Internet работа, требуемая для установки любого из них - приблизительно та же самая. В этой главе, мы будем иметь дело тем, чем email является и с какими проблемами Вы, как администратор будете должны иметь дело. Главы 15. и 16. дадут инструкции по установке smail и sendmail впервые. К концу текущей главы мы кратко опишем установку пользователя почты на многих Unix-подобных системах, включая Linux. Для получения более подробной информации относительно электронной почты на Linux, пожалуйста обратитесь в Electronic Mail HOWTO Vince Skahan, который зарегистрирован comp.os.linux.announce регулярно. 14.1 Что такое - Сообщения Почты? Сообщение Почты вообще состоит из тела сообщения, которое является текстом, написанным отправителем, и специальных данных, определяющих получателей, транспортную среду, и т.д., подобно тому, что Вы видите когда Вы рассматриваете почтовый конверт. Эта административно-управленческая информация относится к двум категориям; в первом классе - любые данные, который является специфическими для транспортной среды, подобно адресу отправителя и получателя. Это следовательно называется конвертом или оболочкой. Это может быть преобразовано транспортным программным обеспечением, при передаче сообщения. Вторая - любые данные, необходимые для обработки сообщения почты, которые - не часть любого транспортного механизма, типа подчиненной строки сообщения, списка всех получателей, и даты. В многих сетях, стало стандартным добавлять эти данные к сообщению - 249 - почты, формируя так называемый заголовок почты. Это отделено от тела почты пустой строкой. (1) 1. Обычно добавляются сигнатура или .sig к сообщению почты, обычно содержащая информацию относительно автора, наряду с шуткой или девизом. Она отделяется от сообщения почты строкой, содержащей "--". Большинство программного обеспечения для транспорта почты в мире Unix использует формат заголовка, выделенный в RFC 822. Его первоначальная цель - определить стандарт для использования на ARPANET. RFC 822 однако - только самый общий. Более современные стандарты были задуманы, чтобы справиться с возрастанием потребностей как, например, шифрование данных, поддержка набора интернационального символа, и мульти-средств расширения почты (MIME). Всего эти стандарты, заголовка состоят из отдельных строк, отделяемых символами перевода строки. Типичный заголовок почты может выглядеть следующим образом: From brewhq.swb.de!ora.com!andyo Wed Apr 13 00:17:03 1994 Return-Path: Received: from brewhq.swb.de by monad.swb.de with uucp (Smail3.1.28.1 #6) id m0pqqlT-00023aB; Wed, 13 Apr 94 00:17 MET DST Received: from ora.com (ruby.ora.com) by brewhq.swb.de with smtp (Smail3.1.28.1 #28.6) id ; Tue, 12 Apr 94 21:47 MEST Received: by ruby.ora.com (8.6.8/8.6.4) id RAA26438; Tue, 12 Apr 94 15:56 - 0400 Date: Tue, 12 Apr 1994 15:56:49 -0400 Message-Id: <199404121956.PAA07787@ruby> From: andyo@ora.com (Andy Oram) To: okir@monad.swb.de Subject: Re: Your RPC section Обычно, все необходимые поля заголовка генерируются Вашим mailer`ом, например elm (электронная почта), pine, mush, или mailx. Некоторые однако необязательны, и могут быть добавлены пользователем. Электронная почта, например, позволяет Вам редактировать часть заголовка сообщения. From: Это содержит адрес email отправителя, и возможно "реальное - 250 - имя''. To: Это - адрес email получателя. Subject: Описывает содержание почты в нескольких словах. По крайней мере должен. Date: Дата посылки почты. Reply-To: Определяет адрес для ответа получателя. Это может быть полезно, если Вы имеете несколько адресов, но хотите получать большую часть почты только на том, который Вы используете наиболее часто. Это поле необязательно. Oranization: организация, которая обладает машиной из который почта исходит. Это поле необязательно. Message-ID: строка, сгенерированная транспортировщиком почты. Она уникальна для этого сообщения. Received: Каждый пункт, через который проходит ваша почта (включая машины отправителя и получателя) вставляет такое поле в заголовок, указывая имя пункта, идентичность сообщения, время и дату получения сообщения, из какого пункта оно происходит, и которое транспортное программное обеспечение использовалось. Это сделано чтобы Вы могли проследить путь сообщения сообщения. X-заголовок: mail-программы не должны жаловаться на заголовки, которые начинаются с X-. Они используются, чтобы воплотить дополнительные возможности, которые еще не реализованы в RFC. Одно исключение к этой структуре - сама первая строка. Она начинается с ключевого слова From, которое сопровождается пробелом вместо двоеточия. Она содержит маршрут, время и дату, когда оно было получено последней машиной, обрабатывавшей его, и необязательную часть, определяющую, от которой главной ЭВМ оно было получено. Поле From предусмотрено для совместимости с несколько более старым mailer'ами, и не используется особенно часто, за исключением интерфейсами пользователя почты. - 251 - 14.2 Как Передается Почта? Вообще, Вы устанавлиаете почту, используя интерфейс подобный mailx; или более сложный подобно elm, mush, или pine. Эти программы называются средствами пользователя почты, или MUA для краткости. Если Вы посылаете сообщение почты, программа интерфейса будет в большинстве случаев вручать его другой программе, которая называется средством транспорта почты, или MTA. На некоторых системах, имеются различные средства транспорта почты для локальной и отдаленной почты, на других, имеется только одно. Команда для отдаленной обычно называется rmail, для другой - lmail (если она существует). Локальное получение почты, конечно, больше чем конкатенация входящего сообщения к mailxbox получателя. Обычно, локальный MTA поймет совмещение имен (установка локальных адресов получателя, указывающих на другие адреса), и пересылку (переназначение почты пользователя к некоторому другому адресату). Также, сообщения, которые не могут быть переданы, должны обычно быть bounced, то есть возвращенны отправителю наряду с некоторым сообщением ошибки. Для отдаленного получения, используемое программное обеспечение зависит от характера связи. Если почта должна быть передана по сети, используя TCP/IP, обычно используется SMTP. SMTP замещает Простой Протокол передачи Почты, и определен в RFC 788 и 821 RFC. SMTP обычно соединяется с машиной получателя непосредственно. В UUCP сетях, почта непосредственно не будет обычно передана, но будет послана на главную ЭВМ адресата рядом систем промежуточного звена. Чтобы посылать сообщение по UUCP, MTA будет обычно выполнять rmail на системе пересылки, используя uux, и подавать это сообщение на стандартном вводе. Так как это выполняется для каждого сообщения отдельно, это может производить значительную загрузку главного узлового хаба почты, также как сотни малых файлов, занимающих непропорциональное количество дискового пространства. (2) Некоторые MTA следовательно позволяют Вам собирать отдельные сообщения для отдаленной системы в одиночном командном файле. Командный файл содержит команды SMTP, которые локальная главная ЭВМ обычно выдала бы, если бы использовалось прямое SMTP - 252 - соединение. Это называется BSMTP, или пакетировка SMTP. Пакет передается программе rsmtp или bsmtp на отдаленной системе, которая будет проиведет ввод, как будто произошло нормальное SMTP соединение. 14.3 Email Адреса Для электронной почты, адрес состоит из по крайней мере имени машины, обрабатывающей почту определенного человека, и идентификацию пользователя, распознаваемую этой системой. Это может быть имя входа в систему получателя, но может также быть что - нибудь еще. Другая почтовая адресующая схема, подобно X.400, использует более общий набор " атрибутов " которые используются, чтобы искать главную ЭВМ получателя в X.500. Способ интерпретации машинного имени зависит от сети, в которую Вы включены. Абоненты Internet твердо придерживаются RFC 822 стандарта, который требует записи user@host.domain, где host.domain - полностью квалифицированное имя главной ЭВМ области. В середине знак "в". Потому что эта запись не включает маршрут до главной ЭВМ адресата, но дает (уникальное) hostname взамен, это называется абсолютным адресом. В оригинале UUCP среды, распространенная форма была path!host!user (путь!главная ЭВМ!пользователь), где путь описывал последовательность главных ЭВМ для достижения главной ЭВМ адресата. Эта конструкция называется записью пути удара, потому что метка восклицания называется "Ударом". Сегодня, много uucp- подобных сетей приняли RFC822, и понимают этот тип адреса. Однако, имеется способ определить маршруты RFC822- совместимыми способоами: < @hostA,@hostB: user@hostC > обозначает адрес пользователя на hostC, где HostC должен быть достигнут через hostA и hostB (в этом порядке). Этот тип адреса - часто называется адресом маршрута. - 253 - Когда, имеется " % " оператор адреса: user%hostB@hostA будет сначала послан hostA, который расширяет знак процента в знак "@". Адрес - теперь user@hostB, и Mailer будет счастливо передавать ваше сообщение к hostB, который передаст его пользователю. Этот тип адреса иногда упоминается как "Ye Olde ARPANET Kludge''. Однако, много средств транспорта почты генерируют этот тип адреса. Другие сети имеют различные способы адресации. Decnet- основанные сети, например, используют два двоеточия как разделитель адресов, производя адрес так - главная ЭВМ::пользователь. X.400 стандарт использует полностью отличную схему, описывая получателя набором пар свойств, подобно стране и организации. В сети FidoNet, каждый пользователь идентифицирован кодом подобно 2:320/204.9, состоящем из четырех чисел, обозначающих: зону (2 - для Европы), сеть (320 для Парижа), узел (локальный узловой хаб), и указатель (PC индивидуального пользователя). Fidonet адреса можгут быть отображены на RFC 822; вышеупомянутое написали бы как Thomas.Quinot@p9.f204.n320.z2.fidonet.org. 14.4 Как Работает Маршрутизация? Процесс направления сообщения на главную ЭВМ получателя называется маршрутизация. Кроме нахождения пути от пункта посылки до адресата, это включает проверку ошибок также как оптимизацию стоимости и быстродействие. Имеется большое различие между UUCP способом маршрутизации дескрипторов пункта, и способром, которым делает пункт Internet. В Internet, основная работа направления данных на главную ЭВМ получателя (если только известен адрес IP) выполнен IP уровнем работы с сетями, в то время как в UUCP зоне, маршрут должен быть обеспечен пользователем, или сгенерироваться средством передачи почты. 14.4.1 Маршрутизация Почты в Internet В Internet от главной ЭВМ адресата зависит полностью, - 254 - выполняется ли любая специфическая маршрутизация почты вообще. Значение по умолчанию должно передать сообщение главной ЭВМ адресата непосредственно, и оставлять фактическую маршрутизацию данных IP транспортому уровню. Большинство пунктов будет обычно направлять всю почту к доступному серверу почты, который способен обработать все это движение. Чтобы объявить это обслуживание, пункт создает так называемую запись MX для их локальной области в DNS базе данных. MX замещает Экспреобразователь Почты и в основном заявляет, что главная ЭВМ сервера желает действовать как механизм продвижения данных почты для всех машин в этой области. MX записи можгут также использоваться, чтобы обработать траффик для главных ЭВМ, которые не соединены с Internet самостоятельно, подобно UUCP сетям, или сетям компаний с главными ЭВМ, несущими конфиденциальную информацию. MX записи также имеют приоритет, связанный с ними. Это - положительное целое число, которое позволяет определить очередность посылки почты. Предположите, что организация Foobar Inc, хочет всю их почту обрабатывать их машиной, называемой mailhub. Они будут иметь запись MX примерно так в DNS базе данных: foobar.com IN MX 5 mailhub.foobar.com Это объявляет mailhub.foobar.com как обработчик почты для foo- bar.com со значением предпочтения 5. Главная ЭВМ, которая хочет передавать сообщение joe@greenhouse.foobar.com, проверит DNS для foobar.com, и найдет запись MX, указывающую на mailhub. Если не имеется никакого MX с предпочтением меньше чем 5, сообщение будет передано на mailhub. 14.4.2 Маршрутизация Почты в Мире UUCP Маршрутизация Почты на UUCP сетях намного больше сложна чем на Internet, потому что транспортное программное обеспечение не выполняет никакой маршрутизации непосредственно. В более ранних временах, вся почта была должна быть адресована, используя пути - 255 - удара. Пути Удара определяли список главных ЭВМ для передачи сообщения, отделяемые метками восклицания, и с последующим именем пользователя. Чтобы адресовать письмо Janet Пользователю на машине, именованной moria, Вы использовали бы путь eek!swim!Moria!Janet. Это послало бы почту от вашей главной ЭВМ до eek, оттуда на swim и в заключение к moria. Очевидный недостаток этой методики состоит в том, что требуется, чтобы Вы помнили много относительно сетевой топологии, и т.д. Намного хуже, то что изменения в сетевой топологии --- подобно удаляемым связям или удаляемым главным ЭВМ --- могут заставлять сообщения терпеть неудачу просто потому что Вы не знали бо изменении. И в заключение, в случае, если Вы посылаете в различные места, Вы будете должны модифицировать все эти маршруты. Первый шаг в идентификации hostname был основание UUCP Отображающего Проекта. Он размещен в Rutgers Университете, и регистрирует все официальные UUCP hostname, наряду с информацией относительно их соседей UUCP и их географическего расположения, создавая уверенность, что никакой hostname не используется дважды. Информация, собранная Проектом Отображения издана как Карты Usenet, которые распределены регулярно через Usenet. (4) типичный вход системы в Карте (при удалении комментариев) походит на это: 4. Maps for sites registered with The UUCP Mapping Project are distributed through the newsgroup comp.mail.maps; other organizations may publish separate maps for their network. moria bert(DAILY/2), swim(WEEKLY) Этот вход говорит, что moria имеет связь с bert, которую она вызывает дважды в день, и со swim, которую она вызывает еженедельно. Мы возвратимся к формату файлов Карты позже. Используя информацию связности, обеспеченной в картах, Вы может автоматически генерировать полные пути от вашей главной ЭВМ до любого пункта адресата. Эта информация обычно сохраняется в файле путей, также называемом pathalias база данных. Если Карты устанавливают, что Вы можете достигать bert через ernie, то pathalias - 256 - вход для moria, сгенерированный из отрывка Карты выше выглядит следующим образом: moria ernie!bert!moria!%s Если, который Вы теперь даете адрес адресата janet@moria.uucp, ваш MTA, выберет маршрут, показанный выше, и пошлет сообщение ernie с адресом конверта bert! Moria! Janet. Формирование файла путей из полных карт Usenet - не очень хорошая идея. Информация, обеспеченная в них обычно искажается, и иногда устаревает. Следовательно, только ряд главных главных ЭВМ использует полные UUCP всемирные карты, чтобы формировать их файл путей. Большинство абонентов поддерживает информацию маршрутизации для абонента в их соседстве(окрестностях), и посылают почту абоненту, которого они не находят в их базах данных на более интеллектуальную главную ЭВМ с более полной информацией маршрутизации. Эта схема называется интеллектуально - главной маршрутизацией. 14.4.3 Смешивание UUCP и RFC 822 Самое лучшее исправление против проблем маршрутизации почты в UUCP сетях - принятие системы имени области в UUCP сетях. Конечно, Вы не можете сделать запрос блока преобразования имен над UUCP. Однако, многие UUCP абоненты сформировали малые области, которые координируют их маршрутизацию внутренне. В Картах, эти области объявляют одну или две главных ЭВМ как их ворота почты, так, чтобы не был входа карты для каждой главной ЭВМ в области. Ворота обрабатывают всю почту, которая течет в и вне области. Схема маршрутизации внутри области полностью невидима для внешнего мира. Это работает очень хорошо с интеллектуально - главной схемой маршрутизации, описанной выше. Глобальная переменная, направляющая информацию поддерживается воротами; малый Главные ЭВМ внутри области получат только малый файл путей, который перечисляет маршруты внутри их области, и маршрута к хабу - 257 - почты. Даже ворота почты не должны иметь информации маршрутизации для каждой одиночной UUCP главной ЭВМ в мире. Им нужно иметь маршруты к всем областям в их базах данных. Например, pathalias вход, показанный ниже направляет всю почту для абонента в sub.org области к smurf: .sub.org swim!smurf!%s Любая почта, адресованная claire@jones.sub.org будет послана swim с адресом конверта smurf! Jones! Claire. Иерархическая организация области называет место, позволяет серверам почты смешивать более специфические маршруты с менее специфическими. Например, система во Франции может иметь специфические маршруты для подобластей fr, но направлять любую почту для главных ЭВМ в США область к некоторой системе в США. Таким образом,, область-основанная маршрутизация (как эта методика называется) значительно уменьшает размер баз данных маршрутизации также как административных необходимых непроизводительных затрат. Основная польза использования имен области в UUCP среде то что согласие с RFC 822, разрешает простой переход между UUCP сетями и Internet. Многие UUCP области в настоящее время имеют связь с воротами Internet, которые действуют как их интеллектуально - главные. Посылка сообщений через Internet быстрее, и информация маршрутизации намного более надежна, потому что главные ЭВМ Internet могут использовать DNS вместо Карт Usenet. Чтобы быть доступным из Internet, uucp-основанные области обычно имеют ворота в Internet, и объявляют запись MX для них (MX записи были описаны выше). Например, примите, что moria принадлежит orcnet.org области. Gcc2.groucho.edu действует как ворота в Internet. Moria следовательно использовал бы gcc2 как интеллектуально - главного (smart-host), так, чтобы вся почта для иностранных областей была передан через Internet. С другой стороны, gcc2 объявил бы запись MX для orcnet.org, и передавал всю входящую почту для orcnet абонента к moria. Единственая остающаяся проблема состоит в том, что UUCP транспортные программы не могут иметь дело с квалифицированными именами области. Большинство UUCP программ было разработано, чтобы справиться с именами пункта до восьми символов, и использование не-алфавитно-цифровых символов типа точек - - 258 - полностью вне правил. Следовательно, некоторое отображение между RFC 822 именами и UUCP hostname'ами необходимо. Один общий способ отображения FQDN на имена UUCP состоит в том, чтобы использовать pathalias файл для этого: moria.orcnet.org ernie!bert!moria!%s Это произведет чистый путь uucp-стиля из адреса, который определяет полностью квалифицированное имя области. Некоторые mailer'ы обеспечивают специальные файлы для этого; sendmail, например, использует uucpxtable. Обратное преобразование иногда требуется при посылке почты из UUCP сети в Internet. Как только отправитель почты использует полностью квалифицированное имя области в адресе адресата, этой проблемы можно избежать не удаляя имя области из адреса конверта при пересылке сообщения на smart-host. Однако, имеется все еще некоторый UUCP абонент, который - не есть часть любой области. Они - обычно определяются, конкатенируя псевдо область uucp. 14.5 Pathalias и Формат файла Карты Pathalias база данных обеспечивает главную, направляющую информацию в uucp-основанных сетях. Типичный вход походит на этот (имя пункта, и путь отделяется МЕТКАМИ ТАБУЛЯЦИИ): moria.orcnet.org ernie!bert!moria!%s moria ernie!bert!moria!%s Это направляет любое сообщение к moria через ernie и bert. moria полностью составное имя и имя UUCP должно быть задано, если mailer не имеет отдельного способа отображения между этими именами. Если Вы хотите направлять все сообщения на главные ЭВМ внутри некоторой области на реле почты, Вы может также определять путь в pathalias базе данных, давая имя области как целевой, с предшествующей точкой. Например, если все главные ЭВМ в sub.org - 259 - могут быть достигнуты через swim!smurf, pathalias вход мог бы выглядеть следующим образом: \&.sub.org swim!smurf!%s Запись в pathalias файл является допустимой только, когда Вы имеете пункт который не должен делать много маршрутизации. Если Вы должны делать маршрутизацию для большого количества главных ЭВМ, лучший способ - использовать pathalias команду, чтобы создать файл из файлов карты. Карты могут поддерживаться намного проще, потому что Вы можете просто добавлять или удалять систему, редактируя вход карты системы, и вновь создавать файл карты. Хотя карты, изданные Usenet Проектом не очень используются для маршрутизации, UUCP сети могут обеспечивать информацию маршрутизации в их собственном наборе карт. Файл карты в основном состоит из списка абонентов, печатая абонентов каждого опроса системы. Имя системы начинается в первом столбце, и сопровождается отделенным запятой списком связей. Список может быть продолжен через символ перевода строки, если следующая строка начинается с метки табуляции. Каждая связь состоит из имени пункта, сопровождаемого стоимостью, данной в скобках. Стоимость - арифметическое выражение, состоящеее из чисел и символических издержек. Строки, начинающиеся знаком мусора игнорируются. Например, рассмотрите moria, который опрашивает swim .tobirds.com два раза в день, и bert.sesame.com только раз в неделю. Кроме того, связь с bert использует медленный 2400bps модем. Moria издал бы следующий вход карт: moria.orcnet.org bert.sesame.com(DAILY/2), swim.twobirds.com(WEEKLY+LOW) moria.orcnet.org = moria Последняя строка делала бы это известным под именем UUCP. Обратите внимание, что это должно быть DAILY/2, при вызове два раза в день фактически половины стоимость для этой связи. Использование информации из таких файлов карты, pathalias способно вычислить оптимальные маршруты к любому пункту - 260 - адресата, перечисленному в файле путей, и производить pathalias базу данных из этого, которая может использоваться для маршрутизации для этого абонента. Pathalias обеспечивает пару других возможностей подобно скрывающемуся пункту (то есть абонент, доступный только через ворота) и т.д. См. страницу для pathalias для уточнения, также как для полного списка издержек связи. Комментарии в файле карты вообще содержат дополнительную информацию относительно абонента, описанного в этом. Имеется жесткий формат, чтобы определить их, так, чтобы это могло быть восстановлено(отыскано) из карт. Например, программа, называемая uuwho использует базу данных, созданную из файлов карты, чтобы отобразить эту информацию приятно форматируемым способом. Когда Вы регистрируете ваш пункт в организации, которая распределяет файлы карты, Вы вообще должны заполнить такой вход карты. Ниже - типовой вход карты (фактически, это - то для моего пункта): #N monad, monad.swb.de, monad.swb.sub.org #S AT 486DX50; Linux 0.99 #O private #C Olaf Kirch #E okir@monad.swb.de #P Kattreinstr. 38, D-64295 Darmstadt, FRG #L 49 52 03 N / 08 38 40 E #U brewhq #W okir@monad.swb.de (Olaf Kirch); Sun Jul 25 16:59:32 MET DST 1993 # monad brewhq(DAILY/2) # Domains monad = monad.swb.de monad = monad.swb.sub.org Незаполненное пространство после первых двух символов - МЕТКА ТАБУЛЯЦИИ. Значение большинства полей довольно очевидно; Вы получите детализированное описание в любой области, в которой Вы регистрируетесь. L поле наиболее забавно: оно задает вашу географическую позицию в lati-tude/longitude и используется, чтобы рисовать карты postscript, которые показывают всех абонентов для - 261 - каждой страны. 14.6 Конфигурирование elm Elm замещает " электронную почту " и является одним из наиболее приемлемых инструментальных средств Unix. Она обеспечивает полноэкранный интерфейс с возможностью справки. Мы не будем обсуждать, здесь как использовать elm, и остановимся только на опциях конфигурации. Теоретически, Вы можете выполнять неконфигурированный elm, и все работает хорошо ---, если Вы очень удачливы. Но имеются несколько опций, которые должны быть установлены. При запуске elm читает набор переменных конфигурации из elm.rc файла в /usr/lib/elm. Затем, она будет пытаться читать файл .elm/elmrc в вашем исходном каталоге. Вы обычно не пишите этот файл самостоятельно. Он создается когда Вы выбираете "сохранить опции" в меню опций elm. Набор опций для частного elmrc файла также доступен в глобальном elm .rc файла. Большинство установок в вашем частном elmrc файле отменяет таковые глобального файла. 14.6.1 Глобальные Опции elm В глобальном elm .rc файле, Вы должны установить опции, которые относятся к имени вашего host. Например, в Виртуальном Пивоваренном заводе, файл содержал бы следующее: # # The local hostname hostname = vlager # # Domain name hostdomain = .vbrew.com # # Fully qualified domain name hostfullname = vlager.vbrew.com Этот набор опций ориентирует elm относительно локального hostname. Хотя эта информация редко используется, Вы должны - 262 - установить эти опции. Обратите внимание, что эти опции воздействуют только в глобальном файле конфигурации; когда они найдены в вашем частном elmrc, они будут игнорироваться. 14.6.2 Национальный Набор Символов Недавно имелись предложения исправить RFC 822 стандарт, чтобы поддерживать различные типы сообщений, типа простых текстовых, двоичных данных, файлов Postscript, и т.д. Набор стандартов и RFC, покрывающий эти аспекты, обычно упоминается как MIME, или Многоцелевые Расширения Почты Internet. Между прочим, это также позволяет получателю узнать, использовался ли набор символов отличный от стандартного ASCII, при написании сообщения. Это обеспечивается elm до некоторой степени. Набор символов, используемый Linux внутренне, чтобы представить символы обычно упоминается как ISO-8859-1, что является именем стандарта, которому он соответствует. Это также известно как Латинский -1. Любые символы в сообщении из этого набора символов должны иметь следующую строку в заголовке: Content-Type: text/plain; charset=iso-8859-1 Система получения должна распознать это поле и принять соответствующие меры при отображении сообщения. Значение по умолчанию для текстовых сообщений - значение charset us-ascii. Чтобы отображать сообщения с набором символов отличным от ASCII, elm должен знать, как печатать эти символы. По умолчанию, когда elm получает сообщение с charset полем отличным от us-ascii, она пробует отображать сообщение, используя команду, называемую metamail. Сообщения, которые требуют, чтобы мета почта отобразилась, показываются с " M " в самом первом столбце в экране краткого обзора. Так как Linux набор символов - ISO-8859-1, вызов metamail не необходим для отображения сообщения, использующего этот набор символов. Если еlm знает, что дисплей понимает ISO-8859-1, она не будет использовать metamail, а отобразит сообщение непосредственно. Это может быть выполнено, установкой следующей опции в - 263 - глобальном elm .rc: displaycharset = iso-8859-1 Обратите внимание, что Вы должны установить эти опции даже, когда Вы никогда не собираетесь посылать или получать сообщения, которые фактически содержат символы отличные от ASCII. Это - потому что люди, которые посылают такие сообщения обычно конфигурируют их mailer'ом, чтобы поместить соответствующий тип содержания: поле в заголовке почты по умолчанию, посылают или нет они только ascii сообщения. Однако, установки этой опции в elm .rc не достаточно. Проблема состоит в том, что при отображении сообщения, elm вызывает библиотечную функцию для каждого символа, чтобы определить является ли он печатаемым или нет. По умолчанию, эта функция распознает только символы ASCII, и отображает все другие символы как "^?". Вы можете преодолеть это, устанавливая переменную среды LC CTYPE как ISO-8859-1, которая сообщает, что библиотека приняла символы Latin-1 как печатаемые. Поддержка для этих и других возможностей доступна начиная с libc-4.5.8. При посылке сообщений, которые содержат специальные символы из ISO-8859-1, Вы должны удостовериться, что установлены еще две переменные в elm .rc файле: charset = iso-8859-1 textencoding = 8bit Это заставит elm сообщить набор символов как ISO-8859-1 в заголовке почты, и посылать это как 8 битовые значения (значение по умолчанию - все символы 7 бит). Конечно, любая из этих опций может также быть установлена в частном elmrc файле вместо глобального. 15. Получение smail и Выполнение Эта глава даст Вам быстрое введение в установку smail, и краткий обзор функциональных возможностей, которые он обеспечивает. Хотя - 264 - smail в значительной степени совместим с sendmail в поведении, их файлы конфигурации полностью отличны. Основной файл конфигурации - /usr/lib/smail/config. Вы всегда должны редактировать этот файл, чтобы отразить значения, специфические для вашего пункта. Другие файлы, которые конфигурируют маршрутизацию и транспортные опции, могут также использоваться. По умолчанию, smail передает всю входящую почту немедленно. Если Вы имеете относительно высокий траффик, Вы может взамен заставить smail, собирать все сообщения в так называемой очереди, и обрабатывать их равномерно. При обработке почты внутри TCP/IP сети, smail - часто выполняются в daemon режиме: в загрузочное время системы, он вызывается из rc.inet2, и помещает себя в фон, где ждет входящие TCP соединения на SMTP порте (обычно порт 25). Это очень полезно всякий раз, когда Вы ожидаете значительный траффик, потому что smail не запущен отдельно для каждого входящего соединения. Smail имеет множество флагов, которые управляют этим поведением. Удачно что, smail поддерживает ряд стандартных режимов - операции, которые допускаются, когда Вы вызываете его специальным именем команды, подобно rmail, или smtpd. Мы столкнемся с большинством их при обсуждении различных возможностей smail. Имеются две связи с smail, который Вы должны иметь при всех обстоятельствах; а именно /usr/bin/rmail и /usr/sbin/sendmail. Когда Вы составляете и посылаете сообщение почты средством пользователя подобно elm, сообщение будет переправлено в rmail для получения. Тот же самое случается с почтой, приходящей в через UUCP. Некоторые версии elm, однако, вызывают /usr/sbin/sendmail вместо rmail, так что Вы нуждаетесь в обоих. Например, если Вы храните smail в /usr/local/bin, напечатайте в оболочке: # ln -s /usr/local/bin/smail /usr/bin/rmail # ln -s /usr/local/bin/smail /usr/sbin/sendmail Если, который Вы хотите углубиться далее в подробности - 265 - конфигурирования smail, пожалуйста, обращаетесь к руководству smail. Если он не включен в вашу любимую поставку Linux, Вы может получить его вплоть до исходников. 15.1 UUCP Установки Чтобы использовать smail в uucp среде, базисная установка довольно проста. Сначала, Вы должны удостовериться, что Вы имеете две символических связи к rmail и sendmail, упомянутому выше. Если Вы ожидаете получать SMTP пакеты от другого абонента, Вы также должны сделать rsmtp связь к smail. В smail распределении Vince Skahan, Вы найдете типовой файл конфигурации. Он называется config.sample и постоянно находится в /usr/lib/smail. Вы должны копировать его в конфигурации и редактировать его, чтобы отразить значения, специфические для вашего пункта. Примите, что ваш пункт именован swim .tobirds.com, и зарегистрирован в картах UUCP как swim. Ваш smarthost - ulysses. Тогда ваш файл конфигурации должен выглядеть следующим образом: # # Our domain names visible domain=two.birds:uucp # # Our name on outgoing mails visible name=swim.twobirds.com # # Use this as uucp-name as well uucp name=swim.twobirds.com # # Our smarthost smart host=ulysses Первое утверждение сообщает smail относительно областей, которым ваш пункт принадлежит. Вставьте их имена здесь, отделяемые двоеточиями. Если ваше имя пункта зарегистрировано в картах UUCP, Вы должен также добавить uucp. При отправке(получении) сообщения почты, smail определяет имя вашего host, используя hostname системный вызов (2), и проверяет адрес - 266 - получателя для этого hostname. Если адрес соответствует одному из имен, или неквалифицированному hostname, получатель, рассматривается локальным, и smail пытается передавать сообщение пользователю. Видимое имя должно содержать одиночное, полностью квалифицированное имя области вашего пункта, которое Вы хотите использовать при выходе почты. Это имя используется при производстве адреса отправителя для всей почты. Вы должны удостовериться, чтобы использовать имя, которое smail распознает относительно локального host (то есть hostname с одной из областей, перечисленных в атрибуте области). Последнее утверждение устанавливает путь, используемый для маршрутизации smart-host (описанный в разделе 14.4). С этой типовой установкой, smail будет передавать любую почту для отдаленных адресов интеллектуальному host. Путь, заданный в интеллектуальном атрибуте пути будет использоваться как маршрут до интеллектуального host. Так как сообщения будут передан через UUCP, атрибут должен определить систему, известную вашему UUCP программному обеспечению. Пожалуйста обратитесь к главе 13. При создании пункта, известного UUCP. Имеется одна опция, используемая в вышеупомянутом файле, который мы не объяснили; это - имя uucp. Причина использовать опцию: По умолчанию, smail использует значение, возвращенное hostname (2) для uucp-специфических вещей типа возвращающегося пути, данного в строке From заголовка. Если ваш hostname не зарегистрирован в UUCP проекте, Вы должен сообщить, чтобы smail использовал взамен ваше полностью квалифицированное имя области. Это может быть выполнено, добавлением опции имени uucp к файлу конфигурации. Имеется другой файл в /usr/lib/smail, называемый paths.sample. Это - пример файла путей. Однако, Вы не будете нуждаться в нем, если Вы не имеете связей почты больше чем к одному пункту. Если нет, Вы будете должны написать один непосредственно, или генерировать один из карт Usenet. Файл путей будет описан позже в этой главе. - 267 - 15.2 Установки для локальной сети Если Вы имеете пункт с двумя или больше главными ЭВМ, соединенными локальной сетью (LAN), Вы будете должны обозначить один host, который обрабатывает ваше UUCP соединение со внешним миром. Представте, что мы снова на Виртуальном Пивоваренном заводе, и vstout установлен как UUCP ворота. В среде с сетевой структурой, самое лучшее хранить пользовательские mailbox на одиночной файловой системе, которая nfs- связана со всеми главными ЭВМ. Это позволяет пользователям двигаться от машины до машины, без необходимости перемещать их почту (или даже хуже, проверять приблизительно три или четыре машины для недавно прибытой почты каждое утро). Следовательно, Вы также хотите делать адреса отправителя независимыми от машины. Общая практика - использовать область, как адрес отправителя, вместо hostname. Janet, например, определил бы janet@vbrew.com вместо janet@vale.vbrew.com. Мы объясним ниже, как заставить сервер распознать имя области как допустимое имя для вашего пункта. Другой способ хранения всех mailbox на центральном host состоит в том, чтобы использовать POP или IMAP. POP замещает Протокол Почтового отделения и допускает пользователей, обращаться к их mailbox по TCP/IP. IMAP, интерактивный Протокол Доступа Почты подобен POP, но более общий. И клиентура и серверы для IMAP и POP была пренесена на Linux, и доступна из sunsite.unc.edu ниже /pub/Linux/system/Network. 15.2.1 Написание Файлов Конфигурации Конфигурация для Пивоваренного завода работает следующим образом: все главные ЭВМ за исключением сервера почты vstout непосредственно направляют всю почту к серверу, используя маршрутизацию smart host. Vstout непосредственно посылает всю почту реальному smart host, который направляет всю почту Пивоваренного завода; этот host называется moria. Стандартный файл конфигурации для всех главных ЭВМ отличных от vstout походит на это: # - 268 - # Our domain: visible domain=vbrew.com # # What we name ourselves visible name=vbrew.com # # Smart-host routing: via SMTP to vstout smart path=vstout smart transport=smtp Это очень похоже на то, что мы использовали для uucp пункта. Основное различие - то, что транспорт, используемый, чтобы послать почту smart host, конечно, SMTP. Атрибут области заставит smail использовать имя области вместо локального hostname на всей почте. На UUCP воротах vstout, файл конфигурации немного отличный: # # Our hostnames: hostnames=vbrew.com:vstout.vbrew.com:vstout # # What we name ourselves visible name=vbrew.com # # in the uucp world, we're known as vbrew.com uucp name=vbrew.com # # Smart transport: via uucp to moria smart path=moria smart transport=uux # # we're authoritative for our domain auth domains=vbrew.com Этот файл конфигурации использует отличную схему, чтобы сообщить smail, чем локальный host вызывается. Вместо того, чтобы давать список областей и позволять находить hostname системным вызовом, он определяет список явно. Вышеупомянутый список содержит, и полностью квалифицированные и неквалифицированные hostname, и область. Это заставит smail распознать janet@vbrew.com как локальный адрес, и передавать сообщение janet. - 269 - Auth переменная областей называет области, для которых vstout является авторитарным. То есть если smail получает любую почту, адресованную host .vbre.com, где host не называет существующую локальную машину, он отклоняет сообщение и возвращает это отправителю. Если этот вход не представлен, любое такое сообщение будет послано smart-host, который возвратит его к vstout, и так далее, пока оно не будет отброшено из-за превышения максимального счета посылки на небольшое расстояние. 15.2.2 Выполнение smail Сначала, Вы должны решить, выполниться ли, smail как отдельный daemon, или управляет SMTP портом и smail вызывается только всякий раз, когда SMTP соединение запрошено от некоторого клиента. Обычно, Вы предпочтете операцию daemon на сервере почты, потому что это загружает машину гораздо меньше чем порождение smail много раз для каждого одиночного соединения. Поскольку сервер почты передает большинство входящей почты непосредственно пользователям, Вы выберете операцию inetd на большинстве других главных ЭВМ. Для любого режима работы, который Вы выбираете для каждого индивидуального host, Вы должны удостовериться, что Вы имеете следующий вход в вашем файле /etc/services: smtp 25/tcp # Simple Mail Transfer Protocol Это определяет TCP число порта, которое smail должен использовать для SMTP диалогов. 25 - стандарт, определенный Назначенными Числами RFC. В daemon режиме, smail поместится в фон, и будет ждать соединения на SMTP порте. Когда соединение происходит, он ветвится и проводит SMTP диалог с равным процессом. Smail daemon обычно запускается, как команда rc.inet2, используя следующую команду: /usr/local/bin/smail -bd -q15m -bd флаг включает daemon режим, а -q15m делает обработку сообщений в очереди каждые 15 минут. - 270 - Если Вы хотите использовать inetd взамен, ваш файл /etc/inetd.conf, должен содержать строку: smtp stream tcp nowait root /usr/sbin/smtpd smtpd Smtpd должен быть символическая связь к smail двоичному. Не забудьте, что Вы должны заставить inetd повторно-читать inetd.conf, посылая ему сигнал HUP после создания этих изменений. Daemon режим и inetd режим взаимно исключающиеся. Если Вы выполняете smail в deamon режиме, Вы должны удостовериться, и прокомментировать любую строку в inetd.conf для smtp обслуживания. При наличии inetd управления smail, удостоверитесь, что rc.inet2 не запускает smail daemon. 15.3 Если Не Проходит ... Если кое-что идет неправильно с вашей установкой, имеется ряд возможностей, которые могут помочь Вам найти корень проблемы. Первое место, которое нужно проверить - регистрационные файлы smail. Они сохраняются в /var/spool/smail/log, и именованы logfile и paniclog, соответственно. Типичный вход в logfile походит на это: 04/24/94 07:12:04: [m0puwU8-00023UB] received | from: root | program: sendmail | size: 1468 bytes 04/24/94 07:12:04: [m0puwU8-00023UB] delivered | via: vstout.vbrew.com | to: root@vstout.vbrew.com | orig-to: root@vstout.vbrew.com | router: smart host | transport: smtp Это показывает, что сообщение от root до root@vstout.vbrew.com было правильно передано host vstout над SMTP. Сообщения smail не могут быть переданы, генерацией входа в регистрационном файле, но сообщение об ошибке передается: - 271 - 04/24/94 07:12:04: [m0puwU8-00023UB] received | from: root | program: sendmail | size: 1468 bytes 04/24/94 07:12:04: [m0puwU8-00023UB] root@vstout.vbrew.com ... deferred (ERR 148) transport smtp: connect: Connection refused Вышеупомянутая ошибка типична для ситуации, в которой smail правильно распознает, что сообщение должно быть передан к vstout, но не был способен соединиться с SMTP обслуживанием по vstout. Если это случается, Вы или имеете проблему конфигурации, или поддержка TCP отсутствует в вашем smail binaries. Эта проблема не так уж необыкновена, как можно было думать. Имелся бы исходник smail binaries, даже в некоторых распределениях Linux, без поддержки для работы с сетями TCP/IP. Если дело обстоит так, Вы должны компилировать smail самостоятельно. Устанавливая smail, Вы можете проверять, имеет ли он TCP поддержку работы с сетями telnet к SMTP порту на вашей машине. Успешное соединие с SMTP сервером, показывается ниже: $ telnet localhost smtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 monad.swb.de Smail3.1.28.1 #6 ready at Sun, 23 Jan 94 19:26 MET QUIT 221 monad.swb.de closing connection Если этот тест не производит SMTP заголовок (строка, начинающаяся с 220 кода), сначала удостовертесь, что ваша конфигурация действительно правильна прежде, чем компилировать smail самостоятельно, как описано ниже. Если Вы сталкиваетесь с проблемой с smail, и Вы неспособны разместить сообщения об ошибках smail, Вы можете включить сообщения отладки. Вы можете сделать это используя -d флаг, необязательно сопровождаемый числом, определяющим уровень точности. Smail будет печатать отчет на экран, который может давать - 272 - Вам большое количество подсказок относительно того что, идет неправильно. 15.3.1 Компиляция smail Если Вы знаете наверняка, что smail испытывает недостаток TCP поддержки сети, Вы должны получить исходник. Он возможно включен в ваше распределение, если Вы получили его через CD-ROM, иначе Вы можете получать его из сети через FTP. При компилировании smail, лучше всего работать с набором файлов конфигурации из newspak распределения Vince Skahan's. Чтобы компилировать в TCP драйвере работы с сетями, Вы должны установить макркоманду КОНФИГУРАЦИИ ДРАЙВЕРА в conf/EDITME файле к или bsd-сети или arpa-сети. Вышеупомянутые подходят для инсталляции LAN, но Internet требует arpa-сети. Различие между этими двумя - в том, что пос