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