В этой лекции
В предыдущих лекциях были описаны основные способы передачи электронной почты от сервера на базе ОС Linux через сетевое соединение в сеть Internet. Иногда из соображений безопасности, из-за высокой стоимости подключения или по каким-либо другим причинам подключение почтового сервера организации к сети Internet с использованием IP-соединения не представляется возможным. К счастью, существует еще один относительно недорогой способ организации работы сервера электронной почты без установления IP-соединения.
Протокол копирования из одной UNIX-системы в другую (UNIX-to-UNIX CoPy (UUCP)) уже давно использовался для передачи сообщений и файлов между UNIX-хостами по телефонным линиям посредством модемов. В США был даже написан пакет протоколов и программ, которые обслуживали сеть UNIX-компьютеров по всей стране. Однако с развитием сети Internet популярность UUCP сошла на нет. Сегодня многие снова возвращаются к использованию UUCP, так как этот протокол обеспечивает высокий уровень безопасности передачи электронной почты при небольшой цене.
При подключении сервера электронной почты по протоколу UUCP отсутствует прямое соединение с сетью Internet. Таким образом, злоумышленник не сможет подключиться к вашему серверу через UUCP-соединение с помощью Telnet или использовать любой другой тип сетевой атаки. Дело в том, что при использовании UUCP никакие программы на локальном сервере не запускаются, если только вы не разрешите своему провайдеру Internet обратное. Кроме того, программное обеспечение UUCP позволяет жестко контролировать все попытки соединения между двумя компьютерами.
Многие предприятия в настоящее время в дополнение к имеющимся РРР-соединениям используют протокол UUCP для передачи электронной почты. Например, если у предприятия имеется большой IP-трафик (Web, FTP) и нежелательно перегружать РРР-соединение передачей дополнительного трафика, такого как электронная почта, то на выручку приходит протокол UUCP. Тогда вместо закупки большей полосы пропускания для РРР, можно просто оплатить недорогое коммутируемое UUCP-соединение с провайдером Internet, которое будет обслуживать систему электронной почты предприятия, при этом остальной IP-трафик полностью использует полосу РРР-соединения.
В этой лекции мы подробно рассмотрим протоколы, используемые в UUCP-соединении. Очевидно, что при организации UUCP-соединения желательно говорить с провайдером на одном языке. Кроме того, в этой лекции рассматривается наиболее популярный пакет для работы с UUCP в ОС Linux - Taylor UUCP. Приводятся примеры конфигурационных файлов для реализации функций клиента и сервера UUCP на почтовом сервере под управлением ОС Linux.
Протокол UUCP был разработан в конце 70-х годов Майком Леском (Mike Lesk) в лаборатории компании ATT Bell. Изначально он предназначался для передачи файлов и электронных сообщений между двумя UNIX-компьютерами. Соединение по протоколу UUCP включает в себя три фазы:
Поскольку протокол UUCP был разработан еще до появления концепции "клиент-сервер", его терминология несколько отличается от общепринятой. То, что сегодня мы называем сервером в терминах UUCP называется UUCP-ведомым ( slave ), а клиент называется UUCP-ведущим или главным ( master ), так как он управляет соединением в сеансе UUCP (рис. 9.1). Любой компьютер может начать соединение по UUCP. Какой из двух компьютеров будет ведущим, а какой ведомым, определяется при подтверждении открытия соединения. И конечно же, специально, чтобы еще больше все запутать, компьютеры в течение сеанса UUCP могут меняться ролями ведущий-ведомый.
(рис 9.1) Фазы в сеансе UUCPПри подтверждении открытия
соединения оба компьютера опираются на
основные правила, касающиеся связи по UUCP. В
течение фазы подтверждения открытия
соединения посылается специальный пакет,
который начинается символом
шестнадцатеричное 0x10
и заканчивается символом
шестнадцатеричное 0x00.
Когда ведущий компьютер вызывает ведомый,
тот должен ответить определенным пакетом:
Shere=hostname,
где hostname -
UUCP-имя ведомого компьютера. UUCP-имя не имеет
ничего общего с именем компьютера согласно
системе DNS, хотя делаются попытки
согласовать эти две системы имен путем
введения в сети Internet специального домена uucp.
Итак, ведущий компьютер, получив имя
ведомого компьютера, должен ответить ему
следующим образом:
Shostname=options,
где hostname -
это уже UUCP-имя ведущего компьютера, а options -
параметры, которые определяются двумя
хостами. Все эти параметры представлены в
табл. 9.1.
| Параметр | Описание |
|---|---|
-Qseq |
Определяет вызов номера последовательности seq |
-xlevel |
Устанавливает режим отладки на ведомом компьютере равным level |
-pgrade |
Устанавливает ведомому компьютеру режим передачи файлов только с приоритетом или выше |
-N |
Сигнализирует о том, что ведущий компьютер воспринимает расширения в соответствии с Taylor UUCP |
Ведомый компьютер, в свою очередь, должен ответить на параметр, заданный ведущим, определенным кодом. Коды ответов ведомого компьютера представлены в табл. 9.2.
| Код ответа | Описание |
|---|---|
ROK |
Параметры опознаны |
ROKN |
То же, что и ROK, но принимаются расширения в соответствии с Taylor UUCP |
RLCK |
На ведомом компьютере ведущий с данным именем заблокирован - невозможно продолжить сеанс |
RCB |
Ведомый компьютер сбросит соединение и инициирует его в качестве ведущего |
RBADSEQ |
Номер последовательности в параметре -Q не опознан - попытка несанкционированного доступа |
RLOGIN |
Ведущий компьютер зарегистрировался на ведомом с ошибочным идентификатором входа в систему |
RYou are unknown to me |
В файлах config ведомого компьютера отсутствуют сведения о ведущем компьютере |
Если ведомый компьютер в ответе
использовал код ROK
или ROKN, то
начинается следующий этап подтверждения
открытия соединения. Если ведущий
компьютер получил какой-либо другой код
ответа, то он прекращает попытку соединения.
Следующий этап подтверждения
открытия соединения заключается в
согласовании параметров протокола UUCP двумя
сторонами. На протяжении многих лет было
разработано несколько методов
инкапсуляции ядра протокола UUCP. Всем
протоколам были присвоены буквы - от A до
Z. Оригинальному протоколу UUCP была
присвоена буква g.
В то же время пакет Taylor UUCP, работая с таким
же пакетом на другой машине, использует
протокол i. В
начале обмена ведомый компьютер посылает
пакет:
Pprotocollist
Здесь под protocollist
подразумевается список протоколов (в
буквенном понимании), которые он
поддерживает. Если ведущий компьютер
обнаруживает в списке поддерживаемый им
протокол, он отвечает пакетом:
Uprotocol,
где protocol -
буквенное обозначение протокола, который
ведущий компьютер желает использовать во
время сеанса. Если не был найден приемлемый
протокол для продолжения сеанса, то ведущий
компьютер должен вернуть ответ типа UN
и завершить соединение. Затем, после
того как тип протокола выбран, компьютеры
должны провести переговоры об
индивидуальном протоколе (см. раздел "Типы
протоколов UUCP" далее в этой лекции). После
завершения переговоров фаза подтверждения
открытия соединения окончена и начинается
фаза передачи данных.
Как уже упоминалось ранее, ведущий компьютер управляет потоком данных, которые передаются через UUCP-соединение. После завершения фазы подтверждения открытия соединения ведущий компьютер берет управление сеансом на себя и выдает ведомому команды. Для управления работой ведомого компьютера имеется пять команд. Они показаны на рис. 9.2 с направлением действия.
(рис 9.2) Команды передачи данных в UUCPДля передачи файла с ведущего
компьютера на ведомый используется команда S. Ведомый
компьютер может либо принять запрос на
передачу файла, либо отклонить его. Формат
команды S
следующий:
S fileout filein user -options temp mode notify size
fileout - имя
файла, который ведущий компьютер
собирается передать. Перед файлами, которые
находятся в рабочем каталоге пользователя,
ставится ~USER/, а
перед файлами, которые находятся в общей
области UUCP, - ~/.
filein - имя
файла, под которым ведомый компьютер должен
сохранить принятый файл. Если имя файла
начинается с X., то
это означает выполняемый файл, который
будет запущен на ведомом компьютере с
помощью команды uux.
Если же перед именем файла стоит D.,
то это значит, что файл данных будет
использоваться выполняемым файлом.
Имя пользователя, запросившего
передачу файла, указывается в параметре user.
Дополнительные параметры для
передачи файла можно задать с помощью
параметра -options.
Все значения этого параметра указаны ниже в
табл. 9.3.
| Параметр | Описание |
|---|---|
C |
Файл следует
сохранить в каталог UUCP spool
ведомого компьютера |
c |
Файл следует
сохранить, как указано в filein |
d |
Создать на ведомом
компьютере каталог согласно filein |
f |
Не создавать на ведомом компьютере каталоги и прервать передачу |
m |
Ведущий компьютер после передачи файла передает почту |
n |
После передачи файла ведомый
компьютер должен послать почтовое
сообщение на адрес, указанный в
параметре notify |
Параметр temp -
это имя временного файла в каталоге UUCP spool,
если задан параметр C.
В другом случае параметр temp
не требуется и удаляется после успешной
передачи файла.
Параметр mode
представляет собой восьмеричное число,
которое отображает 0666, т.е.
чтение/запись для пользователя, группы и
всех других пользователей системы. Однако
файл в служебной области UUCP (каталог spool )
может иметь режим доступа 0600, чтобы другие пользователи не могли
читать файл или записывать в него.
Почтовый адрес, который задается
в параметре notify
используется для посылки уведомления. Если
не указан пользователь для уведомления, но
задан параметр size,
то параметру notify
задается пустое значение ""
или dummy.
Параметр size
используется в Taylor UUCP для указания размера
передаваемого файла (в байтах).
После того как выдана команда S,
ведомый компьютер должен ответить на нее
для определения дальнейших условий
передачи. Все ответы на команду S
также начинаются на S.
В табл. 9.4 показаны возможные коды
ответов на команду S.
| Код ответа | Описание |
|---|---|
SY |
Все параметры опознаны; начать передачу файла |
SN2 |
Передача файла не будет успешно закончена |
SN4 |
Ведомый компьютер не может создать временный файл для данного сеанса |
SN6 |
Используется в Taylor UUCP; ведомый компьютер сообщает о том, что файл слишком большой и он не может его сохранить на данный момент |
SN7 |
Используется в Taylor UUCP; ведомый компьютер сообщает о том, что файл слишком большой и он не сможет его передать |
Если на команду S получен ответ SY,
то ведущий компьютер начинает передачу
данных по протоколу, определенному в фазе
подтверждения открытия соединения. Затем,
после передачи файла, ведомый компьютер
должен выдать код, сообщающий о состоянии
передачи. В табл. 9.5 указаны возможные
коды завершения передачи данных по команде S.
| Код | Описание |
|---|---|
CY |
Передача файла завершена успешно |
CN5 |
Временный файл не
может быть удален из каталога,
указанного в filein |
После того как ведущий компьютер получил код завершения от ведомого, передача данных заканчивается и ведущий компьютер готов к передаче другого блока данных или к прекращению сеанса UUCP.
Команда R
используется ведущим компьютером для
приема файлов от ведомого компьютера.
Формат этой команды следующий:
R fileout filein user -option size
Здесь fileout -
имя файла на ведомом компьютере. Этот
файл не обязательно должен находиться в
общей области UUCP - каталоге spool. Кроме
того, для обозначения всех файлов из
каталога разрешено использовать
обобщающий символ ( * ).
Соответственно, filein - это имя файла, под которым
ведущий компьютер должен сохранить
принятый файл.
Имя пользователя, запросившего
прием файла, указывается в параметре user.
Дополнительные параметры для
приема файла можно задать с помощью
параметра -options.
Значения этого параметра приведены в табл. 9.6.
| Параметр | Описание |
|---|---|
d |
Ведущий компьютер
должен создать каталоги согласно filein |
f |
Ведущий компьютер
не должен создавать каталоги согласно filein и прием должен быть
прерван |
m |
Ведущий компьютер должен выслать по электронной почте уведомление после окончания приема файла |
Параметр size показывает наибольший размер файла,
который ведущий компьютер сможет принять
от ведомого.
На команду R
ведомый компьютер должен ответить
специальным кодом, который отображает
состояние передачи файла. Коды ответов
ведомого компьютера на команду R
представлены в табл. 9.7.
| Код ответа | Описание |
|---|---|
RY mode |
Ведомым
компьютером файл передан успешно.
Параметр mode
указывает, что права доступа к файлу fileout
должны быть перенесены на filein |
RN2 |
Ведомый компьютер не смог передать файл. Возможные причины: файл не существует или не соответствуют права доступа к файлу |
RN6 |
Используется в Taylor UUCP. Сигнализирует о том, что размер файла превысил отведенный ему лимит |
Если получен код ответа RY, то ведомый компьютер начинает
передачу файла ведущему по оговоренному UUCP-протоколу.
По окончании передачи ведущий компьютер
посылает ведомому код завершения. В табл. 9.8
приведены возможные коды завершения.
| Код | Описание |
|---|---|
CY |
Файл принят успешно |
CN5 |
Временный файл не
может быть удален из каталога,
указанного в filein |
После того как ведущий компьютер выдал код завершения, передача файла считается законченной. Далее ведущий компьютер может осуществлять передачу других файлов или прекратить сеанс.
В реализации Taylor UUCP команда E
используется для выполнения команд на
ведомом компьютере. Как уже отмечалось
ранее, для выполнения команд на ведомом
компьютере в UUCP используется передача
выполняемого файла с помощью команды S,
перед которым ставится X..
Когда ведомый компьютер принимает такой
файл, он выполняет команду uux
для принятого файла. В реализации Taylor UUCP
делается попытка улучшить эту процедуру
путем введения команды E.
Формат команды E
следующий:
E fileout filein user -options temp mode notify size command
Параметры fileout, filein, user, temp, mode, notify и size
работают точно так же, как и в команде S.
Отличия наблюдаются лишь в параметрах
команды -options,
которые представлены в табл. 9.9.
| Параметр | Описание |
|---|---|
C |
Файл с именем filein скопирован в рабочий каталог UUCP spool |
c |
Файл c с именем filein не был скопирован в рабочий каталог UUCP spool |
N |
Электронное сообщение с уведомлением о состоянии выполнения команды не высылать |
Z |
Выслать электронное сообщение с уведомлением о состоянии выполнения команды |
R |
Выслать
электронное сообщение с уведомлением о
состоянии выполнения команды на адрес,
указанный в параметре notify |
e |
Команда должна быть
выполнена с помощью /bin/sh,
а не uux |
А параметр command
задает команду Linux, которая должна
выполняться на ведомом компьютере. После
того как выдана команда E,
ведомый компьютер должен ответить на нее,
используя определенный код. Коды ответов E
идентичны кодам ответов S,
в них лишь первая буква заменяется на E.
Таким образом, когда ведущий компьютер
получает код ответа EY,
то считается, что обмен данными прошел
успешно. Далее ведущий компьютер
переводится в режим готовности к передаче
очередных данных или прекращает сеанс
работы.
Одним из средств заставить
ведомый хост передать файл на другой хост
является команда X.
С помощью команды X
на ведомом компьютере запускается команда uucp
с параметрами (см. раздел "Команды UUCP"
далее в этой лекции). Формат команды X
следующий:
X fileout filein user
Здесь fileout определяет
имя файла, который должен быть передан
ведомым компьютером с помощью команды uucp.
Параметр filein -
это имя файла и путь, по которому
ведомый компьютер должен доставить файл.
Здесь имеют силу соглашения о маршрутах UUCP
вида hostname!filename,
где hostname - имя
удаленного хост-компьютера. Таким образом,
ведущий компьютер может инициировать
передачу файла с ведомого компьютера на
другой удаленный хост-компьютер в сети UUCP.
Ведомый компьютер на данную
команду может выдавать только два кода
ответов. Код ответа XY
говорит о том, что команда принята и задание
поставлено в очередь на выполнение. Код
ответа XN означает,
что ведомый компьютер отказался выполнить
эту команду.
Для закрытия сеанса UUCP ведущим
компьютером используется команда H.
Она посылается ведомому компьютеру без
параметров и опций. Ведомый компьютер может
ответить на нее двумя кодами.
Код ответа HY
говорит о том, что ведомый компьютер
согласен прекратить сеанс и разорвать
соединение. Затем ведущий компьютер должен
повторить этот код ответа и разорвать
соединение.
Код ответа с ведомого компьютера говорит о том,
что он согласен прекратить текущий сеанс,
но желает начать новый сеанс с этим же
хостом, но уже в роли ведущего компьютера.
При этом ведомый компьютер принимает на
себя полномочия ведущего и выдает бывшему
ведущему команды на передачу файлов. После
завершения передачи новый ведущий
компьютер может послать команду H,
и тогда новый ведомый либо прекратит сеанс,
либо вновь произведет смену ролей и
организует новый сеанс (весьма похоже на
работу системы "клиент-сервер", не так ли?).
Закрытие соединения в UUCP -
ничего более, чем простая формальность в
протоколе. В этой фазе обе стороны
соглашаются закрыть UUCP-соединение (согласно
всем канонам связи). Как и в фазе
подтверждения открытия соединения, здесь
ведется обмен пакетами, начинающимися на 0x10
(шестнадцатеричное) и заканчивающимися
на 0x00 (шестнадцатеричное).
При этом ведущий компьютер инициирует
завершение соединения, посылая пакет с
шестью нулями ( 000000 ).
Если ведомый компьютер согласен закрыть
соединение, он также отвечает пакетом с
шестью нулями ( 000000 ).
С этого момента UUCP-соединение считается
закрытым, и модемная линия может быть
сброшена.
Чтобы более наглядно представить себе сложную структуру команд UUCP, рассмотрим листинг 9.1, где показан пример сеанса UUCP между ведущим и ведомым компьютерами.
1 SLAVE: Shere=ispmail 2 MASTER: Sshadrach 3 SLAVE: ROK 4 SLAVE: Pgi 5 MASTER: Ui 6 MASTER: S test1.txt /home/rich/test1.txt rich x 066 dummy 1000 7 SLAVE: SY 8 - data transfer begins -- 9 SLAVE: CY 10 MASTER: R /home/rich/test2.txt test2.txt rich 1500 11 SLAVE: RY 0666 12 - data transfer begins -- 13 SLAVE: CY 14 MASTER: H 15 SLAVE: HY 16 MASTER: 000000 17 SLAVE: 0000000
После того как ведущий хост открыл UUCP-соединение, ведомый хост-компьютер выдает приглашение в строке 1. На него в строке 2 ведущий хост отвечает сообщением о подтверждении открытия соединения. Далее в строке 4 ведомый хост запрашивает ведущего о типе протокола UUCP, который тот собирается использовать. Для этого ведомый хост выводит список поддерживаемых им протоколов. Как видите, в строке 5 ведущий хост выбрал тип протокола, по которому они будут работать в течение сеанса.
В строке 6 показано, как ведущий
хост с помощью команды S
посылает файл на ведомый компьютер. Далее, в
строке 7 ведомый компьютер соглашается
принять файл, и в строке 8 происходит
собственно передача файла. После ее
завершения, в строке 9 ведомый хост-компьютер
выдает код CY.
В строке 10 производится передача
еще одного файла, инициированная ведущим
компьютером. Ведомый хост соглашается в
строке 11 обработать и этот запрос. И далее, в
строке 12 происходит передача второго файла.
Когда передача файла завершена, в строке 13
ведомый компьютер выдает код успешного
завершения CY.
В строке 14 ведущий хост выдает запрос на закрытие UUCP-соединения, на что в строке 15 ведомый хост отвечает утвердительно. Далее, в строках 16 и 17 идет обмен стандартными пакетами на закрытие соединения. С этого момента UUCP-соединение закрыто, и модемное соединение сбрасывается.
В фазе подтверждения открытия соединения UUCP два компьютера договариваются о типе протокола UUCP, по которому они будут работать во время сеанса. В описании протокола UUCP говорилось о том, что его ядро можно инкапсулировать в другой протокол для сохранения целостности данных при передаче. Так, например, обычные телефонные линии имеют высокий уровень шумов, что требует более мощной процедуры для коррекции ошибок, чем алгоритм исправления ошибок в TCP/IP. Для реализации различных методов коррекции ошибок было разработано несколько типов протоколов UUCP. В табл. 9.10 представлены наиболее популярные из них, которые мы рассмотрим здесь более подробно.
| Протокол | Описание |
|---|---|
g |
Самый первый протокол UUCP. Предоставляет широкие возможности для коррекции ошибок |
i |
Обеспечивает высокоскоростную передачу данных одновременно в обоих направлениях |
t |
Используется для реализации UUCP через TCP/IP. Коррекция ошибок не обеспечивается |
e |
Еще одна реализация TCP/IP с применением управляющих пакетом в формате ASCII |
Протокол g
был первым протоколом, написанным для UUCP. Он
был разработан для передачи UUCP-пакетов по
зашумленным телефонным линиям с высоким
процентом ошибок с помощью низкоскоростных
модемов. Из всех протоколов UUCP протокол g имеет наиболее перегруженные
служебной информацией пакеты. Когда
компьютеры ведут переговоры о применении
того или иного протокола UUCP, этот протокол
часто выступает в роли общего знаменателя,
так как он поддерживается во всех
реализациях UUCP.
В протоколе g
используется шестибайтный заголовок,
который присоединяется к пакету UUCP. Кроме
обычных пакетов данных, в протоколе g
предусмотрены специальные управляющие
пакеты UUCP. С их помощью на основе параметров,
полученных во время подтверждения открытия
соединения, протокол g
может управлять UUCP-соединением. На рис. 9.3
представлен заголовок пакета протокола g.
(рис 9.3) Заголовок пакета протокола gВ протоколе g
в начале пакета применяется значение 0x10 (шестнадцатеричное),
позаимствованное из ядра протокола UUCP.
Далее следует значение К-байт.
Величина К-байт
показывает длину поля данных в пакете. Как
уже отмечалось ранее, в поле данных
протокола содержится ядро пакета UUCP. В табл. 9.11
представлены возможные значения К-байт.
| Значения К-байта | Длина поля данных (байт) |
1 |
32 |
2 |
64 |
3 |
128 |
4 |
256 |
5 |
512 |
6 |
1024 |
7 |
2048 |
8 |
4096 |
9 |
0 |
Особый случай представляет собой
значение К-байт,
равное 9. В этом
случае пакет протокола g
не содержит данных и представляет собой
управляющий пакет. Управляющие пакеты
помогают компьютерам организовать канал
связи и выполняют коррекцию ошибок для ядра
в пакетах UUCP.
Байты контрольной суммы используются для обнаружения ошибок в процессе передачи пакета. Для вычисления контрольной суммы пакета используется специальный алгоритм. Затем это значение включается в пакет. Принимая пакет, удаленный компьютер снова вычисляет значение контрольной суммы и сравнивает его с тем, что содержится в пакете.
Байт управления связан со
значением К-байт
и определяет назначение управляющего
пакета. Формат байта управления показан на
рис. 9.4. В зависимости от значения К-байт,
меняются и параметры в байте управления.
(рис 9.4) Формат байта управления в протоколе gЕсли же значение К-байт равно 9,
то байт управления определяет, какое
управляющее действие должно быть выполнено
на одном из двух компьютеров. Биты TT
установлены в 0, а биты XXX
представляют собой код операции управления.
В битах YYY
указывается значение операции управления.
В табл. 9.12 приведены возможные значения
битов XXX.
| Значение | Мнемоника | Описание |
|---|---|---|
1 |
CLOSE |
Уведомление
удаленного компьютера о том, что
передатчик желает закрыть UUCP-соединение.
Отметим, что это относится к завершению
соединения по протоколу g,
а не к завершению всего UUCP-соединения,
хотя, как правило, это приводит к
переходу в фазу подтверждения о
закрытии UUCP-соединения |
2 |
RJ |
Последний пакет был
принят неправильно. В битах YYY
отображается порядковый номер
последнего принятого пакета |
3 |
SRJ |
Пакет с
определенным порядковым номером принят
неправильно. Требуется повторить пакет.
В битах YYY
отображается порядковый номер
неправильно принятого пакета. Этот код
управления обычно в UUCP не используется |
4 |
RR |
Пакет с
определенным порядковым номером принят
правильно. В битах YYY
отображается порядковый номер
последнего принятого пакета |
5 |
INITC |
Идентифицирует
последний управляющий пакет в фазе
подтверждения установления соединения.
Ведущий и ведомый компьютер посылают
управляющий пакет INITC.
В битах YYY
отображается максимальный размер окна,
которое будет использоваться в пакете.
После того как компьютер принимает
пакет INITC
от другого компьютера, фаза
подтверждения установления соединения
в протоколе g
считается завершенной. |
6 |
INITB |
Идентифицирует
второй управляющий пакет при
подтверждении установления соединения.
Ведущий и ведомый компьютер посылают
управляющий пакет INITB.
В битах YYY
отображается наибольший размер пакета,
который может быть принят компьютером.
Значения здесь фактически идентичны
значениям К-байт
(со сдвигом на одно
значение). Таким образом, значение INITB,
равное 1, соответствует 64 байтам, 2 - 128
байтам и т.д. |
7 |
INITA |
Идентифицирует
начало фазы подтверждения установления
соединения в протоколе g.
Ведущий и ведомый компьютер посылают
управляющий пакет INITA.
Биты YYY
отображают максимальный размер окна,
которое может быть принято компьютером |
Если значение К-байт
меньше 9, то
байт управления выполняет другие функции. В
этом случае байт управления определяет тип
пакета данных. Например, если значение
битов ТТ равно 2,
то это - длинный пакет данных. Если биты ТТ
равны 3, то мы имеем дело с коротким пакетом
данных.
В длинном пакете данных биты XXX
и YYY байта
управления используются для указания
порядкового номера ( XXX )
пакета и номера уведомления ( YYY ).
Каждому пакету присваивается порядковый
номер и номер уведомления для того, чтобы
можно было отследить потерю пакетов.
Потерянные пакеты затем передаются
повторно. Все байты, следующие в пакете за
байтом управления (в зависимости от
значения K-байт ),
содержат данные. В них и заключается ядро
пакета UUCP.
Короткие пакеты данных имеют
незначительные отличия. Так, в них биты XXX
и YYY байта
управления используются для указания
порядкового номера пакета и номера
уведомления, но при этом первые два байта в
поле данных отображают разницу между
физическим и логическим размерами пакета.
Как показано в табл. 9.11, значение K-байт,
равное 1, указывает на то, что будет
посылаться пакет данных длиной 32 байта.
Если же у передатчика менее 32 байт данных,
то он должен использовать короткий пакет
данных. При этом первые два байта
отображают разницу между логическим
размером данных (32) и действительным
физическим размером данных.
Если это соотношение меньше 128, то
используется всего один байт из поля данных.
В противном случае из поля данных
используются два байта. Первый бит поля
данных показывает, сколько байт будет
использоваться для отображения
соотношения размеров. Если этот бит
установлен в 0,
используется один байт, а значение 1
указывает на то, что используется два байта.
Последний байт в заголовке
пакета протокола g
используется для обнаружения ошибок. В
качестве проверки на наличие ошибок в
заголовке используется байт XOR.
По сути, здесь производится операция "Исключающее
ИЛИ" над значением K-байт,
контрольной суммой и байтом управления. Эта
операция выполняется для последней
проверки на наличие ошибок в пакете
протокола g. Этот байт
используется в протоколе g
благодаря его способности работать на
зашумленных линиях с большим коэффициентом
ошибок.
Протокол i был
написан Яном Тейлором (Ian Taylor) для кадра Taylor
UUCP. Его работа в чем-то подобна протоколу g,
но в то же время в нем предусмотрена
возможность одновременной передачи данных
в обоих направлениях. Согласно протоколу i,
с целью увеличения пропускной способности,
когда это возможно, в кадре применяются
окна больших размеров. В протоколе i применяется пять различных типов
пакетов. В табл. 9.13 дается описание типов
пакетов протокола i.
| Тип пакета | Описание |
|---|---|
Data |
Пакет данных |
SYNC |
Пакет инициализации протокола |
ACK |
Пакет уведомления |
|
Пакет негативного уведомления |
SPOS |
Смена позиции файла |
CLOSE |
Закрытие сеанса UUCP |
Протокол t
используется для передачи пакетов UUCP через
соединение TCP/IP. Соединение по протоколу TCP/IP
предусматривает метод помещения пакетов в
очередь и коррекцию ошибок. Таким образом,
поддержка этих возможностей не входит в
функции протокола t. Для
передачи пакетов в протоколе t
применяются длинные блоки. Пакеты
управления кратны 512 байтам, в то же время
пакеты данных посылаются блоками, кратными
1024 байтам.
Подобно протоколу t,
протокол e также был
разработан для работы в сетях TCP/IP. В нем
также не выполняется коррекция ошибок или
постановка пакетов в очередь. Для передачи
пакетов управления в нем используется
обычный ASCII-текст. До передачи файла его
размеры посылаются в десятичном виде
принимающей стороне.
Наиболее популярной реализацией
протокола UUCP является протокол Taylor UUCP,
разработанный Яном Тейлором (Ian Taylor). Для
определения хостов UUCP, прав доступа,
модемов, сценариев для установления
соединения, а также параметров соединения в
протоколе Taylor UUCP используется набор файлов
конфигурации. В версиях ОС Linux Red Hat, Caldera и
Mandrake эти файлы находятся в каталоге /etc/uucp.
На рис. 9.5 представлена схема
взаимодействия файлов конфигурации. В
файлах конфигурации параметры для UUCP-соединения
задаются в текстовом виде в формате ASCII.
Для сервера под управлением ОС Linux функции ведущего или ведомого компьютера в UUCP-соединении также задаются в файлах конфигурации. Кроме того, в них задаются настройки для "неизвестного" хоста, что позволяет любому хосту подключаться к серверу UUCP и осуществлять с ним прием и передачу файлов в общедоступном каталоге. В последующих разделах мы подробнее остановимся на файлах конфигурации для Taylor UUCP.
(рис 9.5) Схема взаимодействия файлов конфигурации для Taylor UUCPВ файле config
задаются настройки config.
| Параметр | Описание |
|---|---|
hostname |
Задает имя узла UUCP |
nodename |
То же, что и hostname |
uuname |
То же, что и hostname |
spool |
Местонахождение каталога UUCP spool |
pubdir |
Местонахождение каталога UUCP public |
lockdir |
Местонахождение каталога UUCP lock |
unknown |
Команды из файла sys, разрешенные анонимным хостам UUCP |
max-uuqxts |
Максимальное количество запущенных параллельно процессов uuqxt |
run-uuxqt |
Запуск программы uuqxt по запросу uucico |
|
Текстовое описание режима работы |
v2-files |
Работа с файлами конфигурации UUCP версии 2 |
|
Работа с файлами конфигурации UUCP типа Honeydanber |
sysfile |
Местонахождение файла (или файлов) sys |
portfile |
Местонахождение файла (или файлов) port |
dialfile |
Местонахождение файла (или файлов) dial |
dialcodefile |
Местонахождение файла (или файлов) dialcode |
callfile |
Местонахождение файла (или файлов) call |
passwdfile |
Местонахождение файла (или файлов) passwd |
logfile |
Местонахождение файла (или файлов) UUCP log |
statfile |
Местонахождение файла (или файлов) UUCP stat |
debugfile |
Местонахождение файла (или файлов) UUCP debug |
debug |
Определение уровня отладки |
Параметры hostname, nodename и uuname являются синонимами и обычно
используется только один из них. Они
предназначены для задания имени узла UUCP
серверу под управлением ОС Linux.
Параметры spool, pubdir и lockdir
используются для изменения местоположения
каталога spool,
каталога public и
каталога lock от
заданных по умолчанию. В каталоге spool
временно хранятся файлы, предназначенные
для передачи или приема по UUCP перед их
отправкой в пункт назначения. В каталог public
удаленные хосты могут помещать (или брать
из него) файлы без специальных прав доступа.
В этом каталоге они имеют все необходимые
права для передачи и приема по UUCP. В
каталоге lock
находятся файлы lock.
Они предназначены для того, чтобы другие
процессы не смогли вызвать хост, занятый в
сеансе UUCP. С этой целью они и создаются при
вызове хоста UUCP.
Параметр unknown
определяет поведение анонимных хостов UUCP.
Если не задан список команд unknown,
то анонимные UUCP-соединения не разрешены.
Обычно за параметром unknown
следуют параметры файла sys,
в которых определяется поведение
анонимного хоста UUCP, подобно тому, как это
делается для обычного хоста UUCP. В файл config
параметры unknown
можно включать несколько раз. При работе с
электронной почтой через UUCP-соединение
этот параметр, как правило, не нужен.
Параметр unknown
может использоваться лишь для организации
доступа анонимным хостам UUCP к
общедоступному каталогу public.
Параметр
позволяет определять режим запуска других
файлов конфигурации. Обычно время запуска в
нем определяется в виде дня недели и часов,
когда разрешен доступ. Например, Tu0800-2000
означает, что доступ разрешен по вторникам
с 8 утра до 8 вечера. В команде можно также
задавать имя определенному интервалу
времени, например, таким образом:
timetable WorkHours Wk0800-1730
С помощью этой команды интервалу
времени с 8 утра до 17:30 вечера с понедельника
по пятницу присваивается имя WorkHours.
Затем это имя можно использовать в других
файлах конфигурации для задания временных
интервалов. В листинге 9.2 представлен
пример файла config.
nodename shadrach logfile /var/log/uucp
В строке 1 задается имя хоста UUCP
для локального компьютера, а в строке 2
задается местоположение файлов отчета UUCP.
Как правило, это все, что нужно для работы
файла config. Как
видите, не так уж сложно.
В файле sys
задаются хосты UUCP для сервера с ОС Linux.
Каждый удаленный хост имеет в файле sys отдельный раздел, где описываются
специфические параметры при подключении к
нему. В табл. 9.15 представлены параметры,
определяемые в файле sys.
| Параметр | Описание |
|---|---|
system |
Задает имя узла UUCP удаленной стороны |
alternate |
Определяет дополнительные параметры |
default-alternates |
Если установлен в false,
то не использовать дополнительные
параметры |
alias |
Определяет псевдоним для удаленной стороны |
mynarne |
Задает другое имя
|
time |
Определяет момент вызова системы |
timegrade |
Определяет интервалы времени запуска специфических заданий |
max-retries |
Определяет максимальное число попыток повторить соединение после обрыва |
success-wait |
Определяет интервал ожидания после успешного соединения |
call-timegrade |
Определяет класс специфических заданий, запускаемых в определенное время |
speed |
Устанавливает скорость соединения |
port |
Определяет тип
используемого порта из файла port |
phone |
Определяет номер для дозвона к удаленной системе |
chat |
Определяет сценарий для соединения с удаленной системой |
chat-timeout |
Устанавливает интервал ожидания при выполнении сценария дозвона |
chat-fail |
Определяет строки текста, выводимые при аварийном завершении сценария дозвона |
call-login |
Устанавливает
идентификатор пользователя при
выполнении процедуры входа в сценарии chat |
call-password |
Устанавливает
пароль при выполнении процедуры входа в
сценарии chat |
callback |
Определяет необходимость вызова локальной системы удаленной системой (обратный вызов) |
protocol |
Определяет протоколы UUCP, которые поддерживаются в системе |
send-request |
Разрешает удаленной системе запрашивать файлы с локальной системы |
receive-request |
Разрешает удаленной системе посылать файлы на локальную систему |
local-send |
Разрешает локальному пользователю посылать файлы из указанных каталогов удаленной системе |
remote-send |
Разрешает удаленному пользователю посылать файлы из указанных каталогов удаленной системе |
local-receive |
Разрешает локальному пользователю принимать файлы в указанные каталоги |
remote-receive |
Разрешает по
|
forward-to |
Определяет системы, которым могут пересылаться файлы |
forward-from |
Определяет системы, от которых могут приниматься файлы |
forward |
Определяет системы, которым и от которых могут пересылаться файлы |
commands |
Определяет список команд, обязательных для выполнения удаленной системой |
Параметр system
открывает раздел свойств для удаленного
узла. Далее каждое свойство удаленного узла
задается по порядку. Параметр port определяет в файле port
раздел, который отвечает за вызов удаленной
системы. В файле sys
для передачи электронной почты не
требуются параметры, описывающие права
доступа. Если параметром protocol
не задан список протоколов, то хосты UUCP
пытаются автоматически договориться о типе
протокола UUCP, который они будут
использовать в течение сеанса. Если оба
хоста поддерживают протокол Taylor UUCP, то
скорее всего они остановятся на протоколе i.
Протоколы, выбранные для сеанса, также
могут быть настроены с помощью набора
соответствующих параметров.
Параметр commands
полезен для проверки безопасности. Когда,
например, удаленный узел передает
электронную почту по UUCP, он отдает команду rmail
другому удаленному узлу. Чтобы ограничить
доступ в UUCP только обработкой почты, можно
команде rmail
разрешить запуск только от удаленной
системы. В листинге 9.3 представлен пример
файла sys.
system ispmail time Wk0800-1730 phone 555-1234 port modem1 speed 38400 chat ogin: shadrach word: guitar system isp2mail time Wk0800-1730 phone 555-4321 port modem2 speed 38400 chat ogin: backup word: bass
В листинге 9.3 представлены два
хоста UUCP, с которыми sys отведен
свой раздел. В каждом разделе, как видите,
задаются параметры подключения к
удаленному хосту UUCP.
Файл port используется
для задания способов подключения в сеансе
UUCP. В одном файле port
можно задавать сразу несколько портов.
Каждый раздел в файле, описывающий новый
порт, начинается с параметра port.
Параметры, имеющие силу для всех портов,
должны задаваться перед первым параметром port,
который встречается в файле. В табл. 9.16
представлены параметры, которые задаются в
файле port.
| Параметр | Описание |
|---|---|
port |
Определяет имя нового соединения |
type |
Определяет тип соединения |
protocol |
Определяет протокол, разрешенный для применения |
reliable |
Логическое значение для ведения переговоров о протоколе через ненадежное соединение |
|
Логическое значение, которое позволяет протоколам определить полудуплексное соединение |
device |
Определяет устройство в ОС Linux, которое работает с данным портом |
speed |
Определяет скорость порта |
carrier |
Логическое значение, которое определяет поддержку портом обнаружения несущей |
hardflow |
Логическое значение, которое определяет поддержку портом аппаратного управления потоком |
dialer |
Определяет, какую
программу дозвона использовать из файла dialer |
service |
Определяет, какой номер TCP-порта использовать при TCP-соединении |
command |
Определяет, какую команду использовать, если идет работа по порту конвейерного типа |
Задание параметров для каждого
порта начинается с параметра port.
В этом параметре задается имя порта
удаленного хоста, согласно файлу sys.
Параметр type
определяет тип порта. Возможные типы портов
представлены в табл. 9.17.
| Тип | Описание |
|---|---|
modem |
Модемное соединение |
stdin |
Порт со стандартным вводом-выводом |
direct |
Прямое соединение с удаленной системой (нуль-модем) |
tcp |
Соединение TCP/IP |
tli |
Соединение TLI |
pipe |
Соединение с использованием конвейера для другой программы |
Тип порта modem
применяется для идентификации модемного
соединения с удаленным хостом. Для
поддержки соединения, где в качестве
процедуры входа используется uucico
(см. раздел "Реализации протокола UUCP в ОС
Linux"), применяется тип порта stdin.
Для осуществления UUCP-соединения через
существующее TCP/IP-соединение используется
тип порта tcp.
Такое подключение может осуществляться
несколькими методами. Например, сервер
электронной почты на базе ОС Linux может
предоставить уже установленное РРР-соединение
для почтового сеанса по протоколу UUCP.
Конвейерный порт с типом pipe
может передавать управление UUCP-соединением
другой программе, указанной в параметре command.
В листинге 9.4. представлен пример файла port.
port modem1 type modem device /dev/ttyS0 speed 38400 dialer normal port modem2 type modem device /dev/ttyS1 speed 38400 dialer normal
Все порты, которые могут
использоваться в UUCP, указываются в файле port.
В листинге 9.4 показано, как
сконфигурировать два модема для работы с
UUCP. Обратите внимание на то, что каждый из
них имеет свое имя.
В файле dial
задаются параметры вызова удаленного хоста
модемом. Параметр dialer
определяет начало раздела в файле
конфигурации. Как и в файле port,
в каждом разделе задаются параметры вызова
удаленного хоста. В файл dial
может включаться несколько разделов. Все
они будут начинаться с параметра dialer.
Общие для всех хостов параметры должны
указываться перед первой записью с
параметром dialer. В
табл. 9.18 представлены параметры, которые
могут включаться в файл dial.
| Параметр | Описание |
|---|---|
dialer |
Определяет, какую программу дозвона использовать |
chat |
Определяет сценарий дозвона на удаленный хост |
chat-timeout |
Определяет интервал ожидания при выполнении сценария дозвона |
chat-fail |
Определяет строку, которая выдается в случае аварийного завершения сценария дозвона |
dialtone |
Строка, посылаемая на модем, для ожидания второго сигнала станции |
carrier |
Логическое значение, которое определяет поддержку модемом обнаружения несущей |
carrier-wait |
Определяет интервал ожидания несущей |
|
Логическое
значение, которое определяет, будет ли
хост сбрасывать сигнал |
complete-chat |
Определяет последовательность символов в сценарии, посылаемых при завершении сеанса UUCP |
В сценарии дозвона имеются
переменные, которые могут принимать
значения из других файлов конфигурации без
повторения их в файле dial.
В табл. 9.19 приведен список переменных,
которые могут использоваться в сценариях chat.
| Переменная | Описание |
|---|---|
\T |
Телефонный номер с трансляцией кода дозвона |
\D |
Телефонный номер без трансляции кода дозвона |
\M |
Несущая не требуется |
\m |
Несущая требуется |
В листинге 9.5 показан пример
файла dial, который
может использоваться для конфигурирования
Taylor UUCP.
dialer normal сhat "" ATZ OK ATDT\T CONNECT
В строке 1 определяется имя
программы дозвона, которое будет
использоваться далее в файле port.
Вторая строка определяет необходимый
сценарий для дозвона к удаленному хосту UUCP
через модем. Переменная \T
используется здесь для вставки номера
телефона, заданного в строке dial
в файле port.
После того как конфигурационные файлы созданы, ОС Linux практически готова для работы по UUCP с удаленными хостами. Однако для установления соединения и обмена данными в ОС Linux необходим определенный набор команд. Как мы знаем, стандартом для ОС Linux является пакет Taylor UUCP. В него входит набор команд, которые позволяют управлять протоколом UUCP. Некоторые команды зарезервированы для системного использования, но имеется набор команд, с помощью которых администратор может управлять UUCP-соединениями. Кроме того, если пользователям разрешено обмениваться файлами на сервере под управлением ОС Linux, то пакет для поддержки Taylor UUCP предоставляет и такую возможность.
Для обработки UUCP-запросов
применяется команда uucico.
Как правило, запросы формируются
пользователями, но некоторые запросы
генерируются самой системой. Функцией
команды uucico
является вызов удаленных хостов и
установление с ними UUCP-соединения для
передачи данных. Формат команды uucico
следующий:
uucico [options]
Когда команда uucico задана без параметров, то процесс
запускается в режиме ведомого и ожидает
появления запроса с удаленного устройства.
В ОС Linux для программы uucico
принято создавать отдельный идентификатор
пользователя, который она далее использует
в качестве оболочки по умолчанию. Это
позволяет удаленному хосту
регистрироваться на сервере и
автоматически устанавливать UUCP-соединение.
Параметры, используемые в команде uucico,
представлены в табл. 9.20.
| Параметр | Описание |
|---|---|
-r1 |
Запуск в режиме ведущего |
-r0 |
Запуск в режиме ведомого |
-s nodename |
Вызов системы с
именем nodename |
-S nodename |
Срочный вызов
системы с именем nodename,
период ожидания игнорируется |
-f |
Игнорируются все интервалы ожидания |
-l |
Регистрация с помощью идентификатора пользователя и пароля |
-p port |
Для вызова
использовать порт port |
-e |
Бесконечная петля приглашений для входа в систему в режиме ведомого |
-w |
После дозвона
ввести петлю с помощью -e |
-q |
Не запускать uuxqt
после завершения |
-c |
Если по расписанию вызовы не предусмотрены, не вызывать и не писать в файл отчета |
-C |
Вызывать только
системы, указанные параметрами -s
и -S |
-D |
После завершения не отключаться от терминала |
-u name |
Установить имя при
регистрации в системе в name |
-z |
Если вызов не
прошел, попытаться вызвать
альтернативные системы в соответствии с
файлом sys |
-i type |
Установить тип
порта в type |
-x type |
Включить режим
отладки типа type |
-I file |
Установить в
качестве файла config
файл с именем file |
-v |
Показать номер версии команды |
--help |
Вывод справки |
Для того чтобы начать сеанс UUCP с удаленным хостом, введите:
uucico -s nodename
Здесь nodename
идентифицирует имя удаленной системы.
Когда программа uucico запускается
в режиме хоста, система, в которой
используется пакет Taylor UUCP, обращается к
файлам конфигурации и начинает процесс
установки UUCP-соединения. Когда соединение
установлено, все задания на обмен данными
по UUCP будут обработаны соответствующим
образом.
Как правило, команда uuxqt
вызывается uucico после
успешного установления UUCP-соединения для
обработки всех команд uux.
Внесем ясность. Программа uux
помещает задания в очередь заданий UUCP,
где они и обрабатываются. Если для
подключения к удаленному хосту применялась
команда uucico, то
это, как правило, происходит автоматически.
Если в очереди много заданий, то
иногда может понадобиться индивидуальная
обработка наиболее важных заданий.
Наиболее важные задания можно выполнить
вручную, если в uucico
задан параметр -q.
Формат команды uuxqt
следующий:
uuxqt [options]
Если в команде uuxqt
не заданы параметры, то задания в буфере
UUCP обрабатываются в том порядке, как они
были помещены туда локальными или
удаленными пользователями. В табл. 9.21
представлены параметры, которые могут быть
заданы с командой uuxqt.
| Параметр | Описание |
|---|---|
-c command |
Запросы
выполняются только для команды command |
-s system |
Запросы
выполняются только для системы system |
-x type |
Включает режим
отладки типа type |
Для почтовых серверов особенно
полезен параметр -с.
Так, если задать команду rmail
с параметром -c, то
UUCP будет обрабатывать только почтовые
запросы. Таким образом, ни один файл не
покинет почтовый сервер и не будет принят
по UUCP. Программе rmail
запрещено передавать сообщения локальному
агенту для передачи почты, коим обычно
является программа sendmail
(см. лекцию 11, "Установка и конфигурирование
sendmail").
Команда uustat
является довольно мощным средством в
протоколе UUCP. Она может применяться
привилегированным пользователем root
для проверки файла spool
и получения отчета о заданиях как
находящихся в очереди, так и выполняющихся.
С ее помощью также можно удалять задания из
очереди или запускать новые задания. В
зависимости от выполняемых функций,
меняется и формат команды uustat.
Для просмотра всех файлов,
ожидающих в очереди на передачу,
используется параметр -a.
Параметр -K
используется для удаления заданий в UUCP.
Удаляемые задания можно идентифицировать
по идентификатору задания, по имени системы,
по имени пользователя или по другим
признакам. В листинге 9.6 представлен пример
работы команды uustat.
1 [rich@shadrach rich]$ uustat -a 2 ispmail.CLMcwusAADmB ispmail rich 10-02 06:57 Executing rmail Rich.Blum@isp.net (sending 387 bytes) 3 ispmail.CLNXU37AADmN ispmail rich 10-02 06:58 Executing rmail rich@smallorg.org (sending 390 bytes) 4 ispmail.CLOJEcNAADmT ispmail rich 10-02 06:59 Executing rmail prez@microsoft.com (sending 456 bytes) 5 ispmail.GLOpGOZAADmZ ispmail rich 10-02 06:59 Executing rmail postmaster@linux.org (sending 449 bytes) 6 [rich@shadrach rich]$
В строках 2–5 листинга 9.6 показан процесс постановки в очередь заданий на пересылку почты по UUCP. В первом поле указывается идентификатор задания. Во втором — удаленное имя хоста UUCP, а в третьем — имя пользователя, поместившего задание в очередь.
Команда uucp
используется пользователями для передачи
файлов пользователям удаленных
компьютеров. Формат команды uucp
следующий:
uucp [options] source destination
В роли source может
выступать имя локального или удаленного
файла. Имя файла на удаленной системе
должно быть указано в формате:
remotehost!filepath
Здесь в качестве remotehost
выступает имя хоста UUCP, на котором
находится файл. Если файл находится на
локальном компьютере, то указывать имя remotehost
не нужно. В качестве параметра destination может выступать имя файла или
каталога на локальном или удаленном
компьютере.
Успешное выполнение команды uucp
зависит от прав доступа, заданных в
файлах конфигурации UUCP, для пользователя,
который передает файл.
Команда uux
применяется для выполнения команд на
удаленном компьютере. Все заданные команды
помещаются в очередь UUCP в каталог spool
и выполняются, когда удаленный компьютер
вызывается на сеанс UUCP командой uucico.
Как правило, команда uux
воспринимается как обычный файл, если ей не
задан флаг выполняемого файла. На удаленном
компьютере эта команда выполняется
командой uuxqt.
Как уже упоминалось ранее, пакет
Taylor UUCP, написанный Яном Тейлором (Ian Taylor)
является, по сути, стандартом для систем на
базе ОС Linux. В большинство версий ОС Linux он
включен в виде бинарного пакета. Так, в
системе Mandrake Linux, CD с которой включен в эту
книгу, имеется файл uucp-1/05.i586.rpm.
Для установки его на своем компьютере
запустите программу инсталляции RPM с
правами пользователя root.
Если в имеющуюся у вас версию ОС
Linux не входит поддержка UUCP, то можно
получить исходный код программ с такой
поддержкой и скомпилировать его для работы
в вашей системе. Один из таких пакетов
находится на сервере sunsite.unc.edu
в каталоге /pub/Linux/systems/network/uucp.
Это файл uucp-1.05.tar.gz.
Если вы читаете эту книгу с начала, то уже
должны знать стандартную процедуру
установки и компиляции исходного кода в ОС
Linux. Все же напомним ее еще раз.
tar -zxvf uucp-1.05.tar.gz
uucp-1.05.configure,
которая создает Makefile
в соответствии с параметрами локальной
системы. Если нужно изменить
местоположение файлов конфигурации или
отчета UUCP, то это также можно сделать,
задав configure с
определенными параметрами. Наберите configure
-help, чтобы получить справку о
параметрах.make,
чтобы скомпилировать исходный код.root
утилиту make с
параметром install,
с помощью которой бинарные файлы
помещаются в соответствующие каталоги.После установки бинарных файлов можно начать конфигурирование UUCP. Для настройки работы сервера электронной почты под управлением ОС Linux с UUCP требуется определить набор исходных данных. К ним относятся метод и время дозвона до ведомого UUCP-компьютера. Ниже мы приведем несколько примеров конфигурирования сервера на базе ОС Linux для работы как ведущим, так и ведомым компьютером в сеансе UUCP. Как правило, ведущий UUCP компьютер вызывает хост UUCP (узел провайдера Internet) для отправки или доставки новой почты. Ведомый компьютер настраивается таким образом, чтобы он мог принимать UUCP-соединения от удаленного ведущего компьютера. Этот алгоритм может применяться в том случае, когда требуется передать почту с удаленного почтового сервера на главный почтовый сервер. На рис. 9.6 показана схема взаимодействия между ведущим и ведомым хостами в сеансе UUCP.
(рис 9.6) Схема взаимодействия ведущего и ведомого хостов в сеансе UUCP Прежде всего необходимо
выполнить настройки в файле config.
Эта задача довольно проста, так как обычно
изменять какие-либо параметры в этом файле
не требуется. В листинге 9.7 представлен
пример файла config
для клиента.
nodename shadrach
Далее следует сконфигурировать
файл sys, где
задаются параметры вызова удаленного хоста.
В листинге 9.8 представлен пример файла sys с параметрами для вызова хоста UUCP
провайдера Internet в рабочие часы с целью
проверки наличия почты.
system ispmail time Wk0800-1730 phone 555-1234 port modem speed 38480 chat ogin: shadrach word: guitar
Сценарий дозвона chat
определяет, какие строки должны быть
приняты в процессе установления соединения
и каким должен быть ответ. Таким образом,
происходит регистрация uucico
на удаленном сервере. Приведенный нами
сценарий подразумевает, что удаленный хост
UUCP в качестве оболочки по умолчанию будет
запускать uucico.
Если же это не так, то в сценарии указывают,
что необходимо дождаться приглашения
оболочки пользователя и лишь после этого
посылать команду uucico.
Затем нужно задать параметры в
файле port. В
листинге 9.9 представлен пример файла port, где описываются параметры модема.
port modem type modem device /dev/ttyS0 speed 38400 dialer normal
И последний файл конфигурации,
который нам понадобится, это файл dial.
В нем задаются параметры для связи с
определенным портом. В листинге 9.10
представлен пример файла dial.
dialer normal chat "" ATZ OK ATDT\T CONNECT
Чтобы проверить правильность
заданной конфигурации, пользователь,
обладающий правами root,
может набрать следующую команду:
uucico -f -x chat -s ispmail
С помощью этой команды вы
заставляете uucico
звонить на UUCP-систему с именем ispmail,
игнорируя все ограничения по времени, и
вести файл отчета для процесса chat.
По прошествии нескольких секунд вы должны
услышать, как модем набирает номер
удаленного сервера. Чтобы убедиться в
успешности соединения, можно также
проанализировать содержимое файла отчета
UUCP ( /var/log/uucp/Log ).
Соответствующие строки будут
присутствовать и в файле /var/log/uucp/Debug.
Теперь, когда вы убедились в том,
что UUCP-соединение работает нормально,
следующим шагом будет автоматизация этого
процесса. Лучше всего для этой цели
использовать стандартный для ОС Linux процесс cron. Программа cron выполняется в фоновом режиме и
считывает свой файл конфигурации, где
задается время запуска каждой программы.
Чтобы отредактировать файл конфигурации cron,
пользователь с правами root должен
задать команду:
cron -e
Затем добавьте в файл cron
строки, показанные в листинге 9.11.
4,9,14,19,24,29,34,39,44,49,54,59 * * * */usr/sbin/touch #196; /var/spool/uucp/ispmail/C./C.ispmailA0000 5,10,15,20,25,30,35,40,45,50,55 * * * */usr/sbin/uucico -s ispmail
В первой строке каждые 5 минут
создается файл, в котором uucico
указывается опросить удаленный узел. Во
второй строке запускается программа для
обработки заданий из очереди.
Вопросы перенаправления почты через UUCP-соединение на почтовый узел провайдера Internet более подробно рассмотрены в лекции 13, "Подключение почтового сервера к провайдеру Internet".
Ведомый компьютер в сеансе UUCP
ожидает появления запросов на установление
соединения от ведущих UUCP-компьютеров. И
снова нам понадобится файл конфигурации config.
Он представлен в листинге 9.12.
nodename ispmail
За ним следует файл конфигурации sys.
Поскольку ведомый компьютер не вызывает
удаленные системы и доступ к файловым
областям не предоставляется, то этот файл
имеет тривиальный вид. Пример файла sys показан в листинге 9.13.
system shadrach port dialin time Never commands rmail
В файле конфигурации port
для поддержки входящих соединений также
нет сложных настроек. Все клиенты при
подключении самостоятельно запускают
программу uucico,
так что в этом файле лишь нужно указать тип
соединения. Пример файла port представлен в листинге 9.14.
port dialin type stdin
Так как ведомый компьютер не
осуществляет вызов удаленных компьютеров,
то файл dial ему не
требуется. Далее нужно лишь создать
идентификатор пользователя для удаленной
системы, которая будет регистрироваться на
данном компьютере. Все идентификаторы
пользователей хранятся в файле /etc/passwd.
При этом, чтобы система автоматически
запускала UUCP по входному звонку, нужно
задать в качестве оболочки по умолчанию uucico.
Тогда строка в файле /etc/passwd
будет выглядеть примерно так:
shadrach:x:510:510:Remote UUCP host:/home/shadrach: /usr/sbin/uucico
Этой строкой мы разрешаем
удаленной системе shadrach
зарегистрироваться с именем shadrach
и автоматически запустить для нее
программу uucico.
Пользователь root должен
назначить идентификатору пользователя shadrach
пароль. Этот пароль не может быть изменен
удаленным хостом.
Один из относительно недорогих и безопасных способов подключения почтового сервера к провайдеру Internet — использование протокола UNIX to UNIX CoPy (UUCP). Хотя этот протокол — один из старейших, он остается высокоэффективным при передаче почты по модемным линиям без установления сетевого соединения. Многими провайдерами Internet поддерживается работа по протоколу UUCP для обмена электронной почтой. В ОС Linux UUCP реализован в пакете Taylor UUCP. Этот пакет состоит из конфигурационных файлов и выполняемых модулей и позволяет создавать полнофункциональный ведущий или ведомый UUCP-хост на базе почтового сервера под управлением ОС Linux. После установления соединения программное обеспечение для работы с почтой может быть настроено для маршрутизации почты по UUCP-соединению.
В этой лекции
В предыдущих лекциях были описаны основные способы передачи электронной почты от сервера на базе ОС Linux через сетевое соединение в сеть Internet. Иногда из соображений безопасности, из-за высокой стоимости подключения или по каким-либо другим причинам подключение почтового сервера организации к сети Internet с использованием IP-соединения не представляется возможным. К счастью, существует еще один относительно недорогой способ организации работы сервера электронной почты без установления IP-соединения.
Протокол копирования из одной UNIX-системы в другую (UNIX-to-UNIX CoPy (UUCP)) уже давно использовался для передачи сообщений и файлов между UNIX-хостами по телефонным линиям посредством модемов. В США был даже написан пакет протоколов и программ, которые обслуживали сеть UNIX-компьютеров по всей стране. Однако с развитием сети Internet популярность UUCP сошла на нет. Сегодня многие снова возвращаются к использованию UUCP, так как этот протокол обеспечивает высокий уровень безопасности передачи электронной почты при небольшой цене.
При подключении сервера электронной почты по протоколу UUCP отсутствует прямое соединение с сетью Internet. Таким образом, злоумышленник не сможет подключиться к вашему серверу через UUCP-соединение с помощью Telnet или использовать любой другой тип сетевой атаки. Дело в том, что при использовании UUCP никакие программы на локальном сервере не запускаются, если только вы не разрешите своему провайдеру Internet обратное. Кроме того, программное обеспечение UUCP позволяет жестко контролировать все попытки соединения между двумя компьютерами.
Многие предприятия в настоящее время в дополнение к имеющимся РРР-соединениям используют протокол UUCP для передачи электронной почты. Например, если у предприятия имеется большой IP-трафик (Web, FTP) и нежелательно перегружать РРР-соединение передачей дополнительного трафика, такого как электронная почта, то на выручку приходит протокол UUCP. Тогда вместо закупки большей полосы пропускания для РРР, можно просто оплатить недорогое коммутируемое UUCP-соединение с провайдером Internet, которое будет обслуживать систему электронной почты предприятия, при этом остальной IP-трафик полностью использует полосу РРР-соединения.
В этой лекции мы подробно рассмотрим протоколы, используемые в UUCP-соединении. Очевидно, что при организации UUCP-соединения желательно говорить с провайдером на одном языке. Кроме того, в этой лекции рассматривается наиболее популярный пакет для работы с UUCP в ОС Linux - Taylor UUCP. Приводятся примеры конфигурационных файлов для реализации функций клиента и сервера UUCP на почтовом сервере под управлением ОС Linux.
Протокол UUCP был разработан в конце 70-х годов Майком Леском (Mike Lesk) в лаборатории компании ATT Bell. Изначально он предназначался для передачи файлов и электронных сообщений между двумя UNIX-компьютерами. Соединение по протоколу UUCP включает в себя три фазы:
Поскольку протокол UUCP был разработан еще до появления концепции "клиент-сервер", его терминология несколько отличается от общепринятой. То, что сегодня мы называем сервером в терминах UUCP называется UUCP-ведомым ( slave ), а клиент называется UUCP-ведущим или главным ( master ), так как он управляет соединением в сеансе UUCP (рис. 9.1). Любой компьютер может начать соединение по UUCP. Какой из двух компьютеров будет ведущим, а какой ведомым, определяется при подтверждении открытия соединения. И конечно же, специально, чтобы еще больше все запутать, компьютеры в течение сеанса UUCP могут меняться ролями ведущий-ведомый.
(рис 9.1) Фазы в сеансе UUCPПри подтверждении открытия
соединения оба компьютера опираются на
основные правила, касающиеся связи по UUCP. В
течение фазы подтверждения открытия
соединения посылается специальный пакет,
который начинается символом
шестнадцатеричное 0x10
и заканчивается символом
шестнадцатеричное 0x00.
Когда ведущий компьютер вызывает ведомый,
тот должен ответить определенным пакетом:
Shere=hostname,
где hostname -
UUCP-имя ведомого компьютера. UUCP-имя не имеет
ничего общего с именем компьютера согласно
системе DNS, хотя делаются попытки
согласовать эти две системы имен путем
введения в сети Internet специального домена uucp.
Итак, ведущий компьютер, получив имя
ведомого компьютера, должен ответить ему
следующим образом:
Shostname=options,
где hostname -
это уже UUCP-имя ведущего компьютера, а options -
параметры, которые определяются двумя
хостами. Все эти параметры представлены в
табл. 9.1.
| Параметр | Описание |
|---|---|
-Qseq |
Определяет вызов номера последовательности seq |
-xlevel |
Устанавливает режим отладки на ведомом компьютере равным level |
-pgrade |
Устанавливает ведомому компьютеру режим передачи файлов только с приоритетом или выше |
-N |
Сигнализирует о том, что ведущий компьютер воспринимает расширения в соответствии с Taylor UUCP |
Ведомый компьютер, в свою очередь, должен ответить на параметр, заданный ведущим, определенным кодом. Коды ответов ведомого компьютера представлены в табл. 9.2.
| Код ответа | Описание |
|---|---|
ROK |
Параметры опознаны |
ROKN |
То же, что и ROK, но принимаются расширения в соответствии с Taylor UUCP |
RLCK |
На ведомом компьютере ведущий с данным именем заблокирован - невозможно продолжить сеанс |
RCB |
Ведомый компьютер сбросит соединение и инициирует его в качестве ведущего |
RBADSEQ |
Номер последовательности в параметре -Q не опознан - попытка несанкционированного доступа |
RLOGIN |
Ведущий компьютер зарегистрировался на ведомом с ошибочным идентификатором входа в систему |
RYou are unknown to me |
В файлах config ведомого компьютера отсутствуют сведения о ведущем компьютере |
Если ведомый компьютер в ответе
использовал код ROK
или ROKN, то
начинается следующий этап подтверждения
открытия соединения. Если ведущий
компьютер получил какой-либо другой код
ответа, то он прекращает попытку соединения.
Следующий этап подтверждения
открытия соединения заключается в
согласовании параметров протокола UUCP двумя
сторонами. На протяжении многих лет было
разработано несколько методов
инкапсуляции ядра протокола UUCP. Всем
протоколам были присвоены буквы - от A до
Z. Оригинальному протоколу UUCP была
присвоена буква g.
В то же время пакет Taylor UUCP, работая с таким
же пакетом на другой машине, использует
протокол i. В
начале обмена ведомый компьютер посылает
пакет:
Pprotocollist
Здесь под protocollist
подразумевается список протоколов (в
буквенном понимании), которые он
поддерживает. Если ведущий компьютер
обнаруживает в списке поддерживаемый им
протокол, он отвечает пакетом:
Uprotocol,
где protocol -
буквенное обозначение протокола, который
ведущий компьютер желает использовать во
время сеанса. Если не был найден приемлемый
протокол для продолжения сеанса, то ведущий
компьютер должен вернуть ответ типа UN
и завершить соединение. Затем, после
того как тип протокола выбран, компьютеры
должны провести переговоры об
индивидуальном протоколе (см. раздел "Типы
протоколов UUCP" далее в этой лекции). После
завершения переговоров фаза подтверждения
открытия соединения окончена и начинается
фаза передачи данных.
Как уже упоминалось ранее, ведущий компьютер управляет потоком данных, которые передаются через UUCP-соединение. После завершения фазы подтверждения открытия соединения ведущий компьютер берет управление сеансом на себя и выдает ведомому команды. Для управления работой ведомого компьютера имеется пять команд. Они показаны на рис. 9.2 с направлением действия.
(рис 9.2) Команды передачи данных в UUCPДля передачи файла с ведущего
компьютера на ведомый используется команда S. Ведомый
компьютер может либо принять запрос на
передачу файла, либо отклонить его. Формат
команды S
следующий:
S fileout filein user -options temp mode notify size
fileout - имя
файла, который ведущий компьютер
собирается передать. Перед файлами, которые
находятся в рабочем каталоге пользователя,
ставится ~USER/, а
перед файлами, которые находятся в общей
области UUCP, - ~/.
filein - имя
файла, под которым ведомый компьютер должен
сохранить принятый файл. Если имя файла
начинается с X., то
это означает выполняемый файл, который
будет запущен на ведомом компьютере с
помощью команды uux.
Если же перед именем файла стоит D.,
то это значит, что файл данных будет
использоваться выполняемым файлом.
Имя пользователя, запросившего
передачу файла, указывается в параметре user.
Дополнительные параметры для
передачи файла можно задать с помощью
параметра -options.
Все значения этого параметра указаны ниже в
табл. 9.3.
| Параметр | Описание |
|---|---|
C |
Файл следует
сохранить в каталог UUCP spool
ведомого компьютера |
c |
Файл следует
сохранить, как указано в filein |
d |
Создать на ведомом
компьютере каталог согласно filein |
f |
Не создавать на ведомом компьютере каталоги и прервать передачу |
m |
Ведущий компьютер после передачи файла передает почту |
n |
После передачи файла ведомый
компьютер должен послать почтовое
сообщение на адрес, указанный в
параметре notify |
Параметр temp -
это имя временного файла в каталоге UUCP spool,
если задан параметр C.
В другом случае параметр temp
не требуется и удаляется после успешной
передачи файла.
Параметр mode
представляет собой восьмеричное число,
которое отображает 0666, т.е.
чтение/запись для пользователя, группы и
всех других пользователей системы. Однако
файл в служебной области UUCP (каталог spool )
может иметь режим доступа 0600, чтобы другие пользователи не могли
читать файл или записывать в него.
Почтовый адрес, который задается
в параметре notify
используется для посылки уведомления. Если
не указан пользователь для уведомления, но
задан параметр size,
то параметру notify
задается пустое значение ""
или dummy.
Параметр size
используется в Taylor UUCP для указания размера
передаваемого файла (в байтах).
После того как выдана команда S,
ведомый компьютер должен ответить на нее
для определения дальнейших условий
передачи. Все ответы на команду S
также начинаются на S.
В табл. 9.4 показаны возможные коды
ответов на команду S.
| Код ответа | Описание |
|---|---|
SY |
Все параметры опознаны; начать передачу файла |
SN2 |
Передача файла не будет успешно закончена |
SN4 |
Ведомый компьютер не может создать временный файл для данного сеанса |
SN6 |
Используется в Taylor UUCP; ведомый компьютер сообщает о том, что файл слишком большой и он не может его сохранить на данный момент |
SN7 |
Используется в Taylor UUCP; ведомый компьютер сообщает о том, что файл слишком большой и он не сможет его передать |
Если на команду S получен ответ SY,
то ведущий компьютер начинает передачу
данных по протоколу, определенному в фазе
подтверждения открытия соединения. Затем,
после передачи файла, ведомый компьютер
должен выдать код, сообщающий о состоянии
передачи. В табл. 9.5 указаны возможные
коды завершения передачи данных по команде S.
| Код | Описание |
|---|---|
CY |
Передача файла завершена успешно |
CN5 |
Временный файл не
может быть удален из каталога,
указанного в filein |
После того как ведущий компьютер получил код завершения от ведомого, передача данных заканчивается и ведущий компьютер готов к передаче другого блока данных или к прекращению сеанса UUCP.
Команда R
используется ведущим компьютером для
приема файлов от ведомого компьютера.
Формат этой команды следующий:
R fileout filein user -option size
Здесь fileout -
имя файла на ведомом компьютере. Этот
файл не обязательно должен находиться в
общей области UUCP - каталоге spool. Кроме
того, для обозначения всех файлов из
каталога разрешено использовать
обобщающий символ ( * ).
Соответственно, filein - это имя файла, под которым
ведущий компьютер должен сохранить
принятый файл.
Имя пользователя, запросившего
прием файла, указывается в параметре user.
Дополнительные параметры для
приема файла можно задать с помощью
параметра -options.
Значения этого параметра приведены в табл. 9.6.
| Параметр | Описание |
|---|---|
d |
Ведущий компьютер
должен создать каталоги согласно filein |
f |
Ведущий компьютер
не должен создавать каталоги согласно filein и прием должен быть
прерван |
m |
Ведущий компьютер должен выслать по электронной почте уведомление после окончания приема файла |
Параметр size показывает наибольший размер файла,
который ведущий компьютер сможет принять
от ведомого.
На команду R
ведомый компьютер должен ответить
специальным кодом, который отображает
состояние передачи файла. Коды ответов
ведомого компьютера на команду R
представлены в табл. 9.7.
| Код ответа | Описание |
|---|---|
RY mode |
Ведомым
компьютером файл передан успешно.
Параметр mode
указывает, что права доступа к файлу fileout
должны быть перенесены на filein |
RN2 |
Ведомый компьютер не смог передать файл. Возможные причины: файл не существует или не соответствуют права доступа к файлу |
RN6 |
Используется в Taylor UUCP. Сигнализирует о том, что размер файла превысил отведенный ему лимит |
Если получен код ответа RY, то ведомый компьютер начинает
передачу файла ведущему по оговоренному UUCP-протоколу.
По окончании передачи ведущий компьютер
посылает ведомому код завершения. В табл. 9.8
приведены возможные коды завершения.
| Код | Описание |
|---|---|
CY |
Файл принят успешно |
CN5 |
Временный файл не
может быть удален из каталога,
указанного в filein |
После того как ведущий компьютер выдал код завершения, передача файла считается законченной. Далее ведущий компьютер может осуществлять передачу других файлов или прекратить сеанс.
В реализации Taylor UUCP команда E
используется для выполнения команд на
ведомом компьютере. Как уже отмечалось
ранее, для выполнения команд на ведомом
компьютере в UUCP используется передача
выполняемого файла с помощью команды S,
перед которым ставится X..
Когда ведомый компьютер принимает такой
файл, он выполняет команду uux
для принятого файла. В реализации Taylor UUCP
делается попытка улучшить эту процедуру
путем введения команды E.
Формат команды E
следующий:
E fileout filein user -options temp mode notify size command
Параметры fileout, filein, user, temp, mode, notify и size
работают точно так же, как и в команде S.
Отличия наблюдаются лишь в параметрах
команды -options,
которые представлены в табл. 9.9.
| Параметр | Описание |
|---|---|
C |
Файл с именем filein скопирован в рабочий каталог UUCP spool |
c |
Файл c с именем filein не был скопирован в рабочий каталог UUCP spool |
N |
Электронное сообщение с уведомлением о состоянии выполнения команды не высылать |
Z |
Выслать электронное сообщение с уведомлением о состоянии выполнения команды |
R |
Выслать
электронное сообщение с уведомлением о
состоянии выполнения команды на адрес,
указанный в параметре notify |
e |
Команда должна быть
выполнена с помощью /bin/sh,
а не uux |
А параметр command
задает команду Linux, которая должна
выполняться на ведомом компьютере. После
того как выдана команда E,
ведомый компьютер должен ответить на нее,
используя определенный код. Коды ответов E
идентичны кодам ответов S,
в них лишь первая буква заменяется на E.
Таким образом, когда ведущий компьютер
получает код ответа EY,
то считается, что обмен данными прошел
успешно. Далее ведущий компьютер
переводится в режим готовности к передаче
очередных данных или прекращает сеанс
работы.
Одним из средств заставить
ведомый хост передать файл на другой хост
является команда X.
С помощью команды X
на ведомом компьютере запускается команда uucp
с параметрами (см. раздел "Команды UUCP"
далее в этой лекции). Формат команды X
следующий:
X fileout filein user
Здесь fileout определяет
имя файла, который должен быть передан
ведомым компьютером с помощью команды uucp.
Параметр filein -
это имя файла и путь, по которому
ведомый компьютер должен доставить файл.
Здесь имеют силу соглашения о маршрутах UUCP
вида hostname!filename,
где hostname - имя
удаленного хост-компьютера. Таким образом,
ведущий компьютер может инициировать
передачу файла с ведомого компьютера на
другой удаленный хост-компьютер в сети UUCP.
Ведомый компьютер на данную
команду может выдавать только два кода
ответов. Код ответа XY
говорит о том, что команда принята и задание
поставлено в очередь на выполнение. Код
ответа XN означает,
что ведомый компьютер отказался выполнить
эту команду.
Для закрытия сеанса UUCP ведущим
компьютером используется команда H.
Она посылается ведомому компьютеру без
параметров и опций. Ведомый компьютер может
ответить на нее двумя кодами.
Код ответа HY
говорит о том, что ведомый компьютер
согласен прекратить сеанс и разорвать
соединение. Затем ведущий компьютер должен
повторить этот код ответа и разорвать
соединение.
Код ответа с ведомого компьютера говорит о том,
что он согласен прекратить текущий сеанс,
но желает начать новый сеанс с этим же
хостом, но уже в роли ведущего компьютера.
При этом ведомый компьютер принимает на
себя полномочия ведущего и выдает бывшему
ведущему команды на передачу файлов. После
завершения передачи новый ведущий
компьютер может послать команду H,
и тогда новый ведомый либо прекратит сеанс,
либо вновь произведет смену ролей и
организует новый сеанс (весьма похоже на
работу системы "клиент-сервер", не так ли?).
Закрытие соединения в UUCP -
ничего более, чем простая формальность в
протоколе. В этой фазе обе стороны
соглашаются закрыть UUCP-соединение (согласно
всем канонам связи). Как и в фазе
подтверждения открытия соединения, здесь
ведется обмен пакетами, начинающимися на 0x10
(шестнадцатеричное) и заканчивающимися
на 0x00 (шестнадцатеричное).
При этом ведущий компьютер инициирует
завершение соединения, посылая пакет с
шестью нулями ( 000000 ).
Если ведомый компьютер согласен закрыть
соединение, он также отвечает пакетом с
шестью нулями ( 000000 ).
С этого момента UUCP-соединение считается
закрытым, и модемная линия может быть
сброшена.
Чтобы более наглядно представить себе сложную структуру команд UUCP, рассмотрим листинг 9.1, где показан пример сеанса UUCP между ведущим и ведомым компьютерами.
1 SLAVE: Shere=ispmail 2 MASTER: Sshadrach 3 SLAVE: ROK 4 SLAVE: Pgi 5 MASTER: Ui 6 MASTER: S test1.txt /home/rich/test1.txt rich x 066 dummy 1000 7 SLAVE: SY 8 - data transfer begins -- 9 SLAVE: CY 10 MASTER: R /home/rich/test2.txt test2.txt rich 1500 11 SLAVE: RY 0666 12 - data transfer begins -- 13 SLAVE: CY 14 MASTER: H 15 SLAVE: HY 16 MASTER: 000000 17 SLAVE: 0000000
После того как ведущий хост открыл UUCP-соединение, ведомый хост-компьютер выдает приглашение в строке 1. На него в строке 2 ведущий хост отвечает сообщением о подтверждении открытия соединения. Далее в строке 4 ведомый хост запрашивает ведущего о типе протокола UUCP, который тот собирается использовать. Для этого ведомый хост выводит список поддерживаемых им протоколов. Как видите, в строке 5 ведущий хост выбрал тип протокола, по которому они будут работать в течение сеанса.
В строке 6 показано, как ведущий
хост с помощью команды S
посылает файл на ведомый компьютер. Далее, в
строке 7 ведомый компьютер соглашается
принять файл, и в строке 8 происходит
собственно передача файла. После ее
завершения, в строке 9 ведомый хост-компьютер
выдает код CY.
В строке 10 производится передача
еще одного файла, инициированная ведущим
компьютером. Ведомый хост соглашается в
строке 11 обработать и этот запрос. И далее, в
строке 12 происходит передача второго файла.
Когда передача файла завершена, в строке 13
ведомый компьютер выдает код успешного
завершения CY.
В строке 14 ведущий хост выдает запрос на закрытие UUCP-соединения, на что в строке 15 ведомый хост отвечает утвердительно. Далее, в строках 16 и 17 идет обмен стандартными пакетами на закрытие соединения. С этого момента UUCP-соединение закрыто, и модемное соединение сбрасывается.
В фазе подтверждения открытия соединения UUCP два компьютера договариваются о типе протокола UUCP, по которому они будут работать во время сеанса. В описании протокола UUCP говорилось о том, что его ядро можно инкапсулировать в другой протокол для сохранения целостности данных при передаче. Так, например, обычные телефонные линии имеют высокий уровень шумов, что требует более мощной процедуры для коррекции ошибок, чем алгоритм исправления ошибок в TCP/IP. Для реализации различных методов коррекции ошибок было разработано несколько типов протоколов UUCP. В табл. 9.10 представлены наиболее популярные из них, которые мы рассмотрим здесь более подробно.
| Протокол | Описание |
|---|---|
g |
Самый первый протокол UUCP. Предоставляет широкие возможности для коррекции ошибок |
i |
Обеспечивает высокоскоростную передачу данных одновременно в обоих направлениях |
t |
Используется для реализации UUCP через TCP/IP. Коррекция ошибок не обеспечивается |
e |
Еще одна реализация TCP/IP с применением управляющих пакетом в формате ASCII |
Протокол g
был первым протоколом, написанным для UUCP. Он
был разработан для передачи UUCP-пакетов по
зашумленным телефонным линиям с высоким
процентом ошибок с помощью низкоскоростных
модемов. Из всех протоколов UUCP протокол g имеет наиболее перегруженные
служебной информацией пакеты. Когда
компьютеры ведут переговоры о применении
того или иного протокола UUCP, этот протокол
часто выступает в роли общего знаменателя,
так как он поддерживается во всех
реализациях UUCP.
В протоколе g
используется шестибайтный заголовок,
который присоединяется к пакету UUCP. Кроме
обычных пакетов данных, в протоколе g
предусмотрены специальные управляющие
пакеты UUCP. С их помощью на основе параметров,
полученных во время подтверждения открытия
соединения, протокол g
может управлять UUCP-соединением. На рис. 9.3
представлен заголовок пакета протокола g.
(рис 9.3) Заголовок пакета протокола gВ протоколе g
в начале пакета применяется значение 0x10 (шестнадцатеричное),
позаимствованное из ядра протокола UUCP.
Далее следует значение К-байт.
Величина К-байт
показывает длину поля данных в пакете. Как
уже отмечалось ранее, в поле данных
протокола содержится ядро пакета UUCP. В табл. 9.11
представлены возможные значения К-байт.
| Значения К-байта | Длина поля данных (байт) |
1 |
32 |
2 |
64 |
3 |
128 |
4 |
256 |
5 |
512 |
6 |
1024 |
7 |
2048 |
8 |
4096 |
9 |
0 |
Особый случай представляет собой
значение К-байт,
равное 9. В этом
случае пакет протокола g
не содержит данных и представляет собой
управляющий пакет. Управляющие пакеты
помогают компьютерам организовать канал
связи и выполняют коррекцию ошибок для ядра
в пакетах UUCP.
Байты контрольной суммы используются для обнаружения ошибок в процессе передачи пакета. Для вычисления контрольной суммы пакета используется специальный алгоритм. Затем это значение включается в пакет. Принимая пакет, удаленный компьютер снова вычисляет значение контрольной суммы и сравнивает его с тем, что содержится в пакете.
Байт управления связан со
значением К-байт
и определяет назначение управляющего
пакета. Формат байта управления показан на
рис. 9.4. В зависимости от значения К-байт,
меняются и параметры в байте управления.
(рис 9.4) Формат байта управления в протоколе gЕсли же значение К-байт равно 9,
то байт управления определяет, какое
управляющее действие должно быть выполнено
на одном из двух компьютеров. Биты TT
установлены в 0, а биты XXX
представляют собой код операции управления.
В битах YYY
указывается значение операции управления.
В табл. 9.12 приведены возможные значения
битов XXX.
| Значение | Мнемоника | Описание |
|---|---|---|
1 |
CLOSE |
Уведомление
удаленного компьютера о том, что
передатчик желает закрыть UUCP-соединение.
Отметим, что это относится к завершению
соединения по протоколу g,
а не к завершению всего UUCP-соединения,
хотя, как правило, это приводит к
переходу в фазу подтверждения о
закрытии UUCP-соединения |
2 |
RJ |
Последний пакет был
принят неправильно. В битах YYY
отображается порядковый номер
последнего принятого пакета |
3 |
SRJ |
Пакет с
определенным порядковым номером принят
неправильно. Требуется повторить пакет.
В битах YYY
отображается порядковый номер
неправильно принятого пакета. Этот код
управления обычно в UUCP не используется |
4 |
RR |
Пакет с
определенным порядковым номером принят
правильно. В битах YYY
отображается порядковый номер
последнего принятого пакета |
5 |
INITC |
Идентифицирует
последний управляющий пакет в фазе
подтверждения установления соединения.
Ведущий и ведомый компьютер посылают
управляющий пакет INITC.
В битах YYY
отображается максимальный размер окна,
которое будет использоваться в пакете.
После того как компьютер принимает
пакет INITC
от другого компьютера, фаза
подтверждения установления соединения
в протоколе g
считается завершенной. |
6 |
INITB |
Идентифицирует
второй управляющий пакет при
подтверждении установления соединения.
Ведущий и ведомый компьютер посылают
управляющий пакет INITB.
В битах YYY
отображается наибольший размер пакета,
который может быть принят компьютером.
Значения здесь фактически идентичны
значениям К-байт
(со сдвигом на одно
значение). Таким образом, значение INITB,
равное 1, соответствует 64 байтам, 2 - 128
байтам и т.д. |
7 |
INITA |
Идентифицирует
начало фазы подтверждения установления
соединения в протоколе g.
Ведущий и ведомый компьютер посылают
управляющий пакет INITA.
Биты YYY
отображают максимальный размер окна,
которое может быть принято компьютером |
Если значение К-байт
меньше 9, то
байт управления выполняет другие функции. В
этом случае байт управления определяет тип
пакета данных. Например, если значение
битов ТТ равно 2,
то это - длинный пакет данных. Если биты ТТ
равны 3, то мы имеем дело с коротким пакетом
данных.
В длинном пакете данных биты XXX
и YYY байта
управления используются для указания
порядкового номера ( XXX )
пакета и номера уведомления ( YYY ).
Каждому пакету присваивается порядковый
номер и номер уведомления для того, чтобы
можно было отследить потерю пакетов.
Потерянные пакеты затем передаются
повторно. Все байты, следующие в пакете за
байтом управления (в зависимости от
значения K-байт ),
содержат данные. В них и заключается ядро
пакета UUCP.
Короткие пакеты данных имеют
незначительные отличия. Так, в них биты XXX
и YYY байта
управления используются для указания
порядкового номера пакета и номера
уведомления, но при этом первые два байта в
поле данных отображают разницу между
физическим и логическим размерами пакета.
Как показано в табл. 9.11, значение K-байт,
равное 1, указывает на то, что будет
посылаться пакет данных длиной 32 байта.
Если же у передатчика менее 32 байт данных,
то он должен использовать короткий пакет
данных. При этом первые два байта
отображают разницу между логическим
размером данных (32) и действительным
физическим размером данных.
Если это соотношение меньше 128, то
используется всего один байт из поля данных.
В противном случае из поля данных
используются два байта. Первый бит поля
данных показывает, сколько байт будет
использоваться для отображения
соотношения размеров. Если этот бит
установлен в 0,
используется один байт, а значение 1
указывает на то, что используется два байта.
Последний байт в заголовке
пакета протокола g
используется для обнаружения ошибок. В
качестве проверки на наличие ошибок в
заголовке используется байт XOR.
По сути, здесь производится операция "Исключающее
ИЛИ" над значением K-байт,
контрольной суммой и байтом управления. Эта
операция выполняется для последней
проверки на наличие ошибок в пакете
протокола g. Этот байт
используется в протоколе g
благодаря его способности работать на
зашумленных линиях с большим коэффициентом
ошибок.
Протокол i был
написан Яном Тейлором (Ian Taylor) для кадра Taylor
UUCP. Его работа в чем-то подобна протоколу g,
но в то же время в нем предусмотрена
возможность одновременной передачи данных
в обоих направлениях. Согласно протоколу i,
с целью увеличения пропускной способности,
когда это возможно, в кадре применяются
окна больших размеров. В протоколе i применяется пять различных типов
пакетов. В табл. 9.13 дается описание типов
пакетов протокола i.
| Тип пакета | Описание |
|---|---|
Data |
Пакет данных |
SYNC |
Пакет инициализации протокола |
ACK |
Пакет уведомления |
|
Пакет негативного уведомления |
SPOS |
Смена позиции файла |
CLOSE |
Закрытие сеанса UUCP |
Протокол t
используется для передачи пакетов UUCP через
соединение TCP/IP. Соединение по протоколу TCP/IP
предусматривает метод помещения пакетов в
очередь и коррекцию ошибок. Таким образом,
поддержка этих возможностей не входит в
функции протокола t. Для
передачи пакетов в протоколе t
применяются длинные блоки. Пакеты
управления кратны 512 байтам, в то же время
пакеты данных посылаются блоками, кратными
1024 байтам.
Подобно протоколу t,
протокол e также был
разработан для работы в сетях TCP/IP. В нем
также не выполняется коррекция ошибок или
постановка пакетов в очередь. Для передачи
пакетов управления в нем используется
обычный ASCII-текст. До передачи файла его
размеры посылаются в десятичном виде
принимающей стороне.
Наиболее популярной реализацией
протокола UUCP является протокол Taylor UUCP,
разработанный Яном Тейлором (Ian Taylor). Для
определения хостов UUCP, прав доступа,
модемов, сценариев для установления
соединения, а также параметров соединения в
протоколе Taylor UUCP используется набор файлов
конфигурации. В версиях ОС Linux Red Hat, Caldera и
Mandrake эти файлы находятся в каталоге /etc/uucp.
На рис. 9.5 представлена схема
взаимодействия файлов конфигурации. В
файлах конфигурации параметры для UUCP-соединения
задаются в текстовом виде в формате ASCII.
Для сервера под управлением ОС Linux функции ведущего или ведомого компьютера в UUCP-соединении также задаются в файлах конфигурации. Кроме того, в них задаются настройки для "неизвестного" хоста, что позволяет любому хосту подключаться к серверу UUCP и осуществлять с ним прием и передачу файлов в общедоступном каталоге. В последующих разделах мы подробнее остановимся на файлах конфигурации для Taylor UUCP.
(рис 9.5) Схема взаимодействия файлов конфигурации для Taylor UUCPВ файле config
задаются настройки config.
| Параметр | Описание |
|---|---|
hostname |
Задает имя узла UUCP |
nodename |
То же, что и hostname |
uuname |
То же, что и hostname |
spool |
Местонахождение каталога UUCP spool |
pubdir |
Местонахождение каталога UUCP public |
lockdir |
Местонахождение каталога UUCP lock |
unknown |
Команды из файла sys, разрешенные анонимным хостам UUCP |
max-uuqxts |
Максимальное количество запущенных параллельно процессов uuqxt |
run-uuxqt |
Запуск программы uuqxt по запросу uucico |
|
Текстовое описание режима работы |
v2-files |
Работа с файлами конфигурации UUCP версии 2 |
|
Работа с файлами конфигурации UUCP типа Honeydanber |
sysfile |
Местонахождение файла (или файлов) sys |
portfile |
Местонахождение файла (или файлов) port |
dialfile |
Местонахождение файла (или файлов) dial |
dialcodefile |
Местонахождение файла (или файлов) dialcode |
callfile |
Местонахождение файла (или файлов) call |
passwdfile |
Местонахождение файла (или файлов) passwd |
logfile |
Местонахождение файла (или файлов) UUCP log |
statfile |
Местонахождение файла (или файлов) UUCP stat |
debugfile |
Местонахождение файла (или файлов) UUCP debug |
debug |
Определение уровня отладки |
Параметры hostname, nodename и uuname являются синонимами и обычно
используется только один из них. Они
предназначены для задания имени узла UUCP
серверу под управлением ОС Linux.
Параметры spool, pubdir и lockdir
используются для изменения местоположения
каталога spool,
каталога public и
каталога lock от
заданных по умолчанию. В каталоге spool
временно хранятся файлы, предназначенные
для передачи или приема по UUCP перед их
отправкой в пункт назначения. В каталог public
удаленные хосты могут помещать (или брать
из него) файлы без специальных прав доступа.
В этом каталоге они имеют все необходимые
права для передачи и приема по UUCP. В
каталоге lock
находятся файлы lock.
Они предназначены для того, чтобы другие
процессы не смогли вызвать хост, занятый в
сеансе UUCP. С этой целью они и создаются при
вызове хоста UUCP.
Параметр unknown
определяет поведение анонимных хостов UUCP.
Если не задан список команд unknown,
то анонимные UUCP-соединения не разрешены.
Обычно за параметром unknown
следуют параметры файла sys,
в которых определяется поведение
анонимного хоста UUCP, подобно тому, как это
делается для обычного хоста UUCP. В файл config
параметры unknown
можно включать несколько раз. При работе с
электронной почтой через UUCP-соединение
этот параметр, как правило, не нужен.
Параметр unknown
может использоваться лишь для организации
доступа анонимным хостам UUCP к
общедоступному каталогу public.
Параметр
позволяет определять режим запуска других
файлов конфигурации. Обычно время запуска в
нем определяется в виде дня недели и часов,
когда разрешен доступ. Например, Tu0800-2000
означает, что доступ разрешен по вторникам
с 8 утра до 8 вечера. В команде можно также
задавать имя определенному интервалу
времени, например, таким образом:
timetable WorkHours Wk0800-1730
С помощью этой команды интервалу
времени с 8 утра до 17:30 вечера с понедельника
по пятницу присваивается имя WorkHours.
Затем это имя можно использовать в других
файлах конфигурации для задания временных
интервалов. В листинге 9.2 представлен
пример файла config.
nodename shadrach logfile /var/log/uucp
В строке 1 задается имя хоста UUCP
для локального компьютера, а в строке 2
задается местоположение файлов отчета UUCP.
Как правило, это все, что нужно для работы
файла config. Как
видите, не так уж сложно.
В файле sys
задаются хосты UUCP для сервера с ОС Linux.
Каждый удаленный хост имеет в файле sys отдельный раздел, где описываются
специфические параметры при подключении к
нему. В табл. 9.15 представлены параметры,
определяемые в файле sys.
| Параметр | Описание |
|---|---|
system |
Задает имя узла UUCP удаленной стороны |
alternate |
Определяет дополнительные параметры |
default-alternates |
Если установлен в false,
то не использовать дополнительные
параметры |
alias |
Определяет псевдоним для удаленной стороны |
mynarne |
Задает другое имя
|
time |
Определяет момент вызова системы |
timegrade |
Определяет интервалы времени запуска специфических заданий |
max-retries |
Определяет максимальное число попыток повторить соединение после обрыва |
success-wait |
Определяет интервал ожидания после успешного соединения |
call-timegrade |
Определяет класс специфических заданий, запускаемых в определенное время |
speed |
Устанавливает скорость соединения |
port |
Определяет тип
используемого порта из файла port |
phone |
Определяет номер для дозвона к удаленной системе |
chat |
Определяет сценарий для соединения с удаленной системой |
chat-timeout |
Устанавливает интервал ожидания при выполнении сценария дозвона |
chat-fail |
Определяет строки текста, выводимые при аварийном завершении сценария дозвона |
call-login |
Устанавливает
идентификатор пользователя при
выполнении процедуры входа в сценарии chat |
call-password |
Устанавливает
пароль при выполнении процедуры входа в
сценарии chat |
callback |
Определяет необходимость вызова локальной системы удаленной системой (обратный вызов) |
protocol |
Определяет протоколы UUCP, которые поддерживаются в системе |
send-request |
Разрешает удаленной системе запрашивать файлы с локальной системы |
receive-request |
Разрешает удаленной системе посылать файлы на локальную систему |
local-send |
Разрешает локальному пользователю посылать файлы из указанных каталогов удаленной системе |
remote-send |
Разрешает удаленному пользователю посылать файлы из указанных каталогов удаленной системе |
local-receive |
Разрешает локальному пользователю принимать файлы в указанные каталоги |
remote-receive |
Разрешает по
|
forward-to |
Определяет системы, которым могут пересылаться файлы |
forward-from |
Определяет системы, от которых могут приниматься файлы |
forward |
Определяет системы, которым и от которых могут пересылаться файлы |
commands |
Определяет список команд, обязательных для выполнения удаленной системой |
Параметр system
открывает раздел свойств для удаленного
узла. Далее каждое свойство удаленного узла
задается по порядку. Параметр port определяет в файле port
раздел, который отвечает за вызов удаленной
системы. В файле sys
для передачи электронной почты не
требуются параметры, описывающие права
доступа. Если параметром protocol
не задан список протоколов, то хосты UUCP
пытаются автоматически договориться о типе
протокола UUCP, который они будут
использовать в течение сеанса. Если оба
хоста поддерживают протокол Taylor UUCP, то
скорее всего они остановятся на протоколе i.
Протоколы, выбранные для сеанса, также
могут быть настроены с помощью набора
соответствующих параметров.
Параметр commands
полезен для проверки безопасности. Когда,
например, удаленный узел передает
электронную почту по UUCP, он отдает команду rmail
другому удаленному узлу. Чтобы ограничить
доступ в UUCP только обработкой почты, можно
команде rmail
разрешить запуск только от удаленной
системы. В листинге 9.3 представлен пример
файла sys.
system ispmail time Wk0800-1730 phone 555-1234 port modem1 speed 38400 chat ogin: shadrach word: guitar system isp2mail time Wk0800-1730 phone 555-4321 port modem2 speed 38400 chat ogin: backup word: bass
В листинге 9.3 представлены два
хоста UUCP, с которыми sys отведен
свой раздел. В каждом разделе, как видите,
задаются параметры подключения к
удаленному хосту UUCP.
Файл port используется
для задания способов подключения в сеансе
UUCP. В одном файле port
можно задавать сразу несколько портов.
Каждый раздел в файле, описывающий новый
порт, начинается с параметра port.
Параметры, имеющие силу для всех портов,
должны задаваться перед первым параметром port,
который встречается в файле. В табл. 9.16
представлены параметры, которые задаются в
файле port.
| Параметр | Описание |
|---|---|
port |
Определяет имя нового соединения |
type |
Определяет тип соединения |
protocol |
Определяет протокол, разрешенный для применения |
reliable |
Логическое значение для ведения переговоров о протоколе через ненадежное соединение |
|
Логическое значение, которое позволяет протоколам определить полудуплексное соединение |
device |
Определяет устройство в ОС Linux, которое работает с данным портом |
speed |
Определяет скорость порта |
carrier |
Логическое значение, которое определяет поддержку портом обнаружения несущей |
hardflow |
Логическое значение, которое определяет поддержку портом аппаратного управления потоком |
dialer |
Определяет, какую
программу дозвона использовать из файла dialer |
service |
Определяет, какой номер TCP-порта использовать при TCP-соединении |
command |
Определяет, какую команду использовать, если идет работа по порту конвейерного типа |
Задание параметров для каждого
порта начинается с параметра port.
В этом параметре задается имя порта
удаленного хоста, согласно файлу sys.
Параметр type
определяет тип порта. Возможные типы портов
представлены в табл. 9.17.
| Тип | Описание |
|---|---|
modem |
Модемное соединение |
stdin |
Порт со стандартным вводом-выводом |
direct |
Прямое соединение с удаленной системой (нуль-модем) |
tcp |
Соединение TCP/IP |
tli |
Соединение TLI |
pipe |
Соединение с использованием конвейера для другой программы |
Тип порта modem
применяется для идентификации модемного
соединения с удаленным хостом. Для
поддержки соединения, где в качестве
процедуры входа используется uucico
(см. раздел "Реализации протокола UUCP в ОС
Linux"), применяется тип порта stdin.
Для осуществления UUCP-соединения через
существующее TCP/IP-соединение используется
тип порта tcp.
Такое подключение может осуществляться
несколькими методами. Например, сервер
электронной почты на базе ОС Linux может
предоставить уже установленное РРР-соединение
для почтового сеанса по протоколу UUCP.
Конвейерный порт с типом pipe
может передавать управление UUCP-соединением
другой программе, указанной в параметре command.
В листинге 9.4. представлен пример файла port.
port modem1 type modem device /dev/ttyS0 speed 38400 dialer normal port modem2 type modem device /dev/ttyS1 speed 38400 dialer normal
Все порты, которые могут
использоваться в UUCP, указываются в файле port.
В листинге 9.4 показано, как
сконфигурировать два модема для работы с
UUCP. Обратите внимание на то, что каждый из
них имеет свое имя.
В файле dial
задаются параметры вызова удаленного хоста
модемом. Параметр dialer
определяет начало раздела в файле
конфигурации. Как и в файле port,
в каждом разделе задаются параметры вызова
удаленного хоста. В файл dial
может включаться несколько разделов. Все
они будут начинаться с параметра dialer.
Общие для всех хостов параметры должны
указываться перед первой записью с
параметром dialer. В
табл. 9.18 представлены параметры, которые
могут включаться в файл dial.
| Параметр | Описание |
|---|---|
dialer |
Определяет, какую программу дозвона использовать |
chat |
Определяет сценарий дозвона на удаленный хост |
chat-timeout |
Определяет интервал ожидания при выполнении сценария дозвона |
chat-fail |
Определяет строку, которая выдается в случае аварийного завершения сценария дозвона |
dialtone |
Строка, посылаемая на модем, для ожидания второго сигнала станции |
carrier |
Логическое значение, которое определяет поддержку модемом обнаружения несущей |
carrier-wait |
Определяет интервал ожидания несущей |
|
Логическое
значение, которое определяет, будет ли
хост сбрасывать сигнал |
complete-chat |
Определяет последовательность символов в сценарии, посылаемых при завершении сеанса UUCP |
В сценарии дозвона имеются
переменные, которые могут принимать
значения из других файлов конфигурации без
повторения их в файле dial.
В табл. 9.19 приведен список переменных,
которые могут использоваться в сценариях chat.
| Переменная | Описание |
|---|---|
\T |
Телефонный номер с трансляцией кода дозвона |
\D |
Телефонный номер без трансляции кода дозвона |
\M |
Несущая не требуется |
\m |
Несущая требуется |
В листинге 9.5 показан пример
файла dial, который
может использоваться для конфигурирования
Taylor UUCP.
dialer normal сhat "" ATZ OK ATDT\T CONNECT
В строке 1 определяется имя
программы дозвона, которое будет
использоваться далее в файле port.
Вторая строка определяет необходимый
сценарий для дозвона к удаленному хосту UUCP
через модем. Переменная \T
используется здесь для вставки номера
телефона, заданного в строке dial
в файле port.
После того как конфигурационные файлы созданы, ОС Linux практически готова для работы по UUCP с удаленными хостами. Однако для установления соединения и обмена данными в ОС Linux необходим определенный набор команд. Как мы знаем, стандартом для ОС Linux является пакет Taylor UUCP. В него входит набор команд, которые позволяют управлять протоколом UUCP. Некоторые команды зарезервированы для системного использования, но имеется набор команд, с помощью которых администратор может управлять UUCP-соединениями. Кроме того, если пользователям разрешено обмениваться файлами на сервере под управлением ОС Linux, то пакет для поддержки Taylor UUCP предоставляет и такую возможность.
Для обработки UUCP-запросов
применяется команда uucico.
Как правило, запросы формируются
пользователями, но некоторые запросы
генерируются самой системой. Функцией
команды uucico
является вызов удаленных хостов и
установление с ними UUCP-соединения для
передачи данных. Формат команды uucico
следующий:
uucico [options]
Когда команда uucico задана без параметров, то процесс
запускается в режиме ведомого и ожидает
появления запроса с удаленного устройства.
В ОС Linux для программы uucico
принято создавать отдельный идентификатор
пользователя, который она далее использует
в качестве оболочки по умолчанию. Это
позволяет удаленному хосту
регистрироваться на сервере и
автоматически устанавливать UUCP-соединение.
Параметры, используемые в команде uucico,
представлены в табл. 9.20.
| Параметр | Описание |
|---|---|
-r1 |
Запуск в режиме ведущего |
-r0 |
Запуск в режиме ведомого |
-s nodename |
Вызов системы с
именем nodename |
-S nodename |
Срочный вызов
системы с именем nodename,
период ожидания игнорируется |
-f |
Игнорируются все интервалы ожидания |
-l |
Регистрация с помощью идентификатора пользователя и пароля |
-p port |
Для вызова
использовать порт port |
-e |
Бесконечная петля приглашений для входа в систему в режиме ведомого |
-w |
После дозвона
ввести петлю с помощью -e |
-q |
Не запускать uuxqt
после завершения |
-c |
Если по расписанию вызовы не предусмотрены, не вызывать и не писать в файл отчета |
-C |
Вызывать только
системы, указанные параметрами -s
и -S |
-D |
После завершения не отключаться от терминала |
-u name |
Установить имя при
регистрации в системе в name |
-z |
Если вызов не
прошел, попытаться вызвать
альтернативные системы в соответствии с
файлом sys |
-i type |
Установить тип
порта в type |
-x type |
Включить режим
отладки типа type |
-I file |
Установить в
качестве файла config
файл с именем file |
-v |
Показать номер версии команды |
--help |
Вывод справки |
Для того чтобы начать сеанс UUCP с удаленным хостом, введите:
uucico -s nodename
Здесь nodename
идентифицирует имя удаленной системы.
Когда программа uucico запускается
в режиме хоста, система, в которой
используется пакет Taylor UUCP, обращается к
файлам конфигурации и начинает процесс
установки UUCP-соединения. Когда соединение
установлено, все задания на обмен данными
по UUCP будут обработаны соответствующим
образом.
Как правило, команда uuxqt
вызывается uucico после
успешного установления UUCP-соединения для
обработки всех команд uux.
Внесем ясность. Программа uux
помещает задания в очередь заданий UUCP,
где они и обрабатываются. Если для
подключения к удаленному хосту применялась
команда uucico, то
это, как правило, происходит автоматически.
Если в очереди много заданий, то
иногда может понадобиться индивидуальная
обработка наиболее важных заданий.
Наиболее важные задания можно выполнить
вручную, если в uucico
задан параметр -q.
Формат команды uuxqt
следующий:
uuxqt [options]
Если в команде uuxqt
не заданы параметры, то задания в буфере
UUCP обрабатываются в том порядке, как они
были помещены туда локальными или
удаленными пользователями. В табл. 9.21
представлены параметры, которые могут быть
заданы с командой uuxqt.
| Параметр | Описание |
|---|---|
-c command |
Запросы
выполняются только для команды command |
-s system |
Запросы
выполняются только для системы system |
-x type |
Включает режим
отладки типа type |
Для почтовых серверов особенно
полезен параметр -с.
Так, если задать команду rmail
с параметром -c, то
UUCP будет обрабатывать только почтовые
запросы. Таким образом, ни один файл не
покинет почтовый сервер и не будет принят
по UUCP. Программе rmail
запрещено передавать сообщения локальному
агенту для передачи почты, коим обычно
является программа sendmail
(см. лекцию 11, "Установка и конфигурирование
sendmail").
Команда uustat
является довольно мощным средством в
протоколе UUCP. Она может применяться
привилегированным пользователем root
для проверки файла spool
и получения отчета о заданиях как
находящихся в очереди, так и выполняющихся.
С ее помощью также можно удалять задания из
очереди или запускать новые задания. В
зависимости от выполняемых функций,
меняется и формат команды uustat.
Для просмотра всех файлов,
ожидающих в очереди на передачу,
используется параметр -a.
Параметр -K
используется для удаления заданий в UUCP.
Удаляемые задания можно идентифицировать
по идентификатору задания, по имени системы,
по имени пользователя или по другим
признакам. В листинге 9.6 представлен пример
работы команды uustat.
1 [rich@shadrach rich]$ uustat -a 2 ispmail.CLMcwusAADmB ispmail rich 10-02 06:57 Executing rmail Rich.Blum@isp.net (sending 387 bytes) 3 ispmail.CLNXU37AADmN ispmail rich 10-02 06:58 Executing rmail rich@smallorg.org (sending 390 bytes) 4 ispmail.CLOJEcNAADmT ispmail rich 10-02 06:59 Executing rmail prez@microsoft.com (sending 456 bytes) 5 ispmail.GLOpGOZAADmZ ispmail rich 10-02 06:59 Executing rmail postmaster@linux.org (sending 449 bytes) 6 [rich@shadrach rich]$
В строках 2–5 листинга 9.6 показан процесс постановки в очередь заданий на пересылку почты по UUCP. В первом поле указывается идентификатор задания. Во втором — удаленное имя хоста UUCP, а в третьем — имя пользователя, поместившего задание в очередь.
Команда uucp
используется пользователями для передачи
файлов пользователям удаленных
компьютеров. Формат команды uucp
следующий:
uucp [options] source destination
В роли source может
выступать имя локального или удаленного
файла. Имя файла на удаленной системе
должно быть указано в формате:
remotehost!filepath
Здесь в качестве remotehost
выступает имя хоста UUCP, на котором
находится файл. Если файл находится на
локальном компьютере, то указывать имя remotehost
не нужно. В качестве параметра destination может выступать имя файла или
каталога на локальном или удаленном
компьютере.
Успешное выполнение команды uucp
зависит от прав доступа, заданных в
файлах конфигурации UUCP, для пользователя,
который передает файл.
Команда uux
применяется для выполнения команд на
удаленном компьютере. Все заданные команды
помещаются в очередь UUCP в каталог spool
и выполняются, когда удаленный компьютер
вызывается на сеанс UUCP командой uucico.
Как правило, команда uux
воспринимается как обычный файл, если ей не
задан флаг выполняемого файла. На удаленном
компьютере эта команда выполняется
командой uuxqt.
Как уже упоминалось ранее, пакет
Taylor UUCP, написанный Яном Тейлором (Ian Taylor)
является, по сути, стандартом для систем на
базе ОС Linux. В большинство версий ОС Linux он
включен в виде бинарного пакета. Так, в
системе Mandrake Linux, CD с которой включен в эту
книгу, имеется файл uucp-1/05.i586.rpm.
Для установки его на своем компьютере
запустите программу инсталляции RPM с
правами пользователя root.
Если в имеющуюся у вас версию ОС
Linux не входит поддержка UUCP, то можно
получить исходный код программ с такой
поддержкой и скомпилировать его для работы
в вашей системе. Один из таких пакетов
находится на сервере sunsite.unc.edu
в каталоге /pub/Linux/systems/network/uucp.
Это файл uucp-1.05.tar.gz.
Если вы читаете эту книгу с начала, то уже
должны знать стандартную процедуру
установки и компиляции исходного кода в ОС
Linux. Все же напомним ее еще раз.
tar -zxvf uucp-1.05.tar.gz
uucp-1.05.configure,
которая создает Makefile
в соответствии с параметрами локальной
системы. Если нужно изменить
местоположение файлов конфигурации или
отчета UUCP, то это также можно сделать,
задав configure с
определенными параметрами. Наберите configure
-help, чтобы получить справку о
параметрах.make,
чтобы скомпилировать исходный код.root
утилиту make с
параметром install,
с помощью которой бинарные файлы
помещаются в соответствующие каталоги.После установки бинарных файлов можно начать конфигурирование UUCP. Для настройки работы сервера электронной почты под управлением ОС Linux с UUCP требуется определить набор исходных данных. К ним относятся метод и время дозвона до ведомого UUCP-компьютера. Ниже мы приведем несколько примеров конфигурирования сервера на базе ОС Linux для работы как ведущим, так и ведомым компьютером в сеансе UUCP. Как правило, ведущий UUCP компьютер вызывает хост UUCP (узел провайдера Internet) для отправки или доставки новой почты. Ведомый компьютер настраивается таким образом, чтобы он мог принимать UUCP-соединения от удаленного ведущего компьютера. Этот алгоритм может применяться в том случае, когда требуется передать почту с удаленного почтового сервера на главный почтовый сервер. На рис. 9.6 показана схема взаимодействия между ведущим и ведомым хостами в сеансе UUCP.
(рис 9.6) Схема взаимодействия ведущего и ведомого хостов в сеансе UUCPПрежде всего необходимо
выполнить настройки в файле config.
Эта задача довольно проста, так как обычно
изменять какие-либо параметры в этом файле
не требуется. В листинге 9.7 представлен
пример файла config
для клиента.
nodename shadrach
Далее следует сконфигурировать
файл sys, где
задаются параметры вызова удаленного хоста.
В листинге 9.8 представлен пример файла sys с параметрами для вызова хоста UUCP
провайдера Internet в рабочие часы с целью
проверки наличия почты.
system ispmail time Wk0800-1730 phone 555-1234 port modem speed 38480 chat ogin: shadrach word: guitar
Сценарий дозвона chat
определяет, какие строки должны быть
приняты в процессе установления соединения
и каким должен быть ответ. Таким образом,
происходит регистрация uucico
на удаленном сервере. Приведенный нами
сценарий подразумевает, что удаленный хост
UUCP в качестве оболочки по умолчанию будет
запускать uucico.
Если же это не так, то в сценарии указывают,
что необходимо дождаться приглашения
оболочки пользователя и лишь после этого
посылать команду uucico.
Затем нужно задать параметры в
файле port. В
листинге 9.9 представлен пример файла port, где описываются параметры модема.
port modem type modem device /dev/ttyS0 speed 38400 dialer normal
И последний файл конфигурации,
который нам понадобится, это файл dial.
В нем задаются параметры для связи с
определенным портом. В листинге 9.10
представлен пример файла dial.
dialer normal chat "" ATZ OK ATDT\T CONNECT
Чтобы проверить правильность
заданной конфигурации, пользователь,
обладающий правами root,
может набрать следующую команду:
uucico -f -x chat -s ispmail
С помощью этой команды вы
заставляете uucico
звонить на UUCP-систему с именем ispmail,
игнорируя все ограничения по времени, и
вести файл отчета для процесса chat.
По прошествии нескольких секунд вы должны
услышать, как модем набирает номер
удаленного сервера. Чтобы убедиться в
успешности соединения, можно также
проанализировать содержимое файла отчета
UUCP ( /var/log/uucp/Log ).
Соответствующие строки будут
присутствовать и в файле /var/log/uucp/Debug.
Теперь, когда вы убедились в том,
что UUCP-соединение работает нормально,
следующим шагом будет автоматизация этого
процесса. Лучше всего для этой цели
использовать стандартный для ОС Linux процесс cron. Программа cron выполняется в фоновом режиме и
считывает свой файл конфигурации, где
задается время запуска каждой программы.
Чтобы отредактировать файл конфигурации cron,
пользователь с правами root должен
задать команду:
cron -e
Затем добавьте в файл cron
строки, показанные в листинге 9.11.
4,9,14,19,24,29,34,39,44,49,54,59 * * * */usr/sbin/touch #196; /var/spool/uucp/ispmail/C./C.ispmailA0000 5,10,15,20,25,30,35,40,45,50,55 * * * */usr/sbin/uucico -s ispmail
В первой строке каждые 5 минут
создается файл, в котором uucico
указывается опросить удаленный узел. Во
второй строке запускается программа для
обработки заданий из очереди.
Вопросы перенаправления почты через UUCP-соединение на почтовый узел провайдера Internet более подробно рассмотрены в лекции 13, "Подключение почтового сервера к провайдеру Internet".
Ведомый компьютер в сеансе UUCP
ожидает появления запросов на установление
соединения от ведущих UUCP-компьютеров. И
снова нам понадобится файл конфигурации config.
Он представлен в листинге 9.12.
nodename ispmail
За ним следует файл конфигурации sys.
Поскольку ведомый компьютер не вызывает
удаленные системы и доступ к файловым
областям не предоставляется, то этот файл
имеет тривиальный вид. Пример файла sys показан в листинге 9.13.
system shadrach port dialin time Never commands rmail
В файле конфигурации port
для поддержки входящих соединений также
нет сложных настроек. Все клиенты при
подключении самостоятельно запускают
программу uucico,
так что в этом файле лишь нужно указать тип
соединения. Пример файла port представлен в листинге 9.14.
port dialin type stdin
Так как ведомый компьютер не
осуществляет вызов удаленных компьютеров,
то файл dial ему не
требуется. Далее нужно лишь создать
идентификатор пользователя для удаленной
системы, которая будет регистрироваться на
данном компьютере. Все идентификаторы
пользователей хранятся в файле /etc/passwd.
При этом, чтобы система автоматически
запускала UUCP по входному звонку, нужно
задать в качестве оболочки по умолчанию uucico.
Тогда строка в файле /etc/passwd
будет выглядеть примерно так:
shadrach:x:510:510:Remote UUCP host:/home/shadrach: /usr/sbin/uucico
Этой строкой мы разрешаем
удаленной системе shadrach
зарегистрироваться с именем shadrach
и автоматически запустить для нее
программу uucico.
Пользователь root должен
назначить идентификатору пользователя shadrach
пароль. Этот пароль не может быть изменен
удаленным хостом.
Один из относительно недорогих и безопасных способов подключения почтового сервера к провайдеру Internet — использование протокола UNIX to UNIX CoPy (UUCP). Хотя этот протокол — один из старейших, он остается высокоэффективным при передаче почты по модемным линиям без установления сетевого соединения. Многими провайдерами Internet поддерживается работа по протоколу UUCP для обмена электронной почтой. В ОС Linux UUCP реализован в пакете Taylor UUCP. Этот пакет состоит из конфигурационных файлов и выполняемых модулей и позволяет создавать полнофункциональный ведущий или ведомый UUCP-хост на базе почтового сервера под управлением ОС Linux. После установления соединения программное обеспечение для работы с почтой может быть настроено для маршрутизации почты по UUCP-соединению.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.