# Учебник по MH

### Matt Midboe

════`<matt@garply.com>`
══

v1.0, 16 января 1996

FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.

Motif, OSF/1 и UNIX это зарегистрированные торговые марки, а IT DialTone и The Open Group это торговые марки Open Group в Соединенных Штатах и других странах.

Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ''"'' или ''╝''.

В этом документе даются основы работы с MH во FreeBSD

[ По разделам / Одним файлом ]

## 1. Введение

MH ведет свою историю с 1977 года, с компании RAND Corporation, где были разработаны основы работы MH. MH не является единой программой для работы с электронной почтой, но подходом к тому, как лучше всего разрабатывать инструменты для чтения электронной почты. Разработчики MH провели большую работу, твердо придерживаясь принципа KISS: Keep It Simple Stupid. Вместо того, чтобы разработать одну большую программу для чтения, отсылки и обработки электронной почты, они написали специальные программы для каждого случая вашей работы с электронной почтой. Некоторым нравится MH по причине его специализации, которую очень проста и естественна. Каждый инструмент в MH выполняет одно действие, но выполняет его очень хорошо.

Кроме различных инструментов, которые можно использовать для обработки своей электронной почты, MH прекрасно выполняет работу по сохранению настроек каждого из этих инструментов однообразными и соответствующими друг другу. На самом деле, если вы не совсем понимаете, как что-то должно работать, и какими должны быть аргументы некоторой команды, то вы можете попытаться угадать и окажетесь правы. Каждая команда MH однообразна в обработке конфигурационных файлов и передаче параметров командной строки. Вам полезно будет помнить, что вы всегда можете добавить `-help` к команде для вывода опций этой команды.

Первым делом вам нужно убедиться, что на вашей машине с FreeBSD установлен пакет MH. Если вы устанавливали систему с компакт-диска, то для установки MH можете выполнить такую команду:

    # pkg_add /cdrom/packages/mh-6.8.3.tgz

Вы увидите, что при этом будет создан каталог `/usr/local/lib/mh`, а в каталог `/usr/local/bin` будут добавлены несколько выполнимых файлов. Если вы предпочитаете откомпилировать все самостоятельно, то можете сгрузить исходный код с общедоступного ftp-сервера по адресу ftp.ics.uci.edu или louie.udel.edu.

Этот учебник не является полным и подробным описанием того, как работает MH. Он предназначен для того, чтобы вы начали свой путь по дороге к более удобному и эффективному чтению электронной почты. Вы должны прочесть страницы справочной системы по различным командам. Также вас может заинтересовать телеконференция comp.mail.mh. Прочтите FAQ по MH. Лучшим источником информации по MH является книга MH и nmh Джерри Пика: электронная почта для пользователей и программистов.

## 2. Чтение почты

Этот раздел посвящен тому, как использовать команды `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` являются особыми обозначениями, соответствующими текущему, последнему и первому сообщениям в почтовом ящике.

### 2.1. `inc`, `msgchk`--чтение новой почты или проверка ее наличия

Если вы просто наберете `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 -host mail.pop.org -user username -norpop

Это укажет команде `inc` на соединение с `mail.pop.org` для сгрузки вашей электронной почты, а также сообщит о том, что ваше имя пользователя в той системе `username`. Параметр `-norpop` указывает команде `inc` на использование обычного POP3 для сгрузки вашей электронной почты. В MH имеется поддержка нескольких разновидностей POP. Более чем вероятно, что вам никогда не придется ими пользоваться. Хотя с `inc` вы можете выполнять более сложные действия, такие, как проверка файлов и сканирование формата файлов, это позволит вам начать работу.

Команда `msgchk` используется для получения информации о том, есть ли у вас новая почта. `msgchk` воспринимает те же самые параметры `-host` и `-user`, что и команда `inc`.

### 2.2. `show`, `next` и `prev`--вывод и передвижение по электронной почте

`show` выводит письмо в вашей текущем почтовом ящике. Как и `inc`, команда `show` незатейлива. Если вы просто наберете `show` и нажмете return, то она выдаст текущее сообщение. Вы можете также указать конкретные номера выводимых сообщений:

    % show 32 45 56

По этой команде выведутся сообщения с номерами 32, 45 и 56 друг за другом. Пока вы не поменяете действия по умолчанию, команда `show` в основном выполняет команду `more` над сообщением электронной почты.

`next` используется для перехода к следующему сообщению, а `prev` для перехода к предыдущему сообщению. Обе команды подразумевают выполнение команды `show`, поэтому при переходе к следующему сообщению оно будет автоматически выведено на экран.

### 2.3. `scan`--сканирование ваших сообщений

`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.

