![]() |
|
Почтовый файловый сервер
Данное описание является обновленной версией текста главы 7 книги "Электронная почта в системе MS-DOS. Официальное руководство компании "Релком" (ISBN 5-7580-0072-8, Санкт-Петербург, "Символ", 1995). Содержание:
Введение
Не довольствуясь сим, он ходил еще В ряде узлов сети EUnet/Relcom в настоящее время существуют архивы файлов, содержащих информацию самого разного характера: тексты программ, документацию, техническую и художественную литературу, графические изображения, звуковую информацию и др. Подобного рода архивы имеются и в узлах различных зарубежных сетей. Почтовый файловый сервер является специальной программой, постоянно функционирующей на тех узловых машинах сети, которые предоставляют доступ к своим архивам файлов по электронной почте. Основной функцией файловых серверов является пересылка тех или иных файлов из соответствующих архивов по командам от абонентов. В данном документе работа с файловым сервером рассматривается на примере сервера mailserv@relcom.ru, функционирующего в рамках узла Релком-Москва (kiae) провайдера "Релком. ДС". Рассматриваемый почтовый файловый сервер предоставляет Вам доступ к Киархиву - общедоступному файловому архиву узла kiae. Список адресов других наиболее известных российских почтовых файловых серверов можно найти в работе "Электронная почта в сети EUnet/Relcom: работа с информационными архивами" (Иванов В.А., Иванова Е.В., 1996-1997); последняя версия этого документа хранится в Киархиве в файле /relcom/netinfo/archives-by-email.txt . Почтовые файловые серверы различных узлов имеют некоторые различия в наборах команд и могут иметь ограничения доступа для определенных категорий пользователей. Активно интересующимся состоянием архивов в сети EUnet/Relcom рекомендуем подписаться на телеконференции relcom.archives (сообщения о новых поступлениях в архивы) и relcom.archives.d (дискуссии по архивной тематике). 1. Как обратиться к серверу
По аналогии с сервером телеконференций обращение к файловому серверу выполняется с помощью специального языка команд, предложения которого помещаются в текст письма, посылаемого файловому серверу по адресу: mailserv@relcom.ru Заметим, что тему письма (в поле Subject заголовка) указывать необязательно, поскольку она игнорируется сервером.
Мы рекомендуем начинать работу с файловым сервером с простейшего задания,
содержащего единственную команду:
По этой команде сервер вышлет Вам краткое описание своих команд (учитывающее все усовершенствования, введенные после подготовки данной главы к печати). HELP содержит текст на русском и английском языках. Задание для сервера (как и для сервера телеконференций) нужно завершать командой QUIT (все строки письма, следующие за этой командой, игнорируются). Команда HELP - исключение, она сама по себе отрабатывает конец задания. Если сервер встречает нераспознанную команду или неверно заданные параметры, он прекращает обработку задания и возвращает протокол работы с указанием ошибки.
2. Имена каталогов и файлов
Имена файлов и каталогов (директорий) в Киархиве соответствуют правилам образования имен, характерным для операционных систем типа UNIX. Это обстоятельство следует учитывать пользователям, работающим в MS-DOS. Основные отличия от MS-DOS следующие:
В заданиях серверу можно использовать как полные (начинающиеся с символа '/') имена, так и относительные (относительно текущего каталога), например:
Имя файла может содержать символы-шаблоны '*' (любой идентификатор) и '?' (один произвольный символ), например:
Имя, таким образом, может представлять и группу файлов. 3. Получение файлов от сервера (команда GET)
Запрос серверу на пересылку файла (файлов - если файл задан шаблоном) имеет
следующий вид:
Например:
Файловый сервер не может отличить текстовые файлы от двоичных. Поэтому считает все файлы в Киархиве двоичными. А поскольку в электронной почте не допускается прямая передача двоичных файлов, сервер преобразовывает любой файл в текстовое представление. Такая операция называется кодированием (а обратная - раскодированием). По умолчанию она выполняется с применением программы uuencode (другие возможности для этого будут описаны в разделе 12).
После получения от сервера файлов каждый из них необходимо раскодировать соответствующей программой. Подробнее этот вопрос рассмотрен в разделе 16, а сейчас остановимся на стандартном случае раскодирования принятых файлов при помощи программы bml. Небольшой файл будет выслан Вам одним письмом (в теме письма будет указано имя файла). В этом случае нужно выполнить над этим письмом операцию {Письмо: Извлечь данные:}. В результате на вашем диске появится файл с соответствующим именем и в том же виде, в котором он хранится в Киархиве. Файлы большого размера высылаются сервером в нескольких частях (несколькими письмами). Для раскодирования всего файла необходимо при включенном режиме сортировки по теме {Настройки:Сортировка писем:Тема:} выделить все части принятого файла, после чего выполнить операцию {Письмо: Извлечь данные:} над выделенной группой писем. 4. Получение текстовых файлов от сервера (команда READ)
Большая часть файлов в Киархиве хранится в архивированном и упакованном виде (в виде файлов типа .zip, .arj, .tar.Z, .tgz и др.). Однако встречаются и файлы, содержащие текстовую информацию в непосредственно читаемом виде. Их имена часто оканчиваются на .txt . Относительно небольшие текстовые файлы (или небольшие части файлов), хранящиеся в Киархиве в неархивированном и неупакованном виде, часто удобнее получать при помощи команды READ (а не при помощи команды GET):
Тексты заказанных по команде READ файлов будут включены в отсылаемый пользователю протокол сеанса взаимодействия с сервером (Mail Server Reply), и при работе с ними при помощи вашей программы чтения писем (напр., bml) произойдет автоматическое перекодирование текста из кода koi8-r, в котором такие текстовые файлы принято хранить в Киархиве, в альтернативную кодировку MS-DOS. Таким образом, Вы избавите себя от необходимости дополнительной обработки полученных текстовых файлов. Текстовые файлы большого объема пересылать таким способом неэффективно, их приходится заказывать командой GET при включенной упаковке (см. команду ARCHIVER в разделе 13). 5. Задание текущего каталога (команды CD и PWD)
В некоторых случаях удобнее пользоваться не полными, а относительными именами
файлов в текущем каталоге. По умолчанию перед анализом первой команды задания
текущим объявляется корневой каталог архива ('/'). Переход на использование
любого конкретного каталога в качестве текущего можно выполнить следующим
образом:
Например:
или
(в последнем случае использовано относительное имя каталога).
Переход на использование в качестве текущего корневого каталога, если
потребуется, можно выполнить командой:
или просто:
Иногда, особенно в письмах серверу с большим количеством команд (что,
естественно, увеличивает вероятность ошибок), полезно для контроля применить
следующую команду:
6. Списки файлов (команды DIR и LS)
Для получения списков файлов и каталогов можно использовать следующие команды:
Любой из представленных вариантов команды DIR может включать в качестве
дополнительных параметров имена каталогов, информация о которых Вас интересует.
Наиболее полный формат будет иметь следующий вид:
Пример:
Команда LS может быть задана и с параметрами, причем в любом из вариантов, которые допускает команда DIR. 7. Содержимое Киархива
В предыдущих разделах мы рассмотрели основные команды сервера, необходимые для заказа файлов. Теперь необходимо дать начальное представление о той информации, которую можно получить из конкретного архива (Киархива) при помощи файлового сервера. В Киархиве содержится только та информация, свободное распространение которой допускается ее авторами или правообладателями. Перечень основных тематических секций Киархива:
Приведенное тематическое деление архива соответствует текущему моменту и подвержено различным изменениям, связанным с постоянным совершенствованием структуры архива. 8. Списки файлов и каталогов в Киархиве
Справочная информация по содержимому Киархива (списки файлов и каталогов) находится в следующих файлах: В каждом каталоге:
В корневом каталоге Киархива (/) и в каждой из тематических секций
(/msdos, /unix и т.д.):
Все перечисленные справочные файлы формируются ежедневно. Неупакованные файлы, перечисленные выше, являются текстовыми и после их получения при помощи команды GET требуют декодирования и преобразования в код MS-DOS (этого не требуется, если вы пользовались командой READ). Упакованные файлы (0index-r.zip и ls-lR.Z) после декодирования должны быть соответствующим образом разупакованы.
Заметим также, что часто достаточно заказать нужные справочные файлы не из корня Киархива, а только из интересующих Вас тематических секций. Информация о новых поступлениях в Киархив регулярно публикуется в телеконференции relcom.archives: под заголовком "Kiarchive Weekly" по понедельникам можно видеть содержимое файла /0week-recursive, а в начале каждого месяца под заголовком "Kiarchive Monthly" - /0month-recursive. 9. Файлы с краткой информацией о Киархиве и сервере
В Киархиве имеется ряд файлов, содержащих краткую информацию о Киархиве и его почтовом файловом сервере. Они могут оказаться полезными, так как существенно компактнее содержимого данной главы. Кроме того, при относительно высокой скорости модификации серверов в такие файлы можно оперативно внести изменения. К числу таких файлов относятся:
Эти файлы являются текстовыми и содержат тексты на русском языке. Поэтому
заказывать их удобнее cледующим образом:
10. Получение дополнительной информации о файлах (команда INFO)
Для многих файлов в Киархиве имеется краткая справочная информация о
содержимом этих файлов. Обычно она соответствует информации о файлах,
получаемой по команде DIR, однако может содержать и более полную
информацию. Получение такой информации (для одного или нескольких
файлов) выполняется командой:
11. Поиск файлов и каталогов по образцу (команда FIND)
Специальная команда может быть использована для поиска файлов по одному
или нескольким образцам. Поиск ведется без различия прописных и строчных
букв. Совпадения ищутся как в именах файлов или каталогов (в последнем
элементе полного имени файла или каталога), так и в комментариях к ним.
Команда имеет следующий формат:
сеть EUnet/Relcomи т.п.
По команде
/msdos/relcom/ache/uupc5.09gamma/ /relcom/msdos/ache/uupc5.09gamma/
По команде
/msdos/convert/bin2text/uuexe525.zip В образцах допустимы следующие метасимволы:
По команде FIND выдается информация не более чем о 500 файлах, удовлетворяющих заданному критерию. 12. Варианты кодирования файлов (команда ENCODER)
Получив команду GET, сервер обрабатывает файл следующим образом. Если файл не упакован (это распознается по наличию одного из стандартных расширений), он, если это предусмотрено в задании серверу, запаковывается одним из архиваторов (см. раздел 13). Полученный двоичный файл затем перекодируется в текстовое представление (7-битное) одним из возможных способов (по умолчанию uuencode) и, если он слишком большой, разделяется на несколько более мелких частей (см. раздел 14). Тип перекодировки можно изменить командой ENCODER с параметром, который может принимать следующие значения:
Программа ship обеспечивает также функции, рассматриваемые в разделах 13 и 14, равно как и обратные операции. Программы uuencode и uudecode из комплекта uuexe*zip работают по аналогии с ship, но используют кодирование uuencode.
13. Упаковка файлов (команды LIST, ARCHIVER, EXTRACT)
Большинство файлов в Киархиве хранится в упакованном представлении, в виде так называемых архивных файлов, создаваемых специальными программами-архиваторами. В каждом архивном файле представлена обычно группа исходных файлов, хотя вовсе не исключена возможность архивации и одного файла. Наиболее распространенные типы архивных файлов, которые имеет смысл использовать в MS-DOS, таковы:
Первые четыре строки отражают "юниксовское" происхождение архиватора tar. В этой системе традиционно архиваторы не сжимают информацию, это делают программы компрессии, в нашем случае:
Архиваторы типа zip, arj и lharc достаточно традиционны в практике работы в MS-DOS. Иногда используются архиватор zoo, обеспечивающий высокий уровень компрессии, и упаковщик gzip.
Для многих типов архивных файлов можно получить справку о входящих в них
исходных файлах с помощью следующей справочной команды с параметрами -
названиями архивных файлов:
Стандартно устанавливается режим работы без упаковки. Если Вас это не
устраивает, то Вы можете изменить способ архивирования следующей командой:
Если заданный режим - не none, каждый файл, указанный в команде GET, будет разархивирован и разупакован, после чего каждый входящий в него файл по отдельности (!) будет архивирован и упакован заново в соответствии со значением параметра.
Иногда возникает необходимость взять не весь архивный файл, а вычленить из
него один или несколько файлов. Это можно сделать командой EXTRACT:
где параметр 'архив' задает имя архивного файла, а остальные параметры определяют имена файлов, которые нужно извлечь из него. Указанные файлы извлекаются из архива (архив распаковывается!), упаковываются (в соответствии с режимом, установленным ARCHIVER), кодируются (в соответствии с режимом ENCODER) и после возможного разделения на части (см. раздел 14) отсылаются по почте. Если имена файлов не указаны, отсылается весь (переупакованный!) архив.
Пример:
14. Деление файлов на части (команды SIZE, LIMIT, SPLIT)
Электронная почта не предназначена для передачи большого объема данных одним письмом.
По умолчанию сервер сначала перекодирует бинарный файл в текстовое
представление, затем делит полученный текст на части, каждая из которых
имеет размер не больше 30 килобайт. Эту величину можно изменить командой
SIZE с параметром, указывающим предельный размер в килобайтах, например:
Для предотвращения передачи избыточного количества информации в результате
ошибки при составлении задания введено ограничение на общий объем передачи
файлов по командам GET за один сеанс работы с сервером. Узнать текущее
значение этого ограничения можно командой:
Очередной файл, при передаче которого было зафиксировано превышение установленного ограничения, будет выдан полностью, после чего остальные файлы уже передаваться не будут.
Установленное ограничение можно изменить, указав его значение в килобайтах.
Например, команда:
Выполнив деление файла, сервер отправляет пользователю каждую часть отдельным письмом. Такие письма содержат информацию об общем количестве отправленных частей файла и последовательных номерах частей. Описанный способ деления файла на части, называемый текстовым, обычно не вызывает трудностей при сборке файла из частей после их получения. При желании можно использовать и обратный алгоритм: сначала поделить двоичный файл на части, затем каждую из них по отдельности перекодировать в текст. Такое деление называется двоичным или бинарным. Изменение способа деления файлов на части делается командой SPLIT с параметром, который может принимать одно из следующих значений:
Пример:
15. Как получить недостающие части файла?
Иногда бывает, что одна или несколько частей файла не доходят до адресата.
Сервер позволяет, не заказывая снова весь файл, получить только недостающие
части. Для этого служит специальный параметр '-#', где # - список нужных
частей, который может применяться в командах GET и EXTRACT, например:
Дозапрашиваются части 3, 5, 6, 7, 8, 9, 13, 14, 15.
Применяемые для этой цели команды могут иметь вид:
16. Как раскодировать файлы, приходящие с сервера?
Способ раскодирования каждого полученного файла зависит от того, как файл был закодирован при передаче и на какое число частей он был поделен. Это приводит к нескольким различным вариантам раскодирования. Стандартными являются варианты 1 и 3.
17. Как распаковывать файлы?
После раскодирования Вы получили файл в том виде, в котором он хранится в Киархиве. Файлы типа .zip или .arj привычны для пользователей MS-DOS. В данном разделе рассматриваются типы файлов, вызывающие наибольшие трудности у пользователей, работающих в MS-DOS. Рассмотрим следующие варианты:
18. Перекодировка текстов из koi8-r в код MS-DOS
Как уже было рассмотрено в разделе 4, текстовые файлы, полученные при
помощи команды READ, перекодируются из koi8-r в код MS-DOS автоматически.
Если же Вы используете для получения текстового файла команду GET, то после
приема и раскодирования полученного файла необходимо произвести
преобразование кодировки текста из koi8-r в код MS-DOS. Эту же операцию
приходится делать, если текстовый файл в кодировке koi8-r был получен в
составе архивированного и упакованного файла (или извлечен из такого файла
при помощи команды EXTRACT). Перекодировку в код MS-DOS можно выполнить с
помощью специальной программы todos:
Эту программу можно получить из Киархива, она включена в состав файла /msdos/convert/char/d1489e*.zip . (Если переименовать ее во fromdos, то она будет выполнять обратное преобразование, переименованный вариант также включен в состав указанного .zip-файла.) 19. Где взять программы преобразования для MS-DOS?
Тексты и бинарные дистрибутивы программ архивирования, упаковки и кодирования для MS-DOS регулярно рассылаются в телеконференции comp.binaries.ibm.pc . Все упоминавшиеся ранее и ряд других программ для архивирования (разархивирования), компрессии (декомпрессии), кодирования (раскодирования), а также для преобразования кодировок текстовых файлов и инструкции к ним для работы в MS-DOS Вы можете найти соответственно в следующих каталогах Киархива:
Обратите внимание на популярные в последнее время программы uuencode и uudecode из комплекта /msdos/convert/bin2text/uuexe*.zip, которые очень быстро выполняют текстовое деление файла на части и кодирование (uuencode), равно как и обратные операции. Для пользователей MS-DOS представляет интерес и программа tar.exe, содержащаяся в файле /msdos/arcers/tar*p.zip, позволяющая работать с характерными для среды UNIX файлами типа *.tar, *.tar.Z, *.tar.gz или *.tgz . 20. Как поместить файл в Киархив?
К присылаемым в Киархив файлам предъявляются два основных требования: содержимое должно представлять интерес для абонентов сети и их распространение не должно нарушать прав собственности, авторских и других. Прежде чем послать файл, следует внимательно ознакомиться с текстом уже упоминавшегося ранее файла /UPLOADING-rus в Киархиве с подробным описанием такой процедуры. Ее краткая суть заключается в том, что Вы предварительно посылаете администратору Киархива (kiarchive-adm@relcom.ru) заявку на включение Вашего файла в Киархив, причем определенного содержания и в определенной форме. Хотя формат заявки очень похож на предложения заголовка письма, текст заявки должен быть полностью помещен в самом письме. Посылать файл следует только после получения соответствующего согласия на это от администратора Киархива. Большие файлы приходится сначала упаковывать, кодировать и, возможно, разбивать на части, отсылаемые отдельными письмами. Подготовленные к отсылке части необходимо оформлять в стиле, близком к стилю аналогичной работы сервера. Двоичное разбиение будет представлять определенные трудности. Куда проще использовать разбиение текстовое. Его несложно выполнить после кодирования даже "вручную". Для этого Вы можете применить любой текстовый редактор, выделяя им в отдельную часть целое число строк файла. Операции кодирования и последующего деления на части требуемого объема можно сделать и автоматически с помощью программ uuencode (из комплекта uuexe*.zip) или ship.
При кодировании uuencode команда:
При кодировании ship команда:
21. Контактные адреса
Администратор файлового сервера всегда готов помочь Вам в разрешении проблем, которые могут возникнуть у Вас при работе с сервером. Однако прежде чем обращаться к администратору, загляните еще раз в HELP - практика показывает, что большую часть вопросов задают пользователи, ни разу не читавшие этот документ. В Ваших письмах администратору желательно цитировать полученные Вами ответы сервера (Mail Server Reply), иллюстрирующие возникшую проблему. Адрес администратора почтового файлового сервера узла kiae: mailserv-adm@relcom.ru По этому же адресу Вы можете послать Ваши предложения по улучшению и развитию данного сервера. Если же Ваши проблемы связаны с информацией, содержащейся в конкретных файлах в Киархиве, или же с отсутствием каких-либо файлов, а также если Вы имеете предложения по улучшению структуры или содержимого Киархива, то лучше написать письмо непосредственно администраторам Киархива по адресу: kiarchive-adm@relcom.ru Л.Н.Яснопольский, lny@relcom.ru | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||