ьзует адреса в формате Internet: польз@машина.д1.д2... где польз - регистрационное имя пользователя на удален- ной машине, машина - имя машины, а поля д1...дn обра- зуют имя домена, определяющего логическую принадлеж- ность машины к какой-либо организации, подразделению, стране и т.д. Например, сетевой адрес avg@avg386.hq.demos.USSR.COM означает, что адресат avg работает на машине avg386, расположенной в московском отделении (hq) ДЕМОСа (demos), CCCР (USSR). Последнее поле обозначает тип организации: COM - коммерческие организации GOV - гос. учреждения ORG - бесприбыльные организации EDU - учебные заведения MIL - военные предприятия Таким образом, каждая машина в мире должна иметь свой уникальный адрес, построенный по иерархическому прин- ципу. Способ построения Internet-овского адреса никак не связан с физической конфигурацией линий связи. Вообще говоря, почтовая служба не различает большие и маленькие буквы в Internet-овском адресе; тем не менее лучше их указывать точно для совместимости с другими почтовыми службами. Для удобства пользования допуска- ется сокращение адресов путем отбрасывания частей имени с конца в тех случаях, когда это обеспечивает распозна- вание адреса машины. (Обычно можно отбрасывать часть имени получателя, совпадающую с частью полного имени Вашей машины). Internet-овский адрес в отличие от адреса UUCP обычно не содержит явного маршрута для передачи сообще- ний. Если нужно построить комбинированный адрес для пересылки сообщения через две сети, используется следу- ющее правило: если сначала сообщение нужно переслать по сети с адресом типа Internet, а затем по UUCP, то адрес строится следующим образом: b!c!d!u@a - 15 - где a - Internet-овское имя первой машины, b, c, d - имена машин, доступных через UUCP и u - имя пользова- теля. Если же сообщение сначала должно передаваться по UUCP, то разделитель @ заменяется на %, например: a!b!c!u%d где a, b, c - имена машин, доступных через UUCP, d - Internet-овское имя последней машины и u - имя пользо- вателя. Когда Вы пользуетесь командой Reply для ответа на письмо, возникает проблема, как сформировать имена пользователей в списках To: и Cc: относительно данной машины. Если исходное письмо послано Вам с локальной машины, этой проблемы не существует; ситуация сложнее, если письмо пришло с удаленной машины. Программа mailx использует эвристику для построения корректного имени каждого пользователя относительно локальной машины. Так, когда Вы говорите Reply для ответа на письмо, имена в списках To: и Cc: несколько изменятся. 4.3. Специальные адресаты Как описано выше, можно посылать сообщения по именам пользователей и по псевдонимам. Существует также воз- можность посылать почту непосредственно в файл, исполь- зуя некоторые соглашения. Если имя адресата содержит символ `/' или начинается со знака `+', то считается, что это полное имя файла, в который следует послать сообщение. Если файл уже существует, сообщение дописы- вается к его концу. Если нужно указать файл в текущем каталоге (т. е. знака `/' в его имени не требуется), можно начать его имя с `./'. Так, для посылки почты в файл memo в текущем каталоге можно дать команду: % mailx ./memo Если имя файла начинается со знака `+', оно расширяется в полное имя архивного файла в Вашем архивном каталоге. Эта возможность используется для разнообразных целей, таких, как ведение журнала и запись почты, посланной какой-либо группе пользователей. Второе можно делать автоматически, включив полное имя файла для записи в команду alias для этой группы. Например, по команде alias duet dmitry rita /usr/duet/mail_rec_ вся почта, отправленная по псевдониму duet, будет сох- раняться в файле /usr/duet/mail_record как только будет послана данной группе пользователей. Этот файл можно просмотреть, используя mailx с ключем -f. - 16 - 5. Дополнительные возможности В этом разделе описаны некоторые дополнительные команды, которые используются для прочтения почты, установки переменных и обработки списка сообщений. 5.1. Списки сообщений Некоторым командам mailx передается в качестве аргу- мента список сообщений. Кроме команд type и delete, описанных в разделе 2, есть команда from, которая пока- зывает заголовки сообщений из списка, который ей пере- дается. Команда from полезна в сочетании с некоторыми возможностями по обработке списка сообщений, описанными ниже. Список сообщений состоит из номеров сообщений, диа- пазонов и имен, разделенных пробелами или табуляциями. Номера сообщений могут быть либо десятичными числами, которые непосредственно указывают на сообщение, либо одним из специальных символов `^', `.' или `$' для ука- зания первого подходящего, текущего или последнего под- ходящего сообщения соответственно. Подходящее здесь означает неудаленное для большинства команд и удаленное для команды undelete. Диапазон сообщений состоит из номеров двух сообщений (в том виде, как описано в предыдущем параграфе), раз- деленных знаком `-' (минус). Так, например, напечатать первые четыре сообщения можно так: type 1-4 а напечатать все сообщения, начиная с текущего и до последнего, так: type .-$ Имя - это имя пользователя. Имена пользователей, заданные в списке сообщений, собираются все вместе, и каждое сообщение проверяется на предмет, было ли оно послано одним из названных пользователей. Если список состоит только из имен пользователей, то выбираются все сообщения, посланные этими пользователями, которые являются подходящими (в том же смысле). Так, чтобы напечатать все сообщения, посланные Вам пользователем root, выполните type root Коротко Вы можете сказать просто `*' для получения всех подходящих (в том же смысле) сообщений. Так, type * печатает все неудаленные сообщения, - 17 - delete * удаляет все неудаленные сообщения, а undelete * восстанавливает все удаленные сообщения. Можно проверять сообщения на присутствие в заголовке определенного слова при помощи `/'. Например, для печати заголовков всех сообщений, содержащих слово PAS- CAL, выполните: from /pascal Обратите внимание, что поиск слова в заголовке игнори- рует разницу между верхним и нижним регистрами. 5.2. Список команд В этом разделе описаны все команды программы mailx, которыми можно пользоваться при получении почты. ! Используется перед командой shell, которую надо выполнить. - Команда `-' переходит к предыдущему сообщению и печатает его. Этой команде можно передавать как аргумент десятичное число n, в этом случае проис- ходит переход к n-ному сообщению и оно выдается. Print то же, что и print, но при печати выдает все поля заголовка. См. также print и ignore. reply Формирует ответ на одно или более сообщений. Ответ (или ответы, в случае нескольких сообщений) будет послан только тому человеку, от которого получено сообщение (соответственно, группе людей, пославших сообщения, на которые Вы отвечаете). Можно добавить адресатов, пользуясь управляющими последовательностями ~t и ~c. Предметный заголо- вок ответа формируется из предметного заголовка исходного письма путем добавления к началу строки слова Re:. Если заголовок исходного письма содер- жит поле Reply-to, то ответ будет послан только адресатам, перечисленным в поле Reply-to. При вводе текста сообщения используются те же соглаше- ния, что и в команде mail. Команда reply особенно полезна для ответов на сообщения, посланные боль- шой группе пользователей, если Вы хотите послать письмо именно автору сообщения. Type то же, что и команда Print. forward Пересылает текущее сообщение всем пользователям, - 18 - указанным в списке аргументов команды. Содержимое сообщения никак не изменяется, а в заголовок допи- сываются поля вида Resent-From:, идентифицируюшие того, кто переслал сообщение. alias Определяет имя, подставляемое вместо списка других имен. Это полезно, если Вы посылаете сообщения некоторой группе людей и хотите избежать переписы- вания всех имен каждый раз. Например, alias project lena dima vlad anna создает псевдоним project, который расширяется в четыре имени lena, dima, vlad и anna. alternates Если Вы зарегистрированы на нескольких машинах, удобнее пользоваться /usr/lib/aliases на всех этих машинах, вместо того, чтобы направлять всю свою почту в одно место. Команда alternates использу- ется, чтобы сообщить mailx, что все эти адреса действительно Ваши. Команда alternates получает в качестве аргумента список имен пользователей и напоминает, что все они в действительности принад- лежат Вам. Когда Вы отвечаете на письмо, пришед- шее на одно из альтернативных имен, при помощи команды reply, программа mailx не будет посылать копию сообщения по другим альтернативным именам. Если команда alternates вызывается без аргументов, она выдает текущее множество альтернативных имен. Команда alternates обычно используется в файле .mailrc. chdir Команда chdir позволяет изменить текущий каталог. Она вызывается с одним аргументом, который воспри- нимается как полное имя каталога, в который сле- дует перейти. Если аргумент не задан, chdir пере- ходит в Ваш регистрационный каталог. copy Команда copy делает то же, что и save, только сообщения, скопированные этой командой, при окон- чании работы не удаляются из почтового ящика. delete Удаляет список сообщений. Удаленные сообщения можно восстановить командой undelete. dt,dp Команда dt (или dp) удаляет текущее и печатает следующее сообщение. Она полезна для быстрого просмотра почты. edit Для редактирования отдельных сообщений при помощи текстового редактора предусмотрена команда edit. Команда edit получает такой же список сообщений, как и команда type, и обрабатывает их, переписывая - 19 - в файл MessageN, N - номер сообщения, которое сле- дует отредактировать, и запускает на этот файл текстовый редактор. Когда, отредактировав собще- ние, Вы выходите из редактора, программа mailx читает сообщение обратно и удаляет файл. Сокра- щенная форма команды edit - e. else Отмечает конец части then оператора if и начало той части, которую следует выполнить, если условие оператора if неверно. endif Помечает конец оператора if. exit Выход из mailx без изменения системного почтового ящика или файла, из которого Вы читали. Так, если Вы случайно удалили несколько сообщений, можно воспользоваться командой exit, чтобы не запортить Ваш почтовый файл. Сокращенная форма команды exit - x. file То же, что и folder. folders Показывает имена архивных файлов из Вашего архив- ного каталога. folder Команда folder переключается на новый почтовый или архивный файл. Вызванная без аргумента, эта команда говорит Вам, какой файл сейчас читается. Если Вы передаете ей аргумент, она указывает, какие изменения (такие, как удаление сообщений) сделаны в текущем файле и читает новый файл. В имени файла приняты следующие соглашения: Имя Значение __________________________________________________ # читать предыдущий файл % Ваш системный почтовый ящик %имя системный почтовый ящик пользователя имя & Ваш файл ~/mbox +файл Ваш архивный файл from Команда from печатает заголовки всех указанных сообщений; так, команда from polina выдаст заголовки всех сообщений, полученных от пользователя polina. headers Когда Вы вызываете программу mailx для чтения почты, она печатает заголовки всех полученных - 20 - сообщений. В заголовках написано, от кого получено сообщение, когда оно отправлено, сколько в нем строк, и поле Subject: у всех сообщений, у которых оно есть. Кроме того, mailx добавляет в заголовки всех сообщений, на которые выполнялась команда preserve, букву P. Сообщения, которые были сохра- нены или записаны, помечаются знаком `*'. Нако- нец, удаленные сообщения не печатаются вовсе. Если Вам надо перепечатать текущий список заголов- ков сообщений, можно это сделать командой headers. Команда headers (так же, как и начальная выдача заголовков сообщений) показывает только первые несколько заголовков. Число показываемых заголов- ков зависит от скорости Вашего терминала. Его можно изменить, указав нужное число переменной screen. Программа mailx помнит, с какой частью сообщений (окном) она сейчас работает. Для пере- хода к следующему или предыдущему окну использу- ется команда z. Можно переместить значение теку- щего окна mailx непосредственно на определенное сообщение, используя, например, команду headers 40 Команда headers сокращается как h. headline Эта команда позволяет добавлять новые поля в заго- ловок отправляемого сообщения; так, например, после команды headline Organization Wild Hacker's Club, Moscow в заголовок каждого сообщения будет добавляться строка Organization: Wild Hacker's Club, Moscow В строке можно использовать специальные конструк- ции $$ - символ `$', $a - дата в формате сети ARPA, $d - дата в формате системы Unix, $i - уникальный номер исходящего сообщения, $r - реальное имя пользователя (из файла /etc/passwd или переменной realname). $h - официальное имя машины в Internet, $u - регистрационное имя пользователя. Если команде headline указано только имя поля, то она удалит это поле из набора вставляемых в заго- ловки исходящих сообщений. Команда headline без аргументов печатает список всех дополнительных полей заголовка. Эта команда обычно используется только в стартовых файлах /usr/lib/Mail.rc и .mailrc. - 21 - help Выдает краткое описание команд mailx. hold Сохраняет сообщения из полученного списка в сис- темном почтовом ящике вместо того, чтобы помещать их в файл mbox в Вашем регистрационном каталоге. Если Вы установите логическую переменную hold, это будет делаться по умолчанию. if Команды из Вашего файла .mailrc могут выполняться в зависимости от того, посылаете Вы или получаете почту. Это делается по команде if. Например, можно сказать: if receive команды... endif Также можно пользоваться частью else: if send команды... else команды... endif Обратите внимание, что возможны только два усло- вия: receive и send. ignore Добавляет перечисленные поля заголовков сообщений к списку игнорируемых полей. Поля из этого списка не выводятся на терминал при печати сообщения. Это позволяет опустить печать некоторых полей, генери- руемых автоматически, например, Received, которые обычно никого не интересуют. Команды Type и Print позволяют просматривать сообщение целиком, включая игнорируемые поля. Специальное имя поля -from можно использовать если надо игнорировать служеб- ную строку From ... в начале сообщения. Если команда ignore вызывается без аргументов, она выдает текущее множество игнорируемых полей. Аль- тернативоне имя этой команды - discard. list Выдает список действующих команд программы mailx. local задает список локальных имен Вашей машины. Эта команда полезна если машина известна под несколь- кими именами. Имена могут быть полными именами машины или именами доменов. Первое имя в списке должно быть официальным именем машины. Имена из этого списка mailx использует для того, чтобы определять являются ли имена локальными на этой машине; например: local viista.public.USSR frob.steel.USS frobvax.cbs.USSR r.public.USSR - 22 - Из этого списка можно сделать вывод, что имена vasya@viista.public nina@frob.steel и bibi@r относятся к пользователем на текущей машине. Команда local обычно не используется пользовате- лями непосредственно т.к. она описывает конфигура- цию сети, ее обычно используют в файле /usr/lib/Mail.rc. lpr Команда lpr печатает список сообщений, используя значение переменной LPR (если задано). mail Посылает почту одному или нескольким пользовате- лям. Если установлена переменная ask, mailx выдает приглашение для ввода предметного заголовка сообщения. После этого можно вводить текст сооб- щения, пользуясь управляющими последовательнос- тями, как описано в разделе 4, для редактирования, печати или модификации сообщения. Когда сообщение готово, для отправления его введите CTRL/D в начале строки или (если установлена переменная dot) точку на отдельной строке. Для отмены письма введите два символа прерывания (по умолчанию CTRL/C) подряд или воспользуйтесь управляющей пос- ледовательностью ~q. mbox Показывает список сообщений, которые будут запи- саны в файл mbox в Вашем регистрационном каталоге при выходе из программы mailx. Это делается авто- матически, если у Вас не установлена переменная hold. next Команда next переходит к следующему сообщению и печатает его. Если задан список сообщений, next переходит к первому из них и печатает его. Так, next root переходит к следующему сообщению, полученному от пользователя root и выводит его. Команду next для краткости можно заменять символом новой строки, то есть можно перейти к сообщению, задав его номер или один из "магических" символов `^', `.' или `$'. Так, команда . выдает текущее сообщение, а команда 4 печатает сообщение 4, как описано выше. - 23 - preserve То же, что и hold. Помечает список сообщений для сохранения в системном почтовом ящике при выходе из mailx. quit Завершает работу программы mailx и приводит в соответствие файл, архивный файл или системный почтовый ящик, который Вы читали. Сообщения, которые Вы прочитали, помечаются как read, а сооб- щения, существовавшие до начала сеанса, помечаются как old. Если Вы редактировали Ваш системный поч- товый ящик и у Вас установлена переменная hold, все неудаленные, несохраненные и не записанные в mbox сообщения возвращаются в Ваш системный почто- вый ящик. Если Вы редактировали Ваш системный почтовый ящик и переменная hold не установлена, все сообщения, каторые не были удалены, сохранены или возвращены в системный почтовый ящик, помеща- ются в файл mbox в Вашем регистрационном каталоге. Reply Ответ посылается тому, кто послал Вам сообщение, на которое Вы отвечаете, а также всем людям, полу- чившим исходное сообщение, кроме Вас. Можно доба- вить адресатов, пользуясь управляющими последова- тельностями ~t и ~c. Предметный заголовок Вашего ответа формируется из предметного заголовка исход- ного письма путем постановки перед ним слова Re:, если только его там уже не было. Если исходное письмо содержит в заголовке поле Reply-to, ответ будет отправлен только адресату, указанному в Reply-to. При вводе письма действительны те же соглашения, что и в команде mail. save Часто бывает полезно сохранять в одном файле сооб- щения на похожие темы. Эту возможность дает команда save. Команде save передается несколько номеров сообщений и имя файла, в котором их надо сохранить. Сообщения дописываются к концу назван- ного файла, что позволяет хранить несколько сооб- щений в одном файле в том порядке, в каком их туда поместили. Команда save сокращенно записывается как s. В приведенном выше примере команду save можно использовать так: s 1 2 tuitionmail Сохраненные сообщения не записываются автомати- чески в файл mbox при выходе и не выбираются командой next, если это особо не оговорено. set Устанавливает переменную или значение переменной. Используется для облегчения работы с mailx. В разделе 5.3 содержится список переменных. Перемен- ные бывают логические (в этом случае они или уста- новлены, или не установлены) и значащие. Чтобы логическая переменная option была установлена, надо выполнить команду: - 24 - set переменная Присвоить значащей переменной option значение value можно так: set переменная=значение Несколько переменных можно определить одной коман- дой set. shell Команда shell вызывает интерпретатор командного языка. При выходе из интерпретатора командного языка Вы вернетесь в mailx. Интерпретатор команд- ного языка, вызываемый по умолчанию, определяется программой mailx; его можно изменить, установив значащую переменную SHELL: set SHELL=/bin/csh source Команда source читает команды mailx из файла. Это полезно, если Вы изменили файл .mailrc и хотите его перезапустить. top Команда top получает список сообщений и печатает первые пять строк каждого из этих сообщений. Сок- ращенная форма - to. Если хотите, можете изменить число выводимых top строк, задав его переменной toplines. Для дисплея лучше задавать set toplines=10 type,print Команда type (или print) печатает список сообщений на экране терминала. Если переменная crt имеет некоторое значение и число строк в просматриваемом сообщении достигает числа, определенного crt, сообщение будет выдаваться по crt-1 строк, после чего mailx будет ожидать ввода символа новой строки. Вместо встроенной подпрограммы постранич- ной выдачи можно использовать любую внешнюю прог- рамму, если установить переменную PAGER; например, если была выполнена команда set PAGER=/usr/bin/more то все длинные сообщения будут пропускаться через программу постраничной выдачи more. undelete Команда undelete восстанавливает исходный статус сообщения, которое было удалено. Восстанавливать можно только удаленные сообщения. Сокращенная форма команды - u. - 25 - unset Действие, обратное установке логической или знача- щей переменной. uudecode Команда применяет алгоритм uudecode к указанному списку сообщений, раскодируя файлы из текстового представления обратно в бинарное (см. кодирующую управляющую последовательность ~u). Таким образом, с помощью mailx можно передавать и принимать бинарные (нетекстовые) файлы. visual Иногда необходимо вызвать один из двух возможных редакторов, в зависимости от типа используемого терминала. Для вызова экранного редактора исполь- зуется команда visual. В остальном команда visual не отличается от команды edit. Обе команды edit и visual по умолчанию вызывают определенные редак- торы. Чтобы вызывать другие редакторы, нужно присвоить переменным EDITOR и VISUAL имена стан- дартного и экранного редакторов соответственно. Можно, например, сделать так: set EDITOR=/bin/ed VISUAL=/bin/eda write Команда save записывает сообщение в файл все цели- ком, включая заголовок. Если Вам нужно записать только сам текст сообщения, воспользуйтесь коман- дой write. У команды write такой же синтаксис, как и у save. Сокращенная форма команды - w. Так, записать текст второго сообщения можно так: w 2 file.c Как видно из примера, команда write может приме- няться для пересылки текстов программ по почте. z Программа mailx показывает заголовки сообщений окнами, как было сказано в описании команды headers. Чтобы заставить mailx переключиться на следующее окно, надо выполнить команду z+ Аналогично, переход к предыдущему окну делается так: z- Переход к первому и последнему окнам сообщений производится командами z1 и z$ соответственно. - 26 - @headers, @reply, @Reply, @from Эти команды аналогичны соотвествующим командам без @, но используют в качестве адреса автора сообще- ния не абсолютный адрес из поля From: заголовка сообщения, а автоматически собранный обратный путь из служебной строки начала сообщения. Эти команды можно использовать если система доставки почты оказывается не в состоянии найти маршрут для отп- равки сообщения по абсолютному адресу. (Доставка сообщения по абсолютному адресу обычно быстрее, а использование относительного обратного пути позво- ляет разрешить проблемы при доставке ответа в сложных сетях). 5.3. Переменные В этом документе уже приводились примеры логических и значащих переменных. В этом разделе описаны все пере- менные в алфавитном порядке. Внимание: не забывайте, что имя переменной может состоять либо только из боль- ших, либо только из маленьких букв. EDITOR Значащая переменная EDITOR определяет полное имя текстового редактора, который вызывается командой edit и управляющей последовательностью `~e'. Если переменная не определена, вызывается стандартный редактор. LPR Значащая переменная, содержащая имя и ключи прог- раммы, вызывающейся для печати сообщений командой lpr. По умолчанию имеет значение lpr. PAGER Значащая переменная PAGER содержит полное имя программы постраничной выдачи, которая будет использоваться вместо встроенной подпрограммы постраничной выдачи. SHELL Значащая переменная SHELL задает имя Вашего интерпретатора командного языка, который использу- ется командой `!' и управляющей последователь- ностью `~!'. Кроме того, интерпретатор командного языка нужен для расширения имен файлов, содержащих такие метасимволы, как `*' или `?'. VISUAL Значащая переменная VISUAL определяет имя экран- ного редактора для команды visual и управляющей последовательности ~v. Если переменная не опреде- лена, используется стандартный экранный редактор. append Логическая переменная append означает, что сообще- ния, записанные в mbox, должны дописываться к концу, а не к началу файла. Обычно mailx помещает сообщения в mbox в том же порядке, в каком система - 27 - помещает их в Ваш системный почтовый ящик. Если установить переменную append, сообщения всегда будут дописываться в конец файла mbox. В любом случае дописывание будет выполняться быстрее. ask Логическая переменная ask заставляет mailx выда- вать приглашение для ввода предметного заголовка при составлении любого письма. Если Вы в ответ на это приглашение просто нажимаете клавишу Return, предметного поля в заголовке письма не будет. askcc Логическая переменная askcc устанавливается, если Вы хотите получать приглашение для ввода дополни- тельных адресатов вторых экземпляров по окончании ввода каждого сообщения. Нажатие клавиши ВК озна- чает, что Вы согласны с текущим списком. autoprint Логическая переменная autoprint заставляет команду delete работать как dp (после удаления письма сле- дующее будет печататься автоматически). Это полезно для быстрого просмотра и уничтожения сооб- щений из почтового ящика. autosign Логическая переменная autosign задает режим, при котором в конец каждого посланного сообщения добавляется файл $HOME/.signature, в котором обычно находится адрес и телефон отправителя. debug Логическая переменная debug предназначена для печати отладочной информации. Установка этой переменной равносильна использованию ключа -d в командной строке. dot Логическая переменная dot, если она установлена, заставляет mailx воспринимать точку, стоящую в отдельной строке, как знак окончания письма, кото- рое Вы составляете. escape Если Вы хотите переназначить управляющий символ, используемый при составлении сообщений, можете установить значащую переменную escape. Во внима- ние принимается только первый символ переменной escape, а если этот символ надо поставить первым в строке Вашего сообщения, он удваивается. Если Вы поменяли управляющий символ, тильда `~' теряет свое специальное значение, и его больше не надо удваивать, ставя в начале строки. folder Имя каталога для записи архивных файлов. Если имя начинается со знака `/', программа mailx считает, что это полное имя каталога, начиная от корня, иначе архивный каталог ищется относительно Вашего -