### 2.4. `rmm` и `rmf`--удаление текущего сообщения или почтового ящика

`rmm` используется для удаления почтового сообщения. По умолчанию обычно сообщение на самом деле не удаляется, а переименовывается и игнорируется командами MH. Вам нужно периодически просматривать сообщения и физически удалять ''удаленные'' сообщения.

Команда `rmf` используется для удаления почтовых ящиков. Она не переименовывает файлы, а действительно их удаляет с диска, так что при использовании этой команды вам нужно быть внимательными.

### 2.5. Типичный сеанс чтения с использованием MH

Сначала вам нужно получить новую почту командой `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 весьма легок в использовании, а просмотр электронной почты и ее вывод интуитивен и прост.

## 3. Папки и поиск почты

Любому, кто получает много электронной почты, определенно требуется сортировать, помечать, сжимать и нумеровать свою электронную почту различными способами. 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`.

### 3.1. `pick`--поиск почты по некоторому критерию

Команда `pick` является одной из более сложных команд в системе MH. Так что вам может понадобиться прочесть справочную страницу по pick(1) для его более полного понимания. В простейшем случае вы можете делать нечто вроде следующего:

    % pick -search pci
    15
    42
    55
    56
    57

Команде `pick` будет указано на просмотр каждой строки всех сообщений в текущей папке и выдачу номеров тех сообщений, в которых было найдено слово `pci`. Затем по команде `show` вы можете вывести эти сообщения и прочесть их или удалить командой `rmm`. Вам нужно задать команды типа `show 15 42 55-57` для их вывода. Более полезной сделать следующее:

    % pick -search pci -seq pick
    5 hits
    % show pick

При этом будут выведены те же самые сообщения, но вам не придется тратить на них столько усилий. Параметр `-seq` на самом деле является сокращенным вариантом для `-sequence`, а `pick` является именем последовательности, которая содержит номера сообщений, которые удовлетворяют заданному условию. Вы можете использовать последовательности практически с любой командой MH. Так что вы можете выполнить команду `rmm pick`, и все эти сообщения будут удалены. Вы можете именовать последовательности как угодно. Если вы снова выполните команду pick, то она перезапишет старую последовательность, если вы используете то же самое имя.

Выполнение команды `pick -search` может оказаться более длительной операцией, чем просто поиск сообщений от кого-то или для кого-то. Поэтому `pick` позволяет вам использовать такой предопределенный критерий поиска:

`-to`

  поиск по адресату сообщения

`-cc`

  поиск по содержимому `cc`-списка

`-from`

  поиск по тому, от кого исходит сообщение

`-subject`

  поиск электронной почты с заданной темой письма

`-date`

  поиск электронных писем с указанной датой

`--`component``

  поиск по любому другому компоненту заголовка письма. (То есть `--reply-to` для поиска всех электронных писем с определенным значением поля reply-to в заголовке)

Это позволяет вам выполнять действия типа

    % pick -to freebsd-hackers@FreeBSD.org -seq hackers

для получения списка всех электронных писем, посланных в список рассылки FreeBSD hackers. Команда `pick` также позволяет вам группировать эти критерии различными способами при помощи следующих параметров:

- ... `-and` ...

- ... `-or` ...

- `-not` ...

- `-lbrace` ... `-rbrace`

