В
предыдущих лекциях были описаны основные способы
передачи электронной почты от сервера на базе ОС
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
Протокол UUCP был разработан в конце 70-х годов
Майком Леском (Mike Lesk) в лаборатории компании
AT&T 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.
Таблица 9.1. Параметры подтверждения
открытия соединения в UUCP
Параметр |
Описание |
-Qseq |
Определяет вызов
номера последовательности
seq |
-xlevel |
Устанавливает режим
отладки на ведомом компьютере равным
level |
-pgrade |
Устанавливает
ведомому компьютеру режим передачи
файлов только с приоритетом
grade
или выше |
-N |
Сигнализирует о том,
что ведущий компьютер воспринимает
расширения в соответствии с Taylor
UUCP |
Ведомый компьютер, в свою очередь, должен
ответить на параметр, заданный ведущим,
определенным кодом. Коды ответов ведомого
компьютера представлены в табл. 9.2.
Таблица 9.2. Коды ответов ведомого
компьютера в сеансе UUCP
Код ответа |
Описание |
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.
Таблица 9.3. Параметры команды S
Параметр |
Описание |
C |
Файл следует
сохранить в каталог UUCP
spool
ведомого компьютера |
c |
Файл следует
сохранить, как указано в
filein |
d |
Создать на ведомом
компьютере каталог согласно
filein |
f |
Не создавать на
ведомом компьютере каталоги и
прервать передачу |
m |
Ведущий компьютер
после передачи файла передает почту |
n |
После передачи файла
ведомый компьютер должен послать
почтовое сообщение на адрес,
указанный в параметре
notify |
Параметр temp -
это имя временного файла в каталоге UUCP spool,
если задан параметр C.
В другом случае параметр
temp не требуется и удаляется после
успешной передачи файла.
Параметр mode
представляет собой восьмеричное число, которое
отображает режим доступа к файлу согласно
системе ограничения доступа в ОС UNIX. Как
правило, для файла применяется режим доступа
0666, т.е. чтение/запись
для пользователя, группы и всех других
пользователей системы. Однако файл в служебной
области UUCP (каталог
spool) может иметь режим доступа
0600, чтобы другие
пользователи не могли читать файл или записывать
в него.
Почтовый адрес, который задается в параметре
notify
используется для посылки уведомления. Если не
указан пользователь для уведомления, но задан
параметр size, то
параметру notify
задается пустое значение
"" или dummy.
Параметр size
используется в Taylor UUCP для указания размера
передаваемого файла (в байтах).
После того как выдана команда
S, ведомый
компьютер должен ответить на нее для определения
дальнейших условий передачи. Все ответы на
команду S также
начинаются на S. В
табл. 9.4 показаны возможные коды ответов на
команду S.
Таблица 9.4. Коды ответов на команду S
Код ответа |
Описание |
SY |
Все параметры
опознаны; начать передачу файла |
SN2 |
Передача файла не
будет успешно закончена |
SN4 |
Ведомый компьютер не
может создать временный файл для
данного сеанса |
SN6 |
Используется в Taylor
UUCP; ведомый компьютер сообщает о
том, что файл слишком большой и он
не может его сохранить на данный
момент |
SN7 |
Используется в Taylor
UUCP; ведомый компьютер сообщает о
том, что файл слишком большой и он
не сможет его передать |
Если на команду S
получен ответ SY,
то ведущий компьютер начинает передачу данных по
протоколу, определенному в фазе подтверждения
открытия соединения. Затем, после передачи файла,
ведомый компьютер должен выдать код, сообщающий
о состоянии передачи. В табл. 9.5 указаны
возможные коды завершения передачи данных по
команде S.
Таблица 9.5. Коды завершения передачи
файла
Код |
Описание |
CY |
Передача файла
завершена успешно |
CN5 |
Временный файл не
может быть удален из каталога,
указанного в
filein |
После того как ведущий компьютер получил код
завершения от ведомого, передача данных
заканчивается и ведущий компьютер готов к
передаче другого блока данных или к прекращению
сеанса UUCP.
Команда на прием файла
Команда R
используется ведущим компьютером для приема
файлов от ведомого компьютера. Формат этой
команды следующий:
R fileout filein user
-option size
Здесь fileout -
имя файла на ведомом компьютере. Этот файл не
обязательно должен находиться в общей области
UUCP - каталоге spool. Кроме того, для
обозначения всех файлов из каталога разрешено
использовать обобщающий символ (*).
Соответственно, filein
- это имя файла, под которым ведущий компьютер
должен сохранить принятый файл.
Имя пользователя, запросившего прием файла,
указывается в параметре
user.
Дополнительные параметры для приема файла можно
задать с помощью параметра
-options. Значения
этого параметра приведены в табл. 9.6.
Таблица 9.6. Параметры команды R
Параметр |
Описание |
d |
Ведущий компьютер
должен создать каталоги согласно
filein |
f |
Ведущий компьютер не
должен создавать каталоги согласно
filein
и прием должен быть прерван |
m |
Ведущий компьютер
должен выслать по электронной почте
уведомление после окончания приема
файла |
Параметр size
показывает наибольший размер файла, который
ведущий компьютер сможет принять от ведомого.
На
команду R ведомый
компьютер должен ответить специальным кодом,
который отображает состояние передачи файла.
Коды ответов ведомого компьютера на команду
R представлены в
табл. 9.7.
Таблица 9.7. Коды ответов на команду R
Код ответа |
Описание |
RY mode |
Ведомым компьютером
файл передан успешно. Параметр
mode
указывает, что права доступа к файлу
fileout
должны быть перенесены на
filein |
RN2 |
Ведомый компьютер не
смог передать файл. Возможные
причины: файл не существует или не
соответствуют права доступа к файлу |
RN6 |
Используется в Taylor
UUCP. Сигнализирует о том, что
размер файла превысил отведенный ему
лимит |
Если получен код ответа
RY, то ведомый компьютер начинает
передачу файла ведущему по оговоренному UUCP-протоколу.
По окончании передачи ведущий компьютер посылает
ведомому код завершения. В табл. 9.8 приведены
возможные коды завершения.
Таблица 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.
Таблица 9.9. Параметры команды E
Параметр |
Описание |
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
говорит о том, что ведомый компьютер согласен
прекратить сеанс и разорвать соединение. Затем
ведущий компьютер должен повторить этот код
ответа и разорвать соединение.
Код ответа HN с
ведомого компьютера говорит о том, что он
согласен прекратить текущий сеанс, но желает
начать новый сеанс с этим же хостом, но уже в
роли ведущего компьютера. При этом ведомый
компьютер принимает на себя полномочия ведущего
и выдает бывшему ведущему команды на передачу
файлов. После завершения передачи новый ведущий
компьютер может послать команду
H, и тогда новый
ведомый либо прекратит сеанс, либо вновь
произведет смену ролей и организует новый сеанс
(весьма похоже на работу системы "клиент-сервер",
не так ли?).
Подтверждение
на закрытие соединения
Закрытие соединения в UUCP - ничего более, чем
простая формальность в протоколе. В этой фазе
обе стороны соглашаются закрыть UUCP-соединение
(согласно всем канонам связи). Как и в фазе
подтверждения открытия соединения, здесь ведется
обмен пакетами, начинающимися на
0x10 (шестнадцатеричное)
и заканчивающимися на
0x00 (шестнадцатеричное). При этом
ведущий компьютер инициирует завершение
соединения, посылая пакет с шестью нулями (000000).
Если ведомый компьютер согласен закрыть
соединение, он также отвечает пакетом с шестью
нулями (000000). С
этого момента UUCP-соединение считается закрытым,
и модемная линия может быть сброшена.
Пример сеанса
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
Листинг 9.1. Пример
сеанса UUCP
После того как ведущий хост открыл
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,
по которому они будут работать во время сеанса.
В описании протокола UUCP говорилось о том, что
его ядро можно инкапсулировать в другой протокол
для сохранения целостности данных при передаче.
Так, например, обычные телефонные линии имеют
высокий уровень шумов, что требует более мощной
процедуры для коррекции ошибок, чем алгоритм
исправления ошибок в TCP/IP. Для реализации
различных методов коррекции ошибок было
разработано несколько типов протоколов UUCP. В
табл. 9.10 представлены наиболее популярные из
них, которые мы рассмотрим здесь более подробно.
Таблица 9.10. Протоколы UUCP
Протокол |
Описание |
g |
Самый первый протокол
UUCP. Предоставляет широкие
возможности для коррекции ошибок |
i |
Обеспечивает
высокоскоростную передачу данных
одновременно в обоих направлениях |
t |
Используется для
реализации UUCP через TCP/IP.
Коррекция ошибок не обеспечивается |
e |
Еще одна реализация
TCP/IP с применением управляющих
пакетом в формате ASCII |
Протокол g
Протокол 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
представлены возможные значения
К-байт.
Таблица 9.11. Значения К-байт в
протоколе g.
Значения К-байта |
Длина поля данных (байт) |
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.
Таблица 9.12. Значения битов XXX в байте
управления протокола g
Значение |
Мнемоника |
Описание |
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
Протокол i был
написан Яном Тейлором (Ian Taylor) для кадра
Taylor UUCP. Его работа в чем-то подобна
протоколу g, но в
то же время в нем предусмотрена возможность
одновременной передачи данных в обоих
направлениях. Согласно протоколу
i, с целью
увеличения пропускной способности, когда это
возможно, в кадре применяются окна больших
размеров. В протоколе i
применяется пять различных типов пакетов. В табл.
9.13 дается описание типов пакетов протокола
i.
Таблица 9.13. Типы пакетов в протоколе i
Тип пакета |
Описание |
Data |
Пакет данных |
SYNC |
Пакет инициализации
протокола |
ACK |
Пакет уведомления |
NAK |
Пакет негативного
уведомления |
SPOS |
Смена позиции файла |
CLOSE |
Закрытие сеанса UUCP |
Протокол t
Протокол t
используется для передачи пакетов UUCP через
соединение TCP/IP. Соединение по протоколу
TCP/IP предусматривает метод помещения пакетов в
очередь и коррекцию ошибок. Таким образом,
поддержка этих возможностей не входит в функции
протокола t. Для
передачи пакетов в протоколе
t применяются
длинные блоки. Пакеты управления кратны 512
байтам, в то же время пакеты данных посылаются
блоками, кратными 1024 байтам.
Протокол e
Подобно протоколу t,
протокол e также
был разработан для работы в сетях TCP/IP. В нем
также не выполняется коррекция ошибок или
постановка пакетов в очередь. Для передачи
пакетов управления в нем используется обычный
ASCII-текст. До передачи файла его размеры
посылаются в десятичном виде принимающей стороне.
Протокол
Taylor UUCP
Наиболее популярной реализацией протокола 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
задаются настройки локального хоста UUCP. Все
параметры изначально имеют значения по умолчанию,
которые можно изменять в соответствии со своими
потребностями. В табл. 9.14 представлены
параметры, которые имеются в файле
config.
Таблица 9.14. Параметры файла config для
Taylor UUCP
Параметр |
Описание |
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 |
timetable |
Текстовое описание
режима работы |
v2-files |
Работа с файлами
конфигурации UUCP версии 2 |
hdb-files |
Работа с файлами
конфигурации 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.
Параметр timetable
позволяет определять режим запуска других файлов
конфигурации. Обычно время запуска в нем
определяется в виде дня недели и часов, когда
разрешен доступ. Например,
Tu0800-2000
означает, что доступ разрешен по вторникам с 8
утра до 8 вечера. В команде можно также задавать
имя определенному интервалу времени, например,
таким образом:
timetable WorkHours
Wk0800-1730
С
помощью этой команды интервалу времени с 8 утра
до 17:30 вечера с понедельника по пятницу
присваивается имя
WorkHours. Затем это имя можно
использовать в других файлах конфигурации для
задания временных интервалов. В листинге 9.2
представлен пример файла
config.
nodename shadrach
logfile /var/log/uucp
Листинг 9.2. Пример
файла config для Taylor UUCP
В
строке 1 задается имя хоста UUCP для локального
компьютера, а в строке 2 задается местоположение
файлов отчета UUCP. Как правило, это все, что
нужно для работы файла
config. Как видите, не так уж сложно.
Файл
конфигурации sys
В
файле sys задаются
хосты UUCP для сервера с ОС Linux. Каждый
удаленный хост имеет в файле
sys отдельный
раздел, где описываются специфические параметры
при подключении к нему. В табл. 9.15
представлены параметры, определяемые в файле
sys.
Таблица 9.15. Параметры файла sys для
Taylor UUCP
Параметр |
Описание |
system |
Задает имя узла UUCP
удаленной стороны |
alternate |
Определяет
дополнительные параметры |
default-alternates |
Если установлен в
false,
то не использовать дополнительные
параметры |
alias |
Определяет псевдоним
для удаленной стороны |
mynarne |
Задает другое имя
локальному хосту UUCP при соединении
с определенным удаленным хостом |
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. Пример
файла sys в протоколе Taylor UUCP
В
листинге 9.3 представлены два хоста UUCP, с
которыми локальный хост должен поддерживать
соединение. Для каждого из них в файле
sys отведен свой
раздел. В каждом разделе, как видите, задаются
параметры подключения к удаленному хосту UUCP.
Файл
конфигурации port
Файл port
используется для задания способов подключения в
сеансе UUCP. В одном файле
port можно
задавать сразу несколько портов. Каждый раздел в
файле, описывающий новый порт, начинается с
параметра port.
Параметры, имеющие силу для всех портов, должны
задаваться перед первым параметром
port, который
встречается в файле. В табл. 9.16 представлены
параметры, которые задаются в файле
port.
Таблица 9.16. Параметры, задаваемые в
файле port
Параметр |
Описание |
port |
Определяет имя нового
соединения |
type |
Определяет тип
соединения |
protocol |
Определяет протокол,
разрешенный для применения |
reliable |
Логическое значение
для ведения переговоров о протоколе
через ненадежное соединение |
half-duplex |
Логическое значение,
которое позволяет протоколам
определить полудуплексное соединение |
device |
Определяет устройство
в ОС Linux, которое работает с
данным портом |
speed |
Определяет скорость
порта |
carrier |
Логическое значение,
которое определяет поддержку портом
обнаружения несущей |
hardflow |
Логическое значение,
которое определяет поддержку портом
аппаратного управления потоком |
dialer |
Определяет, какую
программу дозвона использовать из
файла dialer |
service |
Определяет, какой
номер TCP-порта использовать при
TCP-соединении |
command |
Определяет, какую
команду использовать, если идет
работа по порту конвейерного типа |
Задание параметров для каждого порта начинается
с параметра port.
В этом параметре задается имя порта удаленного
хоста, согласно файлу sys.
Параметр type
определяет тип порта. Возможные типы портов
представлены в табл. 9.17.
Таблица 9.17. Типы портов Taylor UUCP
Тип |
Описание |
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
Листинг 9.4. Пример
файла port в протоколе Taylor UUCP
Все порты, которые могут использоваться в UUCP,
указываются в файле port.
В листинге 9.4 показано, как сконфигурировать
два модема для работы с UUCP. Обратите внимание
на то, что каждый из них имеет свое имя.
Файл
конфигурации dial
В
файле dial
задаются параметры вызова удаленного хоста
модемом. Параметр dialer
определяет начало раздела в файле конфигурации.
Как и в файле port,
в каждом разделе задаются параметры вызова
удаленного хоста. В файл
dial может включаться несколько разделов.
Все они будут начинаться с параметра
dialer. Общие для
всех хостов параметры должны указываться перед
первой записью с параметром
dialer. В табл.
9.18 представлены параметры, которые могут
включаться в файл dial.
Таблица 9.18. Параметры, задаваемые в
файле dial
Параметр |
Описание |
dialer |
Определяет, какую
программу дозвона использовать |
chat |
Определяет сценарий
дозвона на удаленный хост |
chat-timeout |
Определяет интервал
ожидания при выполнении сценария
дозвона |
chat-fail |
Определяет строку,
которая выдается в случае аварийного
завершения сценария дозвона |
dialtone |
Строка, посылаемая на
модем, для ожидания второго сигнала
станции |
carrier |
Логическое значение,
которое определяет поддержку модемом
обнаружения несущей |
carrier-wait |
Определяет интервал
ожидания несущей |
dtr-toggle |
Логическое значение,
которое определяет, будет ли хост
сбрасывать сигнал DTR перед
использованием модема |
complete-chat |
Определяет
последовательность символов в
сценарии, посылаемых при завершении
сеанса UUCP |
В
сценарии дозвона имеются переменные, которые
могут принимать значения из других файлов
конфигурации без повторения их в файле
dial. В табл. 9.19
приведен список переменных, которые могут
использоваться в сценариях
chat.
Таблица 9.19. Переменные, задаваемые в
сценариях chat
Переменная |
Описание |
\T |
Телефонный номер с
трансляцией кода дозвона |
\D |
Телефонный номер без
трансляции кода дозвона |
\M |
Несущая не требуется |
\m |
Несущая требуется |
В
листинге 9.5 показан пример файла
dial, который
может использоваться для конфигурирования Taylor
UUCP.
dialer normal
сhat "" ATZ OK ATDT\T CONNECT
Листинг 9.5. Пример
файла dial в протоколе Taylor UUCP
В
строке 1 определяется имя программы дозвона,
которое будет использоваться далее в файле
port. Вторая
строка определяет необходимый сценарий для
дозвона к удаленному хосту UUCP через модем.
Переменная \T
используется здесь для вставки номера телефона,
заданного в строке dial
в файле port.
Команды UUCP
После того как конфигурационные файлы созданы,
ОС Linux практически готова для работы по UUCP с
удаленными хостами. Однако для установления
соединения и обмена данными в ОС Linux необходим
определенный набор команд. Как мы знаем,
стандартом для ОС Linux является пакет Taylor
UUCP. В него входит набор команд, которые
позволяют управлять протоколом UUCP. Некоторые
команды зарезервированы для системного
использования, но имеется набор команд, с
помощью которых администратор может управлять
UUCP-соединениями. Кроме того, если
пользователям разрешено обмениваться файлами на
сервере под управлением ОС Linux, то пакет для
поддержки Taylor UUCP предоставляет и такую
возможность.
Команда uucico
Для обработки UUCP-запросов применяется команда
uucico. Как
правило, запросы формируются пользователями, но
некоторые запросы генерируются самой системой.
Функцией команды uucico
является вызов удаленных хостов и установление с
ними UUCP-соединения для передачи данных. Формат
команды uucico
следующий:
uucico [options]
Когда команда uucico
задана без параметров, то процесс запускается в
режиме ведомого и ожидает появления запроса с
удаленного устройства. В ОС Linux для программы
uucico принято
создавать отдельный идентификатор пользователя,
который она далее использует в качестве оболочки
по умолчанию. Это позволяет удаленному хосту
регистрироваться на сервере и автоматически
устанавливать UUCP-соединение. Параметры,
используемые в команде
uucico, представлены в табл. 9.20.
Таблица 9.20. Параметры команды uucico
Параметр |
Описание |
-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
Как правило, команда
uuxqt вызывается
uucico после успешного установления
UUCP-соединения для обработки всех команд
uux. Внесем
ясность. Программа uux
помещает задания в очередь заданий UUCP, где они
и обрабатываются. Если для подключения к
удаленному хосту применялась команда
uucico, то это,
как правило, происходит автоматически.
Если в очереди много заданий, то иногда может
понадобиться индивидуальная обработка наиболее
важных заданий. Наиболее важные задания можно
выполнить вручную, если в
uucico задан параметр
-q. Формат команды
uuxqt следующий:
uuxqt [options]
Если в команде uuxqt
не заданы параметры, то задания в буфере UUCP
обрабатываются в том порядке, как они были
помещены туда локальными или удаленными
пользователями. В табл. 9.21 представлены
параметры, которые могут быть заданы с командой
uuxqt.
Таблица 9.21. Параметры команды uuxqt
Параметр |
Описание |
-c command |
Запросы выполняются
только для команды
command |
-s system |
Запросы выполняются
только для системы
system |
-x type |
Включает режим
отладки типа
type |
Для почтовых серверов особенно полезен параметр
-с. Так, если
задать команду rmail
с параметром -c,
то UUCP будет обрабатывать только почтовые
запросы. Таким образом, ни один файл не покинет
почтовый сервер и не будет принят по UUCP.
Программе rmail
запрещено передавать сообщения локальному агенту
для передачи почты, коим обычно является
программа sendmail
(см. лекцию 11, "Установка и конфигурирование
sendmail").
Команда uustat
Команда 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]$
Листинг 9.6. Пример
работы команды uustat
В
строках 2–5 листинга 9.6 показан процесс
постановки в очередь заданий на пересылку почты
по UUCP. В первом поле указывается идентификатор
задания. Во втором — удаленное имя хоста UUCP, а
в третьем — имя пользователя, поместившего
задание в очередь.
Команда uucp
Команда uucp
используется пользователями для передачи файлов
пользователям удаленных компьютеров. Формат
команды uucp
следующий:
uucp [options]
source destination
В
роли source может
выступать имя локального или удаленного файла.
Имя файла на удаленной системе должно быть
указано в формате:
remotehost!filepath
Здесь в качестве
remotehost выступает имя хоста UUCP, на
котором находится файл. Если файл находится на
локальном компьютере, то указывать имя
remotehost не
нужно. В качестве параметра
destination может
выступать имя файла или каталога на локальном
или удаленном компьютере.
Успешное выполнение команды
uucp зависит от
прав доступа, заданных в файлах конфигурации
UUCP, для пользователя, который передает файл.
Команда uux
Команда uux
применяется для выполнения команд на удаленном
компьютере. Все заданные команды помещаются в
очередь UUCP в каталог
spool и выполняются, когда удаленный
компьютер вызывается на сеанс UUCP командой
uucico. Как
правило, команда uux
воспринимается как обычный файл, если ей не
задан флаг выполняемого файла. На удаленном
компьютере эта команда выполняется командой
uuxqt.
Реализации
протокола UUCP в ОС Linux
Как уже упоминалось ранее, пакет 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. Все же
напомним ее еще раз.
После установки бинарных файлов можно начать
конфигурирование UUCP. Для настройки работы
сервера электронной почты под управлением ОС
Linux с UUCP требуется определить набор исходных
данных. К ним относятся метод и время дозвона до
ведомого UUCP-компьютера. Ниже мы приведем
несколько примеров конфигурирования сервера на
базе ОС Linux для работы как ведущим, так и
ведомым компьютером в сеансе UUCP. Как правило,
ведущий UUCP компьютер вызывает хост UUCP (узел
провайдера Internet) для отправки или доставки
новой почты. Ведомый компьютер настраивается
таким образом, чтобы он мог принимать UUCP-соединения
от удаленного ведущего компьютера. Этот алгоритм
может применяться в том случае, когда требуется
передать почту с удаленного почтового сервера на
главный почтовый сервер. На рис. 9.6 показана
схема взаимодействия между ведущим и ведомым
хостами в сеансе UUCP.
Рис. 9.6. Схема взаимодействия ведущего
и ведомого хостов в сеансе UUCP
Ведущий
компьютер в сеансе UUCP
Прежде всего необходимо выполнить настройки в
файле config. Эта
задача довольно проста, так как обычно изменять
какие-либо параметры в этом файле не требуется.
В листинге 9.7 представлен пример файла
config для клиента.
nodename shadrach
Листинг 9.7. Пример
конфигурации ведущего UUCP-компьютера в
файле config (для Taylor UUCP)
Далее следует сконфигурировать файл
sys, где задаются
параметры вызова удаленного хоста. В листинге
9.8 представлен пример файла
sys с параметрами
для вызова хоста UUCP провайдера Internet в
рабочие часы с целью проверки наличия почты.
system ispmail
time Wk0800-1730
phone 555-1234
port modem
speed 38480
chat ogin: shadrach word: guitar
Листинг 9.8. Пример
конфигурации ведущего UUCP-компьютера в
файле sys (для Taylor UUCP)
Сценарий дозвона chat
определяет, какие строки должны быть приняты в
процессе установления соединения и каким должен
быть ответ. Таким образом, происходит
регистрация uucico
на удаленном сервере. Приведенный нами сценарий
подразумевает, что удаленный хост UUCP в
качестве оболочки по умолчанию будет запускать
uucico. Если же
это не так, то в сценарии указывают, что
необходимо дождаться приглашения оболочки
пользователя и лишь после этого посылать команду
uucico.
Затем нужно задать параметры в файле
port. В листинге
9.9 представлен пример файла
port, где
описываются параметры модема.
port modem
type modem
device /dev/ttyS0
speed 38400
dialer normal
Листинг 9.9. Пример
конфигурации ведущего UUCP компьютера в
файле port (для Taylor UUCP)
И
последний файл конфигурации, который нам
понадобится, это файл
dial. В нем задаются параметры для связи
с определенным портом. В листинге 9.10
представлен пример файла
dial.
dialer normal
chat "" ATZ OK ATDT\T CONNECT
Листинг 9.10.
Пример конфигурации ведущего UUCP-компьютера
в файле dial (для Taylor UUCP)
Чтобы проверить правильность заданной
конфигурации, пользователь, обладающий правами
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
Ä /var/spool/uucp/ispmail/C./C.ispmailA0000
5,10,15,20,25,30,35,40,45,50,55 * * * */usr/sbin/uucico
-s ispmail
Листинг 9.11.
Строки в файле cron для автоматического
запуска UUCP
В
первой строке каждые 5 минут создается файл, в
котором uucico
указывается опросить удаленный узел. Во второй
строке запускается программа для обработки
заданий из очереди.
Вопросы перенаправления почты через UUCP-соединение
на почтовый узел провайдера Internet более
подробно рассмотрены в лекции 13, "Подключение
почтового сервера к провайдеру Internet".
Ведомый
компьютер в сеансе UUCP
Ведомый компьютер в сеансе UUCP ожидает
появления запросов на установление соединения от
ведущих UUCP-компьютеров. И снова нам
понадобится файл конфигурации
config. Он
представлен в листинге 9.12.
nodename ispmail
Листинг 9.12.
Пример конфигурации ведомого UUCP компьютера
в файле config (для Taylor UUCP)
За
ним следует файл конфигурации
sys. Поскольку
ведомый компьютер не вызывает удаленные системы
и доступ к файловым областям не предоставляется,
то этот файл имеет тривиальный вид. Пример файла
sys показан в
листинге 9.13.
system shadrach
port dialin
time Never
commands rmail
Листинг 9.13.
Пример конфигурации ведомого UUCP-компьютера
в файле sys (для Taylor UUCP)
В
файле конфигурации port
для поддержки входящих соединений также нет
сложных настроек. Все клиенты при подключении
самостоятельно запускают программу
uucico, так что в
этом файле лишь нужно указать тип соединения.
Пример файла port
представлен в листинге 9.14.
port dialin
type stdin
Листинг 9.14.
Пример конфигурации ведомого UUCP-компьютера
в файле port (для Taylor UUCP).
Так как ведомый компьютер не осуществляет вызов
удаленных компьютеров, то файл
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-соединению.
|