v1.0, 16 января 1996
FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.
Motif, OSF/1 и UNIX это зарегистрированные торговые марки, а IT DialTone и The Open Group это торговые марки Open Group в Соединенных Штатах и других странах.
Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ''™'' или ''®''.
MH ведет свою историю с 1977 года, с компании RAND Corporation, где были разработаны основы работы MH. MH не является единой программой для работы с электронной почтой, но подходом к тому, как лучше всего разрабатывать инструменты для чтения электронной почты. Разработчики MH провели большую работу, твердо придерживаясь принципа KISS: Keep It Simple Stupid. Вместо того, чтобы разработать одну большую программу для чтения, отсылки и обработки электронной почты, они написали специальные программы для каждого случая вашей работы с электронной почтой. Некоторым нравится MH по причине его специализации, которую очень проста и естественна. Каждый инструмент в MH выполняет одно действие, но выполняет его очень хорошо.
Кроме различных инструментов, которые можно использовать для обработки своей
электронной почты, MH прекрасно выполняет работу по сохранению
настроек каждого из этих инструментов однообразными и соответствующими друг другу. На
самом деле, если вы не совсем понимаете, как что-то должно работать, и какими должны быть
аргументы некоторой команды, то вы можете попытаться угадать и окажетесь правы. Каждая
команда MH однообразна в обработке конфигурационных файлов и
передаче параметров командной строки. Вам полезно будет помнить, что вы всегда можете
добавить -help
к команде для вывода опций этой команды.
Первым делом вам нужно убедиться, что на вашей машине с FreeBSD установлен пакет MH. Если вы устанавливали систему с компакт-диска, то для установки MH можете выполнить такую команду:
Вы увидите, что при этом будет создан каталог /usr/local/lib/mh, а в каталог /usr/local/bin будут добавлены несколько выполнимых файлов. Если вы предпочитаете откомпилировать все самостоятельно, то можете сгрузить исходный код с общедоступного ftp-сервера по адресу ftp.ics.uci.edu или louie.udel.edu.Этот учебник не является полным и подробным описанием того, как работает MH. Он предназначен для того, чтобы вы начали свой путь по дороге к более удобному и эффективному чтению электронной почты. Вы должны прочесть страницы справочной системы по различным командам. Также вас может заинтересовать телеконференция comp.mail.mh. Прочтите FAQ по MH. Лучшим источником информации по MH является книга MH и nmh Джерри Пика: электронная почта для пользователей и программистов.
Этот раздел посвящен тому, как использовать команды inc, show, scan, next, prev, rmm, rmf и msgchk. Одной из приятнейших особенностей MH является единообразие интерфейсов программ. При использовании этих программ нужно помнить одну особенность — способ задания списков сообщений. В случае команды inc это не обязательно, но с командами типа show это полезно знать.
Список сообщений может иметь вид типа 23 20 16
, что
будет означать сообщения 23, 20 и 16. Это весьма просто, но можно делать более полезные
вещи, типа 23-30
, что будет означать все сообщения с 23 до
30. Вы можете также указывать здесь в виде cur:10
, что
будет действовать на текущее сообщение и на следующие 9 сообщений. Сообщения cur
, last
и first
являются особыми обозначениями, соответствующими текущему,
последнему и первому сообщениям в почтовом ящике.
Если вы просто наберете inc и нажмете return, то начнете работать с MH. При выполнении команды inc в первый раз, она настроит вашу учетную запись для использования настроек MH по умолчанию и запросит создание каталога Mail в вашем домашнем каталоге. Если у вас имеется почта, ожидающая сгрузки, вы увидите нечто вроде следующего:
29 01/15 Doug White Re: Another Failed to boot problem<<On Mon, 15 J 30 01/16 Jordan K. Hubbar Re: FBSD 2.1<<> Do you want a library instead of 31 01/16 Bruce Evans Re: location of bad144 table<<>> >It would appea 32 01/16 Jordan K. Hubbar Re: video is up<<> Anyway, mrouted won't run, ev 33 01/16 Michael Smith Re: FBSD 2.1<<Nate Williams stands accused of sa
Это то же самое, что вы увидите при выполнении команды scan (смотрите Разд. 2.3). Если вы просто запустили команду inc без параметров, она проверит ваш компьютер на наличие электронной почты, которая предназначается вам.
Многим нравится для получения своей электронной почты использовать протокол POP. MH может работать с ним для получения вашей электронной почты. Вам нужно передать команде inc несколько аргументов командной строки.
Это укажет команде inc на соединение с mail.pop.org
для сгрузки вашей электронной почты, а также
сообщит о том, что ваше имя пользователя в той системе username. Параметр -norpop
указывает команде inc на использование обычного POP3
для сгрузки вашей электронной почты. В MH имеется
поддержка нескольких разновидностей POP. Более чем вероятно, что вам никогда не
придется ими пользоваться. Хотя с inc вы можете выполнять
более сложные действия, такие, как проверка файлов и сканирование формата файлов,
это позволит вам начать работу.
Команда msgchk используется для получения информации о
том, есть ли у вас новая почта. msgchk воспринимает те же
самые параметры -host
и -user
, что и команда inc.
show выводит письмо в вашей текущем почтовом ящике. Как и inc, команда show незатейлива. Если вы просто наберете show и нажмете return, то она выдаст текущее сообщение. Вы можете также указать конкретные номера выводимых сообщений:
По этой команде выведутся сообщения с номерами 32, 45 и 56 друг за другом. Пока вы не поменяете действия по умолчанию, команда show в основном выполняет команду more над сообщением электронной почты.
next используется для перехода к следующему сообщению, а prev для перехода к предыдущему сообщению. Обе команды подразумевают выполнение команды show, поэтому при переходе к следующему сообщению оно будет автоматически выведено на экран.
scan выдает краткий список сообщений в вашем текущем почтовом ящике. Вот пример того, что вам выдаст команда scan.
30+ 01/16 Jordan K. Hubbar Re: FBSD 2.1<<> Do you want a library instead of 31 01/16 Bruce Evans Re: location of bad144 table<<>> >It would appea 32 01/16 Jordan K. Hubbar Re: video is up<<> Anyway, mrouted won't run, ev 33 01/16 Michael Smith Re: FBSD 2.1<<Nate Williams stands accused of sa
Как и практически все в MH, этот вывод можно настроить. Это обычный формат вывода по умолчанию. В нем дается номер сообщения, дата, отправитель, строка темы и фрагмент начала письма, если он помещается. Знак + означает, что данное сообщение является текущим, так что при выполнении команды show будет выдано именно это сообщение.
Одним из полезных параметров для команды scan является -reverse
. При этом ваши сообщения будут выдаваться в порядке, при
котором сообщения с наибольшими номерами следуют первыми, а сообщения с меньшими номерами
последними. Другим полезным параметром для scan является чтение
из файла. Если вы хотите просканировать почтовый ящик с входящей почтой во FreeBSD без
использования команды inc, то это можно сделать командой scan -file /var/mail/username.
Это можно сделать с любым файлом в формате mbox.
rmm используется для удаления почтового сообщения. По умолчанию обычно сообщение на самом деле не удаляется, а переименовывается и игнорируется командами MH. Вам нужно периодически просматривать сообщения и физически удалять ''удаленные'' сообщения.
Команда rmf используется для удаления почтовых ящиков. Она не переименовывает файлы, а действительно их удаляет с диска, так что при использовании этой команды вам нужно быть внимательными.
Сначала вам нужно получить новую почту командой inc. Так что в командной строке наберите inc и нажмите return.
% inc Incorporating new mail into inbox... 36+ 01/19 Stephen L. Lange Request...<<Please remove me as contact for pind 37 01/19 Matt Thomas Re: kern/950: Two PCI bridge chips fail (multipl 38 01/19 Amancio Hasty Jr Re: FreeBSD and VAT<<>>> Bill Fenner said: > In %
При этом выдается ваша новая электронная почта, которая была добавлена в ваш почтовый ящик. Так что следующими действиями будут вывод сообщений по команде show и переход от сообщения к сообщению.
% show Received: by sashimi.wwa.com (Smail3.1.29.1 #2) id m0tdMZ2-001W2UC; Fri, 19 Jan 96 13:33 CST Date: Fri, 19 Jan 1996 13:33:31 -0600 (CST) From: "Stephen L. Lange" <stvlange@wwa.com> To: matt@garply.com Subject: Request... Message-Id: <Pine.BSD.3.91.960119133211.824A-100000@sashimi.wwa.com> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Please remove me as contact for pindat.com % rmm % next Received: from localhost (localhost [127.0.0.1]) by whydos.lkg.dec.com (8.6.11/8 .6.9) with SMTP id RAA24416; Fri, 19 Jan 1996 17:56:48 GMT Message-Id: <199601191756.RAA24416@whydos.lkg.dec.com> X-Authentication-Warning: whydos.lkg.dec.com: Host localhost didn't use HELO pro tocol To: hsu@clinet.fi Cc: hackers@FreeBSD.org Subject: Re: kern/950: Two PCI bridge chips fail (multiple multiport ethernet boards) In-Reply-To: Your message of "Fri, 19 Jan 1996 00:18:36 +0100." <199601182318.AA11772@Sysiphos> X-Mailer: exmh version 1.5omega 10/6/94 Date: Fri, 19 Jan 1996 17:56:40 +0000 From: Matt Thomas <matt@lkg.dec.com> Sender: owner-hackers@FreeBSD.org Precedence: bulk This is due to a typo in pcireg.h (to which I am probably the guilty party).
По команде rmm было удалено текущее сообщение, а по команде next был выполнен переход к следующему сообщению. Теперь, если я захочу просмотреть десять последних сообщений для чтения одного из них, я должен сделать следующее:
% scan last:10 26 01/16 maddy Re: Testing some stuff<<yeah, well, Trinity has 27 01/17 Automatic digest NET-HAPPENINGS Digest - 16 Jan 1996 to 17 Jan 19 28 01/17 Evans A Criswell Re: Hey dude<<>From matt@tempest.garply.com Tue 29 01/16 Karl Heuer need configure/make volunteers<<The FSF is looki 30 01/18 Paul Stephanouk Re: [alt.religion.scientology] Raw Meat (humor)< 31 01/18 Bill Lenherr Re: Linux NIS Solaris<<--- On Thu, 18 Jan 1996 1 34 01/19 John Fieber Re: Stuff for the email section?<<On Fri, 19 Jan 35 01/19 support@foo.garpl [garply.com #1138] parlor<<Hello. This is the Ne 37+ 01/19 Matt Thomas Re: kern/950: Two PCI bridge chips fail (multipl 38 01/19 Amancio Hasty Jr Re: FreeBSD and VAT<<>>> Bill Fenner said: > In %
Теперь, если я хочу прочесть сообщение номер 27, я выполняю команду show 27, и сообщение будет показано. Как вы можете видеть на примере этого простого сеанса работы, MH весьма легок в использовании, а просмотр электронной почты и ее вывод интуитивен и прост.
Любому, кто получает много электронной почты, определенно требуется сортировать, помечать, сжимать и нумеровать свою электронную почту различными способами. MH может делать это лучше, чем какой-либо другой инструмент. Мы пока еще не обсуждали концепцию папок. Несомненно, вы уже встречались с папками при использовании других почтовых программ. В MH также используются папки. MH может даже создавать в папках вложенные в них папки. При работе с MH вы должны помнить, что при запуске команды inc первый раз она запрашивает создание каталога Mail и начинает сохранять все в этом каталоге. Если вы посмотрите на содержимое этого каталога, то обнаружите там каталог с именем inbox. В этом каталоге находится вся ваша входящая почта, которая не была еще никуда перемещена.
При создании новой папки в каталоге программы MH Mail будет создан новый каталог, а сообщения этой папки будут размещаться в этом каталоге. Когда приходит новая электронная почта, то она размещается в каталоге inbox в файле с именем, соответствующим номеру сообщения. Поэтому, даже если у вас нет ни одного инструмента MH для чтения вашей электронной почты, вы можете продолжать использовать стандартные UNIX® команды для работы с этими каталогами и просмотра ваших файлов. Такой упрощенный подход на самом деле дает вам простор для действий, которые вы можете выполнять над вашей электронной почтой.
Так же, как вы можете использовать список сообщений типа 23 16
42
с большинством команд MH, имеется режим и для папок,
который вы можете задать практически с каждой командой MH.
Если вы выполняете команду scan +freebsd, она будет сканировать
вашу папку freebsd, а ваша текущая папка будет изменена на freebsd. При выполнении команды show +freebsd
23 16 42, show перейдет к вашей папке freebsd и выведет сообщения 23, 16 и 42. Поэтому запомните этот
синтаксис +folder
. Вам
нужно использовать такие команды для работы с разными папками. Помните, что вашей папкой
для почты по умолчанию является inbox, так что выполнение
команды folder +inbox должно всегда вернуть вас обратно к вашей
почте. Конечно, с бесконечной гибкостью MH такое поведение
может быть изменено, но в большинстве случаев лучше оставить папку inbox.
Команда pick является одной из более сложных команд в системе MH. Так что вам может понадобиться прочесть справочную страницу по pick(1) для его более полного понимания. В простейшем случае вы можете делать нечто вроде следующего:
Команде pick будет указано на просмотр каждой строки всех сообщений в текущей папке и выдачу номеров тех сообщений, в которых было найдено слово pci. Затем по команде show вы можете вывести эти сообщения и прочесть их или удалить командой rmm. Вам нужно задать команды типа show 15 42 55-57 для их вывода. Более полезной сделать следующее:
При этом будут выведены те же самые сообщения, но вам не придется тратить на них
столько усилий. Параметр -seq
на самом деле является
сокращенным вариантом для -sequence
, а pick является именем последовательности, которая содержит
номера сообщений, которые удовлетворяют заданному условию. Вы можете использовать
последовательности практически с любой командой MH. Так
что вы можете выполнить команду rmm pick, и все эти
сообщения будут удалены. Вы можете именовать последовательности как угодно. Если вы
снова выполните команду pick, то она перезапишет старую последовательность, если вы
используете то же самое имя.
Выполнение команды pick -search может оказаться более длительной операцией, чем просто поиск сообщений от кого-то или для кого-то. Поэтому pick позволяет вам использовать такой предопределенный критерий поиска:
-to
поиск по адресату сообщения
-cc
поиск по содержимому cc-списка
-from
поиск по тому, от кого исходит сообщение
-subject
поиск электронной почты с заданной темой письма
-date
поиск электронных писем с указанной датой
--component
поиск по любому другому компоненту заголовка письма. (То есть --reply-to
для поиска всех электронных писем с определенным
значением поля reply-to в заголовке)
Это позволяет вам выполнять действия типа
для получения списка всех электронных писем, посланных в список рассылки FreeBSD hackers. Команда pick также позволяет вам группировать эти критерии различными способами при помощи следующих параметров:… -and
…
… -or
…
-not
…
-lbrace
… -rbrace
Эти команды позволяют вам выполнять следующее
При этом будет взята вся почта в вашем входящем почтовом ящике inbox, которая была послана по адресу freebsd-hackers или этот адрес присутствовал в cc-списке. Параметры brace позволяют вам группировать критерии поиска. Иногда это очень нужно, как в следующем примере
В общем, это означает ''выбрать (во freebsd-hackers и не в cc-списке для freebsd-questions) с темой pci''. По этой команде должна быть просмотрена ваша папка и найдены все сообщения, посланные в список freebsd-hackers, которые не были также включены в cc-список для freebsd-questions, и в строке темы которых присутствовало упоминание ''pci''. Теперь вам стоит задуматься о том, что называется порядком выполнения операторов. Помните, как при вычислении значений математических выражений вы начинали слева направо и сначала умножали и делили, и только потом складывали и вычитали? В MH присутствует тот же набор правил для команды pick. Он достаточно сложен, так что вам нужно будет изучить справочную страницу. Этот документ только знакомит с MH.
Имеются три программы, которые предназначены только для управления вашими папками. Программа folder используется для переключения между папками, их сжатия и вывода их списка. В самом простом случае вы можете выполнить команду folder +newfolder, и вы переключитесь на папку newfolder. С этого момента все ваши команды MH типа comp, repl, scan и show будут выполняться над этой папкой newfolder.
Иногда при чтении и удалении сообщений в ваших папках образуются ''holes''. Если вы выполните команду scan, то можете увидеть только сообщения 34, 35, 36, 43, 55, 56, 57, 80. Если вы выполните команду folder -pack, то она перенумерует все ваши сообщения, так что там не будет дыр. Однако она не удаляет никаких сообщений. Так что вам может понадобиться периодически просматривать и физически удалять rmm-сообщения.
Если вам нужна информация о ваших папках, вы можете получить ее командами folders или folder -all, которые выводят список всех ваших папок, количество хранящихся в них сообщений, номер текущего сообщения в каждой папке, и так далее. Такая строка статистики, которую выводят эти команды для всех папок, имеет тот же самый вид, что вы получаете при смене папки по команде folder +foldername. Результат выполнения команды folders выглядит примерно так:
Folder # of messages ( range ); cur msg (other files) announce has 1 message ( 1- 1). drafts has no messages. f-hackers has 43 messages ( 1- 43). f-questions has 16 messages ( 1- 16). inbox+ has 35 messages ( 1- 38); cur= 37. lists has 8 messages ( 1- 8). netfuture has 1 message ( 1- 1). out has 31 messages ( 1- 31). personal has 6 messages ( 1- 6). todo has 58 messages ( 1- 58); cur= 1. TOTAL= 199 messages in 13 folders.
Команду refile нужно использовать для перемещения сообщения между папками. Когда вы выполняете команду типа refile 23 +netfuture, то сообщение номер 23 перемещается в папку netfuture. Вы можете также выполнить команду типа refile 23 +netfuture/latest, которая поместит сообщение номер 23 в папку с именем latest, вложенную в папку netfuture. Если вы хотите сохранить сообщение в текущей папке и связать его, вы можете выполнить команду refile -link 23 +netfuture, которая оставит 23 в вашем текущей папке inbox, но также и в вашей папке netfuture. Наверное, вы уже начали понимать, какие по настоящему мощные действия вы можете выполнять с MH.
Электронная почта для большинства людей является улицей с движением в два ряда, так что вы можете захотеть послать что-то обратно. Способ, каким MH выполняет посылку почты, может сначала показаться трудным для использования, но он обеспечивает удивительную гибкость. Сначала MH копирует файл компонентов в исходящую электронную почту. Файл компонентов в основном представляет собой скелет электронного письма с уже помещенными туда заголовками To: и Subject:. Затем вы отсылаетесь к редактору текстов, в котором вы заполняете информацию заголовков и набираете тело письма ниже разделительных строк. При закрытии редактора вызывается программа whatnow. Находясь в приглашении What now?, вы можете выбрать одно из действий send, list, edit, push или quit. Большинство этих команд говорят сами за себя. Итак, процесс посылки сообщения включает копирование файла компонент, редактирование вашей электронной почты и указание программе whatnow действия, которое нужно сделать с вашей электронной почтой.
Программа comp имеет несколько полезных параметров
командной строки. Самой важной сейчас является опция -editor
. При установке MH
используемым по умолчанию редактором обычно становится программа prompter, поставляемая с MH. Это не
очень привлекательный редактор, он просто делает то, что должен делать. Так что
когда вы собираетесь написать кому-либо письмо, вы можете воспользоваться командами
comp -editor /usr/bin/vi или comp
-editor /usr/local/bin/pico. После запуска comp вы оказываетесь в вашем редакторе и видите нечто
вроде следующего:
Вам нужно указать персону, которой вы посылаете почту, после строки To:. То же самое относится и к остальным заголовкам, так что вам нужно будет указать тему письма после строки Subject:. Затем вам просто нужно набрать тело письма после разделительной строки. Это может показаться несколько упрощенным, так как многие почтовые программы имеют специальные опросники, которые запрашивают у вас эту информацию, но необходимости в этом нет. Плюс это на самом деле дает вам дополнительную гибкость.
To:freebsd-rave@FreeBSD.org cc: Subject:And on the 8th day God created the FreeBSD core team -------- Wow this is an amazing operating system. Thanks!
Теперь вы можете сохранить это сообщение и выйти из редактора. Вы увидите приглашение What now? и здесь можете набрать send или s и нажать return. После этого основная группа разработчиков FreeBSD получит свои слова восхищения. Как я отмечал выше, вы можете также воспользоваться другими командами в приглашении What now?. Например, вы можете использовать quit, если не хотите посылать сообщение.
Команда forw ошеломляюще похожа. Большим отличием является то, что сообщение, которое вы пересылаете, автоматически включается в исходящее сообщение. Когда вы выполняете команду forw, она будет пересылать ваше текущее сообщение. Вы всегда можете указать на пересылку другого сообщения, выполняя команду forw 23, после чего в исходящее сообщение будет помещено сообщение номер 23, а не текущее сообщение. Кроме этих маленьких различий, команда forw работает абсолютно так же, как comp. Вы проходите через в точности такой же процесс посылки сообщения.
По команде repl будет делаться ответ на текущее
сообщение, если только вы не указали другой номер сообщения. Команда repl приложит все усилия, чтобы забежать вперед и заполнить
некоторые заголовки почтового сообщения. Поэтому вы заметите, что в заголовке To: уже присутствует адрес получателя. Также уже будет
заполнена строка Subject:. Затем вы проходите обычный
процесс написания сообщения и на этом все завершается. Здесь полезно знать о
параметре командной строки -cc
. Вы можете
использовать параметры all
, to
, cc
и me
после -cc
для того, чтобы
repl автоматически добавила различные адреса к Cc:-списку сообщения. Вы, наверное, заметили, что исходное
сообщение не будет включаться. Это происходит, потому что в большинстве настроек MH так указано изначально.
Файл components обычно располагается в каталоге /usr/local/lib/mh. Вы можете скопировать этот файл в ваш каталог Mail для MH и отредактировать его так, чтобы он содержал то, что вы хотите. Это достаточно простой файл. В начале файла расположены различные почтовые заголовки, разделительная строка и больше ничего. Команда comp просто копирует этот файл components и затем редактирует его. Вы можете добавить любой соответствующий стандарту RFC822 заголовок. Например, в вашем файле components вы можете поместить следующее:
Тогда MH будет копировать этот файл компонентов и передаст его в ваш редактор. Файл components весьма прост. Если вы хотите в сообщениях иметь подпись, просто поместите вашу подпись в этот файл components.
Файл replcomps несколько более сложен. По умолчанию replcomps имеет такой вид:
%(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\ %<(nonnull)%(void(width))%(putaddr To: )\n%>\ %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\ %<(nonnull)%(void(width))%(putaddr cc: )\n%>\ %<{fcc}Fcc: %{fcc}\n%>\ %<{subject}Subject: Re: %{subject}\n%>\ %<{date}In-reply-to: Your message of "\ %<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id} %{message-id}%>\n%>\ --------
Он имеет такой же простой формат, как и файл components, но содержит несколько дополнительных форматирующих кодов. Команда %(lit) определяет место для адреса. %(formataddr) является функцией, которая возвращает полный адрес электронной почты. Следующей частью является %<, которая означает условие если и {reply-to} соответствует полю reply-to исходного сообщения. Таким образом, это может быть проинтерпретировано следующим образом:
%<if {reply-to} в исходном сообщении имеется поле reply-to то передать его в formataddr, %? else {from} взять адрес from, %? else {sender} взять адрес sender, %? else {return-path} взять return-path из исходного сообщения, %> endif.
Как вы можете видеть, форматирование MH может быть достаточно сложным. Вы можете выяснить, что значат остальные функции и переменные. Вся информация по написанию строк в таком формате находится в справочной странице по MH. Действительно удобной вещью является то, что единожды создав собственный файл replcomps, вам не нужно больше его трогать. Ни одна другая почтовая программа не даст вам той мощи и гибкости, что дает вам MH.
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.