Эти команды позволяют вам выполнять следующее

    % pick -to freebsd-hackers -or -cc freebsd-hackers

При этом будет взята вся почта в вашем входящем почтовом ящике `inbox`, которая была послана по адресу freebsd-hackers или этот адрес присутствовал в cc-списке. Параметры brace позволяют вам группировать критерии поиска. Иногда это очень нужно, как в следующем примере

    % pick -lbrace -to freebsd-hackers -and
      -not -cc freebsd-questions -rbrace -and -subject pci

В общем, это означает ''выбрать (во freebsd-hackers и не в cc-списке для freebsd-questions) с темой pci''. По этой команде должна быть просмотрена ваша папка и найдены все сообщения, посланные в список freebsd-hackers, которые не были также включены в cc-список для freebsd-questions, и в строке темы которых присутствовало упоминание ''pci''. Теперь вам стоит задуматься о том, что называется порядком выполнения операторов. Помните, как при вычислении значений математических выражений вы начинали слева направо и сначала умножали и делили, и только потом складывали и вычитали? В MH присутствует тот же набор правил для команды `pick`. Он достаточно сложен, так что вам нужно будет изучить справочную страницу. Этот документ только знакомит с MH.

### 3.2. `folder`, `folders`, `refile`--три полезные программы для управления папками

Имеются три программы, которые предназначены только для управления вашими папками. Программа `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.

## 4. Посылка почты

Электронная почта для большинства людей является улицей с движением в два ряда, так что вы можете захотеть послать что-то обратно. Способ, каким MH выполняет посылку почты, может сначала показаться трудным для использования, но он обеспечивает удивительную гибкость. Сначала MH копирует файл компонентов в исходящую электронную почту. Файл компонентов в основном представляет собой скелет электронного письма с уже помещенными туда заголовками `To:` и `Subject:`. Затем вы отсылаетесь к редактору текстов, в котором вы заполняете информацию заголовков и набираете тело письма ниже разделительных строк. При закрытии редактора вызывается программа `whatnow`. Находясь в приглашении `What now?`, вы можете выбрать одно из действий `send`, `list`, `edit`, `push` или `quit`. Большинство этих команд говорят сами за себя. Итак, процесс посылки сообщения включает копирование файла компонент, редактирование вашей электронной почты и указание программе `whatnow` действия, которое нужно сделать с вашей электронной почтой.

### 4.1. `comp`, `forw`, `reply`--создание, пересылка или ответ на чье-либо сообщение

Программа `comp` имеет несколько полезных параметров командной строки. Самой важной сейчас является опция `-editor`. При установке MH используемым по умолчанию редактором обычно становится программа `prompter`, поставляемая с MH. Это не очень привлекательный редактор, он просто делает то, что должен делать. Так что когда вы собираетесь написать кому-либо письмо, вы можете воспользоваться командами `comp -editor /usr/bin/vi` или `comp -editor /usr/local/bin/pico`. После запуска comp вы оказываетесь в вашем редакторе и видите нечто вроде следующего:

    To:
    cc:
    Subject:
    --------

Вам нужно указать персону, которой вы посылаете почту, после строки `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 так указано изначально.

### 4.2. Файлы `components` и `replcomps`--файлы компонент для команд `comp` и `repl`

Файл `components` обычно располагается в каталоге `/usr/local/lib/mh`. Вы можете скопировать этот файл в ваш каталог Mail для MH и отредактировать его так, чтобы он содержал то, что вы хотите. Это достаточно простой файл. В начале файла расположены различные почтовые заголовки, разделительная строка и больше ничего. Команда `comp` просто копирует этот файл `components` и затем редактирует его. Вы можете добавить любой соответствующий стандарту RFC822 заголовок. Например, в вашем файле `components` вы можете поместить следующее:

    To:
    Fcc: out
    Subject:
    X-Mailer: MH 6.8.3
    X-Home-Page: http://www.FreeBSD.org/
    -------

Тогда 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>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.