<!--
     The FreeBSD Documentation Project

     $FreeBSD$
     $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml,v 1.30 2004/12/21 10:55:31 den Exp $

     Original revision: 1.123
-->

<chapter id="mail">
  <chapterinfo>
    <authorgroup>
      <author>
       <firstname>Bill</firstname>
       <surname>Lloyd</surname>
       <contrib>Оригинальную версию предоставил </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
       <firstname>Jim</firstname>
       <surname>Mock</surname>
       <contrib>Переписал </contrib>
       <!-- 2 Dec 1999 -->
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Алексей</firstname>
	<surname>Докучаев</surname>
	<contrib>Перевод на русский язык: </contrib>
      </author>
      <author>
	<firstname>Денис</firstname>
	<surname>Пеплин</surname>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Электронная почта</title>

  <sect1 id="mail-synopsis">
    <title>Краткий обзор</title>
      <indexterm><primary>email</primary></indexterm>
      <indexterm><primary>электронная почта</primary></indexterm>

    <para><quote>Электронная почта</quote> называемая также email, является
      на сегодняшний день одним из самых популярных средств связи.  Эта глава
      описывает основы работы с почтовым сервером в &os;, а также введение
      в процесс отправки и получения почты в &os;; однако, это не полноценный
      справочник и фактически в главу не вошло много важной информации.
      Более подробно эта тема рассмотрена во множестве прекрасных книг, список
      которых приведен в <xref linkend="bibliography">.</para>

    <para>После прочтения этой главы вы узнаете:</para>

    <itemizedlist>
      <listitem>
	<para>Какие программные компоненты задействованы в отправке и
	  получении электронной почты.</para>
      </listitem>

      <listitem>
	<para>Какие основные файлы настройки
	  <application>sendmail</application> имеются в FreeBSD.</para>
      </listitem>

      <listitem>
	<para>Разницу между удаленными и локальными почтовыми
	  ящиками.</para>
      </listitem>

      <listitem>
	<para>Как запретить спамерам использовать ваш почтовый
	  сервер для пересылки почты.</para>
      </listitem>

      <listitem>
	<para>Как установить и настроить альтернативный агент передачи почты
	  (Mail Transfer Agent, MTA), заменив им
	  <application>sendmail</application>.</para>
      </listitem>

      <listitem>
	<para>Как разрешить наиболее часто встречающиеся проблемы с почтовым
	  сервером.</para>
      </listitem>

      <listitem>
	<para>Как использовать SMTP с UUCP.</para>
      </listitem>

      <listitem>
	<para>Как настроить систему только для отправки почты.</para>
      </listitem>

      <listitem>
	<para>Как использовать почту с коммутируемым подключением к
	  сети.</para>
      </listitem>

      <listitem>
	<para>Как настроить SMTP аутентификацию для дополнительной
	  защиты.</para>
      </listitem>

      <listitem>
	<para>Как установить и настроить почтовый агент пользователя
	  (Mail User Agent, MUA), например
	  <application>mutt</application>, для отправки и получения
	  почты.</para>
      </listitem>

      <listitem>

	<para>Как загрузить почту с удаленного <acronym>POP</acronym> или
	  <acronym>IMAP</acronym> сервера.</para>
      </listitem>

      <listitem>
	<para>Как автоматически применять фильтры и правила к входящей
	  почте.</para>
      </listitem>
    </itemizedlist>

    <para>Перед прочтением этой главы вам потребуется:</para>

    <itemizedlist>
      <listitem>
	<para>Правильно настроить сетевое подключение
	  (<xref linkend="advanced-networking">).</para>
      </listitem>

      <listitem>
	<para>Правильно настроить DNS для почтового сервера
	  (<xref linkend="network-servers">).</para>
      </listitem>

      <listitem>
	<para>Знать как устанавливать дополнительное программное обеспечение
	  сторонних разработчиков (<xref linkend="ports">).</para>
      </listitem>
    </itemizedlist>

  </sect1>

  <sect1 id="mail-using">
    <title>Использование электронной почты</title>

    <indexterm><primary>POP</primary></indexterm>
    <indexterm><primary>IMAP</primary></indexterm>
    <indexterm><primary>DNS</primary></indexterm>

    <para>В работе почтовой системы задействованы пять основных частей:
      <link linkend="mail-mua">пользовательский почтовый клиент</link>
      (Mail User Agent, MUA),
      <link linkend="mail-mta">почтовый сервис (даемон)</link>
      (Mail Transfer Agent, MTA), <link
      linkend="mail-dns">сервер DNS</link>, <link
      linkend="mail-receive">удаленный или локальный почтовый ящик</link>,
      и конечно сам <link linkend="mail-host">почтовый сервер</link>.</para>

    <sect2 id="mail-mua">
      <title>Пользовательский почтовый клиент</title>

      <para>Обычно, это программа типа <application>mutt</application>,
	<application>pine</application>, <application>elm</application>,
	<application>mail</application>, а также программы с графическим
	интерфейсом, такие, как <application>balsa</application> или
	<application>xfmail</application>, или интегрированные приложения
	(например, какой-либо WWW браузер типа Netscape).  Все эти программы
	общаются с локальным <link linkend="mail-host">почтовым
	сервером</link>, вызывая какой-либо даемон, или напрямую по протоколу
	<acronym>TCP</acronym>.</para>
    </sect2>

    <sect2 id="mail-mta">
      <title>Почтовый даемон</title>
      <indexterm>
	<primary>почтовые даемоны</primary>
       <secondary><application>sendmail</application></secondary>
      </indexterm>
      <indexterm>
	<primary>почтовые даемоны</primary>
       <secondary><application>postfix</application></secondary>
      </indexterm>
      <indexterm>
	<primary>почтовые даемоны</primary>
       <secondary><application>qmail</application></secondary>
      </indexterm>
      <indexterm>
	<primary>почтовые даемоны</primary>
       <secondary><application>exim</application></secondary>
      </indexterm>

      <para>&os; по умолчанию поставляется с
	<application>sendmail</application>, но помимо того поддерживает
	множество других даемонов почтового сервера, вот лишь некоторые
	из них:</para>

      <itemizedlist>
	<listitem>
	  <para><application>exim</application>;</para>
	</listitem>

	<listitem>
	  <para><application>postfix</application>;</para>
	</listitem>

	<listitem>
	  <para><application>qmail</application>.</para>
	</listitem>
      </itemizedlist>

      <para>Почтовый даемон выполняет только две функции: он отвечает за прием
	входящей почты и отправку исходящей.  Он <emphasis>не</emphasis>
	отвечает за выдачу
	почты по протоколам <acronym>POP</acronym> или
	<acronym>IMAP</acronym>, и не обеспечивает подключения к локальным
	почтовым ящикам <filename>mbox</filename> или Maildir.  Для этих целей
	вам может потребоваться дополнительный
	<link linkend="mail-receive">даемон</link>.</para>

      <warning>
	<para>Старые версии <application>sendmail</application> содержат
	  некоторые серьезные ошибки безопасности, которые могут
	  привести к получению атакующим локального и/или удаленного
	  доступа к вашему компьютеру.  Убедитесь, что вы работаете
	  с современной версией, свободной от таких ошибок.
	  Или установите альтернативный <acronym>MTA</acronym>
	  из <link linkend="ports">коллекции портов &os;</link>.</para>
      </warning>
    </sect2>

    <sect2 id="mail-dns">
      <title>Email и DNS</title>

      <para>Служба имен доменов (Domain Name System, DNS) и соответствующий
	ей даемон <command>named</command> играют важную роль в доставке
	почты.  Для доставки почты с вашего сайта другому, даемон почтового
	сервера обратится к DNS для определения удаленного хоста, отвечающего
	за доставку почты по назначению.  Тот же процесс происходит при
	доставке почты с удаленного хоста на ваш почтовый сервер.</para>

      <indexterm>
	<primary>MX record</primary>
      </indexterm>

      <para><acronym>DNS</acronym> отвечает за сопоставления имен хостов
	IP адресам, как и за хранение информации, предназначенной для
	доставки почты, известной как MX записи.  Запись MX (Mail
	eXchanger) определяет хост или хосты, которые будут получать почту
	для определенного домена.  Если для вашего имени хоста или домена
	нет записи MX, почта будет доставлена непосредственно на ваш хост,
	IP адрес которого определен в записи A.</para>

      <para>Вы можете просмотреть MX записи для любого домена с помощью
	команды &man.host.1;, как показано в примере ниже:</para>

      <screen>&prompt.user; <userinput>host -t mx FreeBSD.org</userinput>
FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org</screen>
    </sect2>

    <sect2 id="mail-receive">
      <title>Получение почты</title>
      <indexterm>
	<primary>email</primary>
       <secondary>получение</secondary>
      </indexterm>

      <para>Получение почты для вашего домена выполняет почтовый сервер.
	Он сохраняет отправленную в ваш домен почту в формате либо
	<filename>mbox</filename> (это метод по умолчанию),
	либо Maildir, в зависимости от настроек.
	После сохранения почты ее можно либо прочитать локально, используя
	такие приложения как &man.mail.1;, <application>mutt</application>,
	или удаленно, по таким протоколам как <acronym>POP</acronym> или
	<acronym>IMAP</acronym>.  Это
	означает, что для локального чтения почты вам не потребуется
	устанавливать сервер <acronym>POP</acronym> или
	<acronym>IMAP</acronym>.</para>

      <sect3 id="pop-and-imap">
	<title>Доступ к удаленным почтовым ящикам по протоколам
	  <acronym>POP</acronym> и <acronym>IMAP</acronym></title>

	<indexterm><primary>POP</primary></indexterm>
	<indexterm><primary>IMAP</primary></indexterm>
	<para>Для удаленного доступа к почтовым ящикам вам потребуется
	  доступ к <acronym>POP</acronym> или <acronym>IMAP</acronym>
	  серверу.  <!-- избыточно: Эти протоколы обеспечивают пользователям
	  простой способ удаленного доступа к почтовым ящикам. -->
	  Хотя удаленный доступ обеспечивают оба протокола
	  <acronym>POP</acronym> и <acronym>IMAP</acronym>, последний
	  предоставляет множество дополнительных возможностей, вот некоторые
	  из них:</para>

	<itemizedlist>
	  <listitem>
	    <para><acronym>IMAP</acronym> может как хранить сообщения на
	      удаленном сервере, так и забирать их.</para>
	  </listitem>

	  <listitem>
	    <para><acronym>IMAP</acronym> поддерживает одновременные
	      обновления.</para>
	  </listitem>

	  <listitem>
	    <para><acronym>IMAP</acronym> может быть очень полезен для
	      низкоскоростных соединений, поскольку позволяет пользователям
	      получить структуру сообщений без их загрузки; он также может
	      использоваться для выполнения таких задач как поиск на сервере,
	      для минимизации объема передаваемых между клиентом и сервером
	      данных.</para>
	  </listitem>

	</itemizedlist>

	<para>Для установки <acronym>POP</acronym> или
	  <acronym>IMAP</acronym> сервера необходимо выполнить следующие
	  действия:</para>

	<procedure>
	  <step>
	    <para>Выберите <acronym>IMAP</acronym> или
	      <acronym>POP</acronym> сервер, который подходит вам наилучшим
	      образом.  Следующие <acronym>POP</acronym> и
	      <acronym>IMAP</acronym> серверы хорошо известны и могут быть
	      приведены в качестве примера:</para>

	      <itemizedlist>
		<listitem>
		  <para><application>qpopper</application>;</para>
		</listitem>

		<listitem>
		  <para><application>teapop</application>;</para>
		</listitem>

		<listitem>
		  <para><application>imap-uw</application>;</para>
		</listitem>

		<listitem>
		  <para><application>courier-imap</application>;</para>
		</listitem>
	      </itemizedlist>

	  </step>

	  <step>
	    <para>Установите <acronym>POP</acronym> или
	      <acronym>IMAP</acronym> даемон, выбранный из коллекции
	      портов.</para>
	  </step>

	  <step>
	    <para>Если потребуется, настройте
	      <filename>/etc/inetd.conf</filename>
	      для запуска <acronym>POP</acronym> или
	      <acronym>IMAP</acronym> сервера.</para>
	  </step>
	</procedure>

	<warning>
	  <para>Необходимо отметить, что и <acronym>POP</acronym> и
	    <acronym>IMAP</acronym> серверы передают информацию, включая
	    имя пользователя и пароль, в незашифрованном виде.  Это означает,
	    что если вы хотите защитить передачу информации по этим
	    протоколам, потребуется использовать тунеллирование сессий через
	    &man.ssh.1;.  Тунеллирование соединений описано в
	    <xref linkend="security-ssh-tunneling">.</para>
	</warning>
      </sect3>

      <sect3 id="local">
	<title>Доступ к локальным почтовым ящикам</title>

	<para>Доступ к почтовым ящикам может быть осуществлен непосредственно
	  путем использования <acronym>MUA</acronym> на сервере, где
	  эти ящики расположены.  Это можно сделать используя приложения
	  вроде <application>mutt</application> или
	  &man.mail.1;.</para>
      </sect3>
    </sect2>

    <sect2 id="mail-host">
      <title>Почтовый хост</title>
      <indexterm><primary>почтовый хост</primary></indexterm>

      <para>Почтовый хост это сервер, который отвечает за отправку и получение
	почты для вашего компьютера, и возможно, для всей вашей сети.</para>
    </sect2>
  </sect1>

  <sect1 id="sendmail">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Christopher</firstname>
	  <surname>Shumway</surname>
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Настройка <application>sendmail</application></title>

    <indexterm>
      <primary><application>sendmail</application></primary>
    </indexterm>

    <para>В FreeBSD по умолчанию программой передачи почты (Mail Transfer
      Agent, MTA) является &man.sendmail.8;.  Работа
      <application>sendmail</application> заключается в приеме почты от
      почтовых программ пользователей (Mail User Agents,
      <acronym>MUA</acronym>) и отправке ее на соответствующий адрес,
      в соответствии с имеющимися настройками.
      <application>sendmail</application> может также принимать входящие
      соединения по сети и доставлять почту в локальные почтовые ящики
      или перенаправлять их другой программе.</para>

    <para><application>sendmail</application> использует следующие файлы
      настройки:</para>

    <indexterm>
      <primary><filename>/etc/mail/access</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/aliases</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/local-host-names</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/mailer.conf</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/mailertable</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/sendmail.cf</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/virtusertable</filename></primary>
    </indexterm>
    <informaltable frame="none" pgwide="1">
      <tgroup cols="2">
	<thead>
	  <row>
	    <entry>Имя файла</entry>
	    <entry>Назначение</entry>
	  </row>
	</thead>
	<tbody>
	  <row>
	    <entry>
	      <filename>/etc/mail/access</filename>
	    </entry>
	    <entry>Файл базы данных доступа
	      <application>sendmail</application></entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/aliases</filename>
	    </entry>
	    <entry>Синонимы почтовых ящиков</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/local-host-names</filename>
	    </entry>
	    <entry>Список хостов, для которых
	      <application>sendmail</application> принимает почту</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/mailer.conf</filename>
	    </entry>
	    <entry>Настройки почтовой программы</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/mailertable</filename>
	    </entry>
	    <entry>Таблица доставки почтовой программы</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/sendmail.cf</filename>
	    </entry>
	    <entry>Основной файл настройки
	      <application>sendmail</application></entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/virtusertable</filename>
	    </entry>
	    <entry>Таблицы виртуальных пользователей и доменов</entry>
	  </row>
	</tbody>
      </tgroup>
    </informaltable>

  <sect2>
    <title><filename>/etc/mail/access</filename></title>

    <para>База данных доступа определяет список хостов или IP адресов,
      имеющих доступ к локальному почтовому серверу, а также тип
      предоставляемого доступа.  Хосты могут быть перечислены как
      <option>OK</option>, <option>REJECT</option>, <option>RELAY</option>
      или просто переданы процедуре обработки ошибок
      <application>sendmail</application> с заданным сообщением об ошибке.
      Хостам, перечисленным с параметром по умолчанию <option>OK</option>,
      разрешено отправлять почты на этот хост, если адрес назначения почты
      принадлежит локальной машине.  Все почтовые соединения от хостов,
      перечисленных с параметром <option>REJECT</option>, отбрасываются.
      Для хостов, перечисленных с параметром <option>RELAY</option>,
      разрешена передача через этот сервер почты с любым адресом
      назначения.</para>

      <example>
	<title>Настройка базы данных доступа
	  <application>sendmail</application></title>

    <programlisting>cyberspammer.com                550 We don't accept mail from spammers
FREE.STEALTH.MAILER@            550 We don't accept mail from spammers
another.source.of.spam          REJECT
okay.cyberspammer.com           OK
128.32                          RELAY</programlisting>
      </example>

    <para>В этом примере приведены пять записей.  К отправителям, чей адрес
      соответствует записи в левой части таблицы, применяется правило
      записанное в правой части таблицы.  В первых двух примерах
      код ошибки будет передан процедуре обработке ошибок
      <application>sendmail</application>.  В этом случае на удаленном хосте
      будет получено соответствующее сообщение.  В следующем примере почта
      отбрасывается почта от определенного хоста,
      <hostid>another.source.of.spam</hostid>.  В четвертом примере
      разрешается прием почты от хоста <hostid
      role="fqdn">okay.cyberspammer.com</hostid>, имя которого более точно
      совпадает с этой записью, чем с <hostid
      role="domainname">cyberspammer.com</hostid> в примере выше.  При более
      точном совпадении правила перезаписываются.  В последнем примере
      разрешается пересылка почты от хостов с IP адресами, начинающимися
      с <hostid>128.32</hostid>.  Эти хосты смогут отправлять почту через
      этот почтовый сервер для других почтовых серверов.</para>

    <para>После изменения этого файла для обновления базы данных
      вам потребуется запустить <command>make</command> в каталоге
      <filename>/etc/mail/</filename>.</para>
   </sect2>

   <sect2>
    <title><filename>/etc/mail/aliases</filename></title>

    <para>База данных синонимов содержит список виртуальных почтовых
      ящиков, принадлежащих другим пользователям, файлам, программам, или
      другим синонимам.  Вот несколько примеров, которые могут быть
      использованы для <filename>/etc/mail/aliases</filename>:</para>

      <example>
	<title>Mail Aliases</title>
    <programlisting>root: localuser
ftp-bugs: joe,eric,paul
bit.bucket:  /dev/null
procmail: "|/usr/local/bin/procmail"</programlisting>
      </example>

    <para>Формат файла прост; имя почтового ящика слева от двоеточия
      сопоставляется назначению(ям) справа.  В первом примере
      производится простое сопоставление почтового ящика
      <username>root</username> почтовому ящику
      <username>localuser</username>, для которого затем опять будет
      произведен поиск в базе данных синонимов.  Если совпадений не
      обнаружится, сообщение будет доставлено локальному пользователю
      <username>localuser</username>.  В следующем примере приведен
      список рассылки.  Почта на адрес <username>ftp-bugs</username>
      рассылается на три локальных почтовых ящика: <username>joe</username>,
      <username>eric</username> и <username>paul</username>. Обратите
      внимание, что удаленный почтовый ящик может быть задан в виде
      <literal>user@example.com</literal>.  В следующем примере
      показана запись почты в файл, в данном случае
      <filename>/dev/null</filename>.  И в последнем примере показано
      отправление почты программе, в данном случае почтовое сообщение
      переправляется через канал &unix; на стандартный вход
      <filename>/usr/local/bin/procmail</filename>.</para>

    <para>После обновления этого файла вам потребуется запустить
      <command>make</command> в каталоге <filename>/etc/mail/</filename>
      для обновления базы данных.</para>
  </sect2>

  <sect2>
    <title><filename>/etc/mail/local-host-names</filename></title>

    <para>В этом файле находится список имен хостов, принимаемых
      программой &man.sendmail.8; в качестве локальных.  Поместите в
      этот файл любые домены или хосты, для которых
      <application>sendmail</application> должен принимать почту.
      Например, если этот почтовый сервер должен принимать почту для
      домена <hostid role="domainname">example.com</hostid> и хоста
      <hostid role="fqdn">mail.example.com</hostid>, его файл
      <filename>local-host-names</filename> может выглядеть примерно
      так:</para>

    <programlisting>example.com
mail.example.com</programlisting>

    <para>После обновления этого файла необходимо перезапустить
      &man.sendmail.8;, чтобы он смог перечитать изменения.</para>

  </sect2>

  <sect2>
    <title><filename>/etc/mail/sendmail.cf</filename></title>

    <para>Основной файл настройки <application>sendmail</application>,
      <filename>sendmail.cf</filename> управляет общим поведением
      <application>sendmail</application>, включая все, от перезаписи
      почтовых адресов до отправки удаленным серверам сообщений об
      отказе от пересылки почты.  Конечно, файл настройки с таким
      многообразием возможностей очень сложен и подробное его описание
      выходит за рамки данного раздела.  К счастью, для стандартных
      почтовых серверов изменять этот файл придется не часто.</para>

    <para>Основной файл настройки <application>sendmail</application>
      может быть собран из макроса &man.m4.1;, определяющего возможности
      и поведение <application>sendmail</application>.  Подробнее
      этот процесс описан в файле
      <filename>/usr/src/contrib/sendmail/cf/README</filename>.</para>

    <para>Для применения изменений после правки файла необходимо
      перезапустить <application>sendmail</application>.</para>
  </sect2>

  <sect2>
    <title><filename>/etc/mail/virtusertable</filename></title>

    <para>Файл <filename>virtusertable</filename> сопоставляет виртуальные
      почтовые домены и почтовые ящики реальным почтовым ящикам.  Эти
      почтовые ящики могут быть локальными, удаленными, синонимами,
      определенными в <filename>/etc/mail/aliases</filename>, или
      файлами.</para>

    <example>
	<title>Пример таблицы виртуального домена</title>

    <programlisting>root@example.com                root
postmaster@example.com          postmaster@noc.example.net
@example.com                    joe</programlisting>
      </example>

    <para>В примере выше мы видим сопоставление адресов для домена
      <hostid role="domainname">example.com</hostid>.  Почта
      обрабатывается по первому совпадению с записью в этом файле.
      Первая запись сопоставляет адрес <literal>root@example.com</literal>
      локальному почтовому ящику <username>root</username>.
      Вторая запись сопоставляет <literal>postmaster@example.com</literal>
      локальному почтовому ящику <username>postmaster</username>
      на хосте <hostid role="fqdn">noc.example.net</hostid>.  Наконец,
      до этого момента адрес в домене <hostid
      role="domainname">example.com</hostid> не совпал ни с одним из
      предыдущих, будет применено последнее сопоставление, в которому
      соответствует всякое другое почтовое сообщение, отправленное на любой
      адрес в <hostid role="domainname">example.com</hostid>.  Это сообщение
      будет доставлено в локальный почтовый ящик
      <username>joe</username>.</para>

  </sect2>
  </sect1>

  <sect1 id="mail-changingmta">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Andrew</firstname>
	  <surname>Boothman</surname>
	  <contrib>Написал </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Gregory</firstname>
	  <surname>Neil Shapiro</surname>
	  <contrib>Информация получена из писем, написанных </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Установка другой почтовой программы</title>
    <indexterm>
      <primary>email</primary>
      <secondary>замена mta</secondary>
    </indexterm>

    <para>Как уже упоминалось, FreeBSD поставляется с MTA (Mail Transfer Agent)
      <application>sendmail</application>.  Следовательно, по умолчанию
      именно эта программа отвечает за вашу исходящую и входящую
      почту.</para>

    <para>Однако, по различным причинам некоторые системные администраторы
      заменяют системный MTA.  Эти причины варьируются от простого желания
      попробовать другой MTA до потребности в определенных возможностях
      пакета, основанного на другой почтовой программе.  К счастью, вне
      зависимости от причины, в FreeBSD такая замена выполняется
      просто.</para>

    <sect2>
      <title>Установка нового MTA</title>

      <para>Вам предоставлен широкий выбор MTA.  Начните с поиска в
	<link linkend="ports">коллекции портов FreeBSD</link>,
	где их немало.  Конечно, вы можете использовать любой MTA
	по желанию, взятый откуда угодно, если только сможете
	запустить его под FreeBSD.</para>

      <para>Начните с установки нового MTA.  После установки у вас будет
	возможность решить, действительно ли он подходит вашем нуждам,
	а также настроить новое программное обеспечение перед тем, как
	заменить им <application>sendmail</application>.  При установке
	новой программы убедитесь, что она не пытается перезаписать
	системные файлы, такие как <filename>/usr/bin/sendmail</filename>.
	Иначе ваша новая почтовая программа фактически начнет работать
	до того, как вы ее настроите.</para>

      <para>Обратитесь к документации на выбранный MTA
	за информацией по его настройке.</para>
    </sect2>

    <sect2>
      <title>Отключение <application>sendmail</application></title>

      <para>Процедура, используемая для запуска
	<application>sendmail</application>, значительно изменилась между
	релизами 4.5-RELEASE и 4.6-RELEASE.  Поэтому процедура, используемая
	для его отключения, немного отличается.</para>

      <sect3>
	<title>FreeBSD 4.5-STABLE до 2002/4/4 и раньше
	  (включая 4.5-RELEASE и более ранние)</title>

	<para>Добавьте:</para>

	  <programlisting>sendmail_enable="NO"</programlisting>

	<para>в <filename>/etc/rc.conf</filename>.  Это отключит
	  сервис входящей почты <application>sendmail</application>,
	  но если <filename>/etc/mail/mailer.conf</filename> (см. ниже)
	  не изменен, <application>sendmail</application> все еще
	  будет использоваться для отправки почты.</para>
      </sect3>

      <sect3>
	<title>FreeBSD 4.5-STABLE после 2002/4/4
	  (включая 4.6-RELEASE и более поздние)</title>

	<para>Для полного отключения
	  <application>sendmail</application> используйте</para>

	  <programlisting>sendmail_enable="NONE"</programlisting>

	  <para>в <filename>/etc/rc.conf.</filename></para>

	<warning>
	  <para>Если вы отключите сервис исходящей почты
	    <application>sendmail</application> таким способом, необходимо
	    заменить его полностью работоспособной альтернативной системой
	    доставки почты.  Если вы не сделаете этого, системные программы,
	    такие как &man.periodic.8;, не смогут отправлять сообщения
	    по электронной почте как обычно.  Многие программы в вашей
	    системе могут требовать наличия функционирующей
	    <application>sendmail</application>-совместимой системы.
	    Если приложения будут продолжать использовать программу
	    <application>sendmail</application>, пытаясь отправить почту
	    после отключения почтовой системы, почта может попасть в
	    неактивную очередь <application>sendmail</application> и никогда
	    не будет доставлена.</para>
	</warning>

	<para>Если вы хотите отключить только сервис входящей почты
	  <application>sendmail</application>, установите</para>

	  <programlisting>sendmail_enable="NO"</programlisting>

	<para>в <filename>/etc/rc.conf</filename>.  Дополнительная информация
	  о параметрах запуска <application>sendmail</application>
	  доступна на странице справочника &man.rc.sendmail.8;.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Запуск нового MTA при загрузке</title>

      <para>Вы можете выбрать один из двух методов для запуска нового MTA
	при загрузке, опять же в зависимости от используемой версии
	FreeBSD.</para>

      <sect3>
	<title>FreeBSD 4.5-STABLE до 2002/4/11
	  (включая 4.5-RELEASE и более ранние)</title>

	<para>Добавьте в каталог
	  <filename>/usr/local/etc/rc.d/</filename>, скрипт с расширением
	  <filename>.sh</filename> и с правами выполнения пользователем
	  <username>root</username>.  Скрипт должен принимать параметры
	  <literal>start</literal> и <literal>stop</literal>.
	  Во время запуска системы он будет запущен командой</para>

	<programlisting>/usr/local/etc/rc.d/supermailer.sh start</programlisting>

	<para>которая также может использоваться для запуска сервера вручную
	  Во время завершения работы системы, системные скрипты используют
	  параметр <literal>stop</literal>, выполнив команду</para>

	<programlisting>/usr/local/etc/rc.d/supermailer.sh stop</programlisting>

	<para>которая также может использоваться для остановки почтового сервера
	  при работающей системе.</para>

      </sect3>

      <sect3>
	<title>FreeBSD 4.5-STABLE после 2002/4/11
	  (включая 4.6-RELEASE и более поздние)</title>

	<para>С более поздними версиями FreeBSD, вы можете использовать
	  метод, описанный выше, или добавить строку</para>

	<programlisting>mta_start_script="filename"</programlisting>

	<para>в <filename>/etc/rc.conf</filename>, где
	  <replaceable>filename</replaceable> это имя скрипта, который вы
	  хотите выполнить при загрузке для запуска MTA.</para>
      </sect3>

    </sect2>

    <sect2>
      <title>Замещение <application>sendmail</application> как
	почтовой программы по умолчанию</title>

      <para>Программа <application>sendmail</application> настолько
	распространена в качестве стандартной программы для систем &unix;,
	что многие программы считают, что она уже установлена и настроена.
	По этой причине многие альтернативные MTA предоставляют собственные
	совместимые реализации интерфейса командной строки
	<application>sendmail</application>; это облегчает их использование
	в качестве <quote>прозрачной</quote> замены
	<application>sendmail</application>.</para>

      <para>Поэтому если вы используете альтернативную почтовую программу,
	потребуется убедиться, что когда программное обеспечение
	пытается выполнить стандартные исполняемые файлы
	<application>sendmail</application>, такие как
	<filename>/usr/bin/sendmail</filename>, на самом деле выполняются
	программы вновь установленной почтовой системы.  К счастью,
	FreeBSD предоставляет систему, называемую &man.mailwrapper.8;,
	которая выполняет эту работу за вас.</para>

      <para>Когда установлен <application>sendmail</application>,
	файл <filename>/etc/mail/mailer.conf</filename> выглядит
	примерно так:</para>

<programlisting>sendmail	 /usr/libexec/sendmail/sendmail
send-mail	/usr/libexec/sendmail/sendmail
mailq		/usr/libexec/sendmail/sendmail
newaliases	/usr/libexec/sendmail/sendmail
hoststat	/usr/libexec/sendmail/sendmail
purgestat	/usr/libexec/sendmail/sendmail</programlisting>

      <para>Это означает, что когда выполняется какая-то из этих стандартных
	программ (например сам <filename>sendmail</filename>), система на
	самом деле вызывает копию mailwrapper, называемую
	<filename>sendmail</filename>, которая обращается к
	<filename>mailer.conf</filename> и выполняет вместо этого
	<filename>/usr/libexec/sendmail/sendmail</filename>.
	Такая схема делает простой замену программ, которые на самом деле
	выполняются, когда вызываются стандартные функции
	<filename>sendmail</filename>.</para>

      <para>Поэтому если вы хотите выполнять
	<filename>/usr/local/supermailer/bin/sendmail-compat</filename>
	вместо <application>sendmail</application>, отредактируйте
	<filename>/etc/mail/mailer.conf</filename> так:</para>

<programlisting>sendmail	 /usr/local/supermailer/bin/sendmail-compat
send-mail	/usr/local/supermailer/bin/sendmail-compat
mailq		/usr/local/supermailer/bin/mailq-compat
newaliases	/usr/local/supermailer/bin/newaliases-compat
hoststat	/usr/local/supermailer/bin/hoststat-compat
purgestat	/usr/local/supermailer/bin/purgestat-compat</programlisting>

	</sect2>

	<sect2>
	  <title>Запуск новой почтовой программы</title>

	<para>Как только вы все настроили, потребуется или уничтожить
	  процесс <application>sendmail</application>, который уже не
	  нужен и запустить новую почтовую программу, или просто перегрузить
	  систему.  Перезагрузка также даст вам возможность проверить,
	  правильно ли настроена система для автоматического запуска
	  MTA при загрузке.</para>
      </sect2>
    </sect1>

  <sect1 id="mail-trouble">
    <title>Поиск и устранение неисправностей</title>
    <indexterm>
      <primary>email</primary>
      <secondary>устранение неисправностей</secondary>
    </indexterm>

    <qandaset>
      <qandaentry>
	<question>
	<para>Почему я должен использовать FQDN для хостов вне моей подсети?</para>
	</question>

	<answer>
	<para>Вы, видимо, обнаружили, что хост, к которому вы обратились,
	  оказался на самом деле в другом домене; например, если вы
	  находитесь в домене <hostid role="fqdn">foo.bar.edu</hostid> и
	  хотите обратиться к хосту <hostid>mumble</hostid> в домене <hostid
	  role="domainname">bar.edu</hostid>, то должны указать его полное
	  доменное имя, <hostid role="fqdn">mumble.bar.edu</hostid>, а не
	  просто <hostid>mumble</hostid>.</para>

    <indexterm><primary>BIND</primary></indexterm>
	<para>Традиционно, программа разрешения имен BSD BIND позволяла это
	  делать.  Однако, текущая версия <application>BIND</application>,
	  поставляемая с FreeBSD, больше не добавляет имена доменов,
	  отличающихся от того, в котором вы находитесь, для не полностью
	  указанных имен хостов.  То есть, имя <hostid>mumble</hostid> будет
	  опознан как <hostid role="fqdn">mumble.foo.bar.edu</hostid> или
	  будет искаться в корневом домене.</para>

	<para>Это отличается от предыдущего поведения, при котором поиск
	  продолжался в доменах <hostid
	  role="domainname">mumble.bar.edu</hostid> и <hostid
	  role="domainname">mumble.edu</hostid>.  Если вам интересны причины
	  объявления такого поведения плохой практикой и даже ошибкой в
	  безопасности, обратитесь к RFC 1535.</para>

	<para>Хорошим решением будет поместить строку

	  <programlisting>search foo.bar.edu bar.edu</programlisting>

	  вместо ранее используемой:

	  <programlisting>domain foo.bar.edu</programlisting>

	  в файл <filename>/etc/resolv.conf</filename>.  Однако
	  удостоверьтесь, что порядок поиска не нарушает <quote>границ
	  полномочий между локальным и внешним администрированием</quote>, в
	  терминологии RFC 1535.</para>
	</answer>
      </qandaentry>

      <indexterm>
	<primary>MX record</primary>
      </indexterm>

      <qandaentry>
	<question>
	<para><application>sendmail</application> выдает ошибку
	  <errorname>mail loops back to myself</errorname></para>
	</question>

	<answer>
	<para>В FAQ по <application>sendmail</application> дан следующий ответ:</para>

	<programlisting>Я получаю такие сообщения об ошибке:

553 MX list for domain.net points back to relay.domain.net
554 &lt;user@domain.net&gt;... Local configuration error

Как можно решить эту проблему?

Согласно записям MX, почта для домена <hostid
role="domainname">domain.net</hostid> перенаправляется на хост
<hostid>relay.domain.net</hostid>, однако последний не распознается как
<hostid role="domainname">domain.net</hostid>.  Добавьте <hostid
role="domainname">domain.net</hostid> в файл
<filename>/etc/mail/local-host-names</filename>
[известный как /etc/sendmail.cw до версии 8.10]
(если вы используете
FETURE(use_cw_file)) или добавьте <quote>Cw domain.net</quote> в файл
<filename>/etc/mail/sendmail.cf</filename>.</programlisting>

	<para>FAQ по <application>sendmail</application> можно найти на
	  <ulink url="http://www.sendmail.org/faq/"></ulink> и рекомендуется
	  прочесть его при желании произвести некоторые
	  <quote>усовершенствования</quote> настроек почтовой системы.</para>
	</answer>
      </qandaentry>

      <indexterm><primary>PPP</primary></indexterm>
      <qandaentry>
	<question>
	<para>Как организовать работу почтового сервера при коммутируемом соединении
	  с Интернет?</para>
	</question>

	<answer>
	<para>Вы хотите подключить к интернет компьютер с FreeBSD, работающий
	  в локальной сети.  Компьютер с FreeBSD будет почтовым шлюзом
	  для локальной сети.  PPP соединение не выделенное.</para>

	<indexterm><primary>UUCP</primary></indexterm>
	<indexterm>
	  <primary>MX record</primary>
	</indexterm>

	<para>Существует как минимум два пути, чтобы сделать это.  Один способ
	  это использование UUCP.</para>

	<para>Другой способ это использование постоянно работающего интернет
	  сервера для обеспечения вторичного MX сервиса вашего домена.
	  Например, домен вашей компании <hostid
	  role="domainname">example.com</hostid>, и провайдер интернет
	  настроил <hostid role="domainname">example.net</hostid>
	  для обеспечения вторичного MX сервиса:

	<programlisting>example.com.          MX        10      example.com.
                      MX        20      example.net.</programlisting>

	<para>Только один хост должен быть указан в качестве последнего
	  получателя (добавьте запись <literal>Cw example.com</literal> в файл
	  <filename>/etc/mail/sendmail.cf</filename> на машине
	  <hostid role="domainname">example.com</hostid>).</para>

	<para>Когда программа <command>sendmail</command> (со стороны
	  отправителя) <quote>захочет</quote> доставить почту, она
	  попытается соединиться с вашим хостом (<hostid
	  role="domainname">example.com</hostid>) через модемное подключение.
	  Скорее всего, ей это не удастся (вы,
	  вероятнее всего, не будете подключены к интернет).
	  Программа <application>sendmail</application>
	  автоматически перейдет ко вторичному MX серверу, т.е. вашему провайдеру
	  (<hostid role="domainname">example.net</hostid>).
	  Вторичный MX сервер будет периодически пытаться соединиться с
	  вашим хостом и доставить почту на основной сервер MX
	  (<hostid role="domainname">example.com</hostid>).</para>

	<para>Вы можете воспользоваться следующим сценарием, чтобы забирать
	  почту каждый раз, когда вы входите в систему:</para>

	<programlisting>#!/bin/sh
# Put me in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &amp;
/usr/sbin/ppp -direct pppmyisp</programlisting>

	<para>Если же вы хотите написать отдельный пользовательский скрипт,
	  лучше воспользоваться командой <command>sendmail
	  -qRexample.com</command> вместо вышеприведенного сценария, так как в
	  этом случае вся почта в очереди для хоста
	  <hostid role="domainname">example.com</hostid> будет обработана
	  немедленно.</para>

	<para>Рассмотрим эту ситуацию подробнее:</para>

	<para>Вот пример сообщения из &a.isp.name;.</para>

	<programlisting>&gt; Мы предоставляем вторичный MX для наших клиентов.  Вы соединяетесь
&gt; с нашим сервером несколько раз в день, чтобы забрать почту для вашего
&gt; первичного (главного) MX (мы не соединяемся с ним каждый раз, когда
&gt; приходит новая почта для его доменов).  Далее, sendmail отправляет
&gt; почту, находящуюся в очереди каждые 30 минут, и клиент должен быть
&gt; подключен к Интернет в течении 30 минут, чтобы удостовериться, что
&gt; вся почта <quote>ушла</quote> на основной MX-сервер.
&gt;
&gt; Может быть, есть какая-либо команда, которая заставит sendmail
&gt; немедленно отправить все почту, находящуюся в очереди?  Естественно,
&gt; пользователи не обладают какими-либо повышенными привилегиями на
&gt; нашем сервере.

В разделе <quote>privacy flags</quote> файла
<filename>sendmail.cf</filename>, определяется опция
<option>Opgoaway,restrictqrun</option>

Уберите <literal>restrictqrun</literal>, чтобы разрешить рядовым
пользователям инициировать работу с очередью.  Вам также может понадобиться
изменить порядок MX-серверов.  Так, если вы предоставляете первый (основной)
MX-сервер для ваши пользователей, мы указываем:

# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue

Таким образом, удаленный хост будет доставлять почту непосредственно к вам,
не пытаясь установить соединение с клиентом. Затем уже вы, в свою очередь,
отсылаете ее клиенту.  Удостоверьтесь, что в DNS есть записи про
<quote>customer.com</quote> и <quote>hostname.customer.com</quote>.  Просто
добавьте запись A в DNS для <quote>customer.com</quote>.</programlisting>
	</answer>
      </qandaentry>

      <qandaentry>
	<question>
	  <para>Почему я продолжаю получать ошибки <errorname>Relaying
	    Denied</errorname> при отправки почты через другие
	    хосты?</para>
	</question>

	<answer>
	  <para>В установке FreeBSD по умолчанию,
 	    <application>sendmail</application> настроен для отправки
	    почты только от хоста, на котором он работает.  Например,
	    если доступен <acronym>POP</acronym> сервер, пользователи
	    смогут проверять почту из школы, с работы или других
	    удаленных точек, но не смогут отправлять письма.  Обычно,
	    через некоторое время после попытки будет отправлено письмо
	    от <application>MAILER-DAEMON</application> с сообщением
	    об ошибке <errorname>5.7 Relaying Denied</errorname>.</para>

	  <para>Есть несколько путей разрешения этой ситуации.  Самый прямой
	    путь это использование адреса вашего провайдера в файле
	    relay-domains, расположенном в
	    <filename>/etc/mail/relay-domains</filename>.  Быстрый способ
	    сделать это:</para>

	  <screen>&prompt.root; <userinput>echo "your.isp.example.com" &gt; /etc/mail/relay-domains</userinput></screen>

	  <para>После создания или редактирования этого файла вы должны
	    перезапустить <application>sendmail</application>.  Это отлично
	    работает, если вы администратор сервера и не хотите отправлять
	    почту локально, или хотите воспользоваться почтовым
	    клиентом/системой на другом компьютере или даже через другого
	    провайдера.  Это также очень полезно, если у вас настроены одна
	    или две почтовые записи.  Если необходимо добавить несколько
	    адресов, вы можете просто открыть этот файл в текстовом редакторе и
	    добавить домены, по одному на строку:</para>

	  <programlisting>your.isp.example.com
other.isp.example.net
users-isp.example.org
www.example.org</programlisting>

	  <para>Теперь будет отправляться любая почта, посылаемая через вашу
	    систему любым хостом из этого списка (предоставляемого
	    пользователем, имеющим учетную запись в вашей системе).
	    Это отличный способ разрешить пользователям отправлять почту
	    через вашу систему удаленно, одновременно он блокирует отправку
	    спама.</para>
	</answer>
      </qandaentry>
    </qandaset>
  </sect1>

  <sect1 id="mail-advanced">
    <title>Расширенное руководство</title>

    <para>В следующем разделе рассматриваются более сложные темы, такие как
      настройка почты и включение почтовой системы для всего домена.</para>

    <sect2 id="mail-config">
      <title>Базовая конфигурация</title>

      <indexterm>
	<primary>email</primary>
	<secondary>настройка</secondary>
      </indexterm>

      <para>Изначально, вы можете отправлять почту <quote>во внешний
	мир</quote> если правильно составлен файл
	<filename>/etc/resolv.conf</filename> или запущен свой сервер
	имен.  Если вы хотите, чтобы почта, предназначенная для хоста в
	вашем домене, доставлялась MTA (например,
	<application>sendmail</application>) на вашем хосте FreeBSD, есть два
	пути:</para>

      <itemizedlist>
	<listitem>
	  <para>Запустите свой собственный сервер DNS, тем самым организовав
	    собственный домен, например, <hostid
	    role="domainname">FreeBSD.org</hostid></para>
	</listitem>

	<listitem>
	  <para>Получайте почту для вашего хоста непосредственно.  Это
	    работает при доставке почты непосредственно на DNS имя вашей
	    машины.  Например, <hostid
            role="fqdn">example.FreeBSD.org</hostid>.</para>
	</listitem>
      </itemizedlist>

      <indexterm><primary>SMTP</primary></indexterm>
      <para>Независимо от выбранного из предложенных выше вариантов, для
	доставки почты непосредственно на ваш хост у него должен быть
	постоянный IP адрес (а не динамический,
	как у большинства PPP соединений).  Если вы находитесь за
	брандмауэром, то последний должен пропускать SMTP-пакеты.  Если
	вы хотите, чтобы почта приходила непосредственно на ваш
	хост, необходимо убедиться в одном из двух:</para>

      <itemizedlist>
    <indexterm><primary>MX record</primary></indexterm>
	<listitem>
	  <para>Убедитесь, что запись (с наименьшим номером) MX в
	    DNS соответствует IP адресу
	    вашего хоста.</para>
	</listitem>

	<listitem>
	  <para>Убедитесь, что в DNS для вашего хоста вообще отсутствует
	    MX-запись.</para>
	</listitem>
      </itemizedlist>

      <para>Выполнение любого из перечисленных условий обеспечит доставку
	почты для вашего хоста.</para>

      <para>Попробуйте это:</para>

      <screen>&prompt.root; <userinput>hostname</userinput>
example.FreeBSD.org
&prompt.root; <userinput>host example.FreeBSD.org</userinput>
example.FreeBSD.org has address 204.216.27.XX</screen>

      <para>Если вы это видите, то можно без проблем посылать почту на
	<email>yourlogin@example.FreeBSD.org</email> (предполагается,
	что <application>sendmail</application> на <hostid
	role="fqdn">example.FreeBSD.org</hostid> работает правильно).</para>

      <para>Однако, если вы видите это:</para>

      <screen>&prompt.root; <userinput>host example.FreeBSD.org</userinput>
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org</screen>

      <para>то вся почта, посланная на <hostid
	role="fqdn">example.FreeBSD.org</hostid> будет собираться на
	<hostid>hub</hostid> (для того же пользователя), вместо того, чтобы
	быть отосланной непосредственно на ваш хост.</para>

      <para>Эта информация обрабатывается вашим DNS сервером.  Соответствующая
	запись DNS, указывающая, через какой хост будет проходить ваша
	почта, называется MX (<emphasis>M</emphasis>ail
	e<emphasis>X</emphasis>changer).  Если для хоста отсутствует такая
	запись, почта будет приходить прямо на этот хост.</para>

      <para>Допустим, что запись MX для хоста <hostid
	role="fqdn">freefall.FreeBSD.org</hostid> в какой-то момент
	выглядела так:</para>

      <programlisting>freefall		MX	30	mail.crl.net
freefall		MX	40	agora.rdrop.com
freefall		MX	10	freefall.FreeBSD.org
freefall		MX	20	who.cdrom.com</programlisting>

      <para>Вы видите, что для хоста <hostid>freefall</hostid> существуют
	несколько MX-записей.  Запись с наименьшим номером соответствует
	хосту, получающему почту непосредственно, если он доступен; если
	он недоступен по каким-то причинам, другие сервера (иногда называемые
	(<quote>резервными MX</quote>) временно получают почту, и хранят ее
	пока не станут доступны хосты с меньшими номерами, в конечном итоге
	отправляя почту на эти хосты.</para>

      <para>Чтобы альтернативные MX-хосты использовались наиболее
	эффективно, они должны быть независимо подключены к Интернет.  Ваш
	провайдер (или дружественный сайт) скорее всего без проблем сможет
	оказать подобные услуги.</para>
    </sect2>

    <sect2 id="mail-domain">
      <title>Почта для вашего домена</title>

      <para>Для настройки <quote>почтового хоста</quote> (почтовый
	сервер) вам потребуется, чтобы почта, направляемая различным рабочим
	станциям, пересылалась этому хосту.  Обычно вам необходима
	доставка всей почты для любого хоста вашего домена (в данном случае
	<hostid role="fqdn">*.FreeBSD.org</hostid>) на почтовый сервер, чтобы
	пользователи могли получать свою почту на с этого сервера.</para>

      <indexterm><primary>DNS</primary></indexterm>
      <para>Чтобы облегчить себе (и другим) жизнь, создайте на обеих машинах
	учетные записи с одинаковыми именами пользователей, например, с помощью
	команды &man.adduser.8;.</para>

      <para>Сервер, который вы будете использовать в качестве почтового,
	должен быть объявлен таковым для каждой машины в домене.  Вот
	фрагмент примерной конфигурации:</para>

      <programlisting>example.FreeBSD.org	A	204.216.27.XX		; Рабочая станция
			MX	10 hub.FreeBSD.org	; Почтовый шлюз</programlisting>

      <para>Таким образом, вся корреспонденция, адресованная рабочей
	станции, будет обрабатываться вашим почтовым сервером, независимо от
	того, что указано в A-записи.</para>

      <para>Все это можно реализовать только в том случае, если вы
	используете сервер DNS.  Если вы по каким-либо причинам не имеете
	возможности установить свой собственный сервер имен, необходимо
	договориться с провайдером или теми, кто поддерживает ваш
	DNS.</para>

      <para>Если вы хотите поддерживать несколько виртуальных почтовых
	серверов, может пригодиться следующая информация.  Допустим, что
	ваш клиент зарезервировал домен, например, <hostid
	role="domainname">customer1.org</hostid>, и вам требуется, чтобы
	почта, предназначенная для <hostid
	role="domainname">customer1.org</hostid> приходила на ваш хост,
	например, <hostid role="fqdn">mail.myhost.com</hostid>.  В таком
	случае, DNS должен выглядеть так:</para>

      <programlisting>customer1.org		MX	10	mail.myhost.com</programlisting>

      <para>Заметьте, что если вам требуется только получать почту для
	домена, соответствующая A-запись <emphasis>не</emphasis>
	нужна.</para>

      <note>
	<para>Помните, что если вы попытаетесь каким-либо образом обратиться
	  к хосту <hostid role="domainname">customer1.org</hostid>, у вас
	  вряд ли что-либо получится, если нет A-записи для этого
	  хоста.</para>
      </note>

      <para>Последнее, что вы должны сделать &ndash; это сказать программе
	<application>sendmail</application>, для каких доменов и/или хостов
	она должна принимать почту.  Это можно сделать несколькими
	способами:</para>

      <itemizedlist>
	<listitem>
	  <para>Добавьте названия этих хостов в файл
	    <filename>/etc/mail/local-host-names</filename>, если вы используете
	    <literal>FEATURE(use_cw_file)</literal>.  Если у вас
	    <application>sendmail</application>
	    версии ниже 8.10, необходимо отредактировать файл
	    <filename>/etc/sendmail.cw</filename>.</para>
	</listitem>

	<listitem>
	  <para>Добавьте строку <literal>Cwyour.host.com</literal> в файл
	    <filename>/etc/sendmail.cf</filename> или
	    <filename>/etc/mail/sendmail.cf</filename> (если у вас
	    <application>sendmail</application>
	    версии 8.10 или более поздней).</para>
	</listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="SMTP-UUCP">
  <title>SMTP через UUCP</title>

    <para>Настройка поставляемого с FreeBSD <application>sendmail</application>
      предназначена для сайтов, подключенных к интернет непосредственно.
      Сайты, осуществляющие обмен почтой через UUCP, должны использовать
      другой файл настройки <application>sendmail</application>.</para>

    <para>Редактирование <filename>/etc/mail/sendmail.cf</filename> вручную
      это сложная задача.  <application>sendmail</application> версии 8
      генерирует файлы настройки через препроцессор &man.m4.1;, реально
      настройка выполняется на более высоком уровне абстракции.
      Файлы настройки &man.m4.1; можно найти в
      <filename>/usr/src/usr.sbin/sendmail/cf</filename>.</para>

    <para>Если вы не установили в систему все исходные тексты, пакет настройки
      <application>sendmail</application> можно найти в отдельном архиве
      исходных текстов.  Если CDROM с исходными текстами
      FreeBSD смонтирован, выполните:</para>

    <screen>&prompt.root; <userinput>cd /cdrom/src</userinput>
&prompt.root; <userinput>cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail</userinput></screen>

    <para>Эта установка займет всего несколько сотен килобайт.  Файл
      <filename>README</filename> в каталоге <filename>cf</filename>
      содержит введение в основы настройки &man.m4.1;.</para>

    <para>Лучшим способом настройки поддержки передачи по UUCP является
      использование возможности <literal>mailertable</literal>.
      При этом создается база данных, которая помогает
      <application>sendmail</application> решать вопросы маршрутизации.</para>

    <para>Во-первых, создайте файл <filename>.mc</filename>.  В каталоге
      <filename>/usr/src/usr.sbin/sendmail/cf/cf</filename> находятся
      несколько примеров.  Возьмем для примера имя файла
      <filename>foo.mc</filename>.  Все, что потребуется для преобразования
      его в <filename>sendmail.cf</filename>, это:</para>

    <screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail/cf/cf</userinput>
&prompt.root; <userinput>make foo.cf</userinput>
&prompt.root; <userinput>cp foo.cf /etc/mail/sendmail.cf</userinput></screen>

    <para>Типичный <filename>.mc</filename> файл может выглядеть примерно
      так:</para>

    <programlisting>VERSIONID(`<replaceable>Your version number</replaceable>') OSTYPE(bsd4.4)

FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')

define(`UUCP_RELAY', <replaceable>your.uucp.relay</replaceable>)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')

MAILER(local)
MAILER(smtp)
MAILER(uucp)

Cw    <replaceable>your.alias.host.name</replaceable>
Cw    <replaceable>youruucpnodename.UUCP</replaceable></programlisting>

    <para>Строки, содержащие
      <literal>accept_unresolvable_domains</literal>,
      <literal>nocanonify</literal>, и
      <literal>confDONT_PROBE_INTERFACES</literal>, предотвратят использование
      DNS для доставки почты.  Пункт <literal>UUCP_RELAY</literal>
      необходим для поддержки доставки по UUCP.  Просто поместите сюда
      имя хоста в интернет, способного работать с .UUCP адресами
      псевдо-доменов; скорее всего, вы введете сюда основной сервер
      пересылки почты провайдера.</para>

    <para>Как только вы сделаете это, потребуется файл
      <filename>/etc/mail/mailertable</filename>.  Если вы используете
      для всей почты только одно внешнее соединение, подойдет следующий
      файл:</para>

    <programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /etc/mail/mailertable
.                             uucp-dom:<replaceable>your.uucp.relay</replaceable></programlisting>

    <para>Более сложный пример может выглядеть так:</para>

    <programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /etc/mail/mailertable
#
horus.interface-business.de   uucp-dom:horus
.interface-business.de        uucp-dom:if-bus
interface-business.de         uucp-dom:if-bus
.heep.sax.de                  smtp8:%1
horus.UUCP                    uucp-dom:horus
if-bus.UUCP                   uucp-dom:if-bus
.                             uucp-dom:</programlisting>


    <para>В первых трех строках обрабатываются специальные случаи, когда
      почта для домена должна отправляться не на маршрут по умолчанию,
      а на ближайшее соединение UUCP для сокращения пути доставки.
      Следующая строка обрабатывает почту, которая может быть доставлена
      по SMTP для локального Ethernet домена.  Наконец, определены
      маршруты UUCP в нотации псевдо-доменов .UUCP, для включения
      перезаписи правил по умолчанию правилом
      <literal><replaceable>uucp-neighbor
      </replaceable>!<replaceable>recipient</replaceable></literal>.
      Последняя строка всегда содержит одиночную точку, означающую
      <quote>все остальное</quote>, с отправкой через UUCP, являющимся
      универсальным почтовым шлюзом.  Все имена узлов после ключевого слова
      <literal>uucp-dom:</literal> должны представлять существующие маршруты
      UUCP, проверить их можно с помощью команды
      <literal>uuname</literal>.</para>

    <para>Напоминаем, что этот файл должен быть преобразован в базу данных
      DBM перед использованием.  Командную строку для этой задачи лучше всего
      поместить в качестве комментария в верхней части файла
      <filename>mailertable</filename>.  Всегда выполняйте эту команду после
      правки файла <filename>mailertable</filename>.</para>

    <para>И наконец: если вы не уверены, что некоторые отдельные почтовые
      маршруты будут работать, запомните параметр
      <application>sendmail</application> <option>-bt</option>.  С этим
      параметром <application>sendmail</application> запускается в
      <emphasis>режиме тестирования адреса</emphasis>; просто введите
      <literal>3,0</literal> и адрес, который вы хотите протестировать.
      В последней строке появится сообщение об используемом внутреннем
      почтовом агенте, хосте назначения, с которым вызывается этот агент,
      и (возможно транслированный) адрес.  Выход из этого режима
      происходит при нажатии <keycombo
      action="simul"><keycap>Ctrl</keycap><keycap>D</keycap></keycombo>.</para>

    <screen>&prompt.user; <userinput>sendmail -bt</userinput>
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter &lt;ruleset&gt; &lt;address&gt;
<prompt>&gt;</prompt> <userinput>3,0 foo@example.com</userinput>
canonify           input: foo @ example . com
...
parse            returns: $# uucp-dom $@ <replaceable>your.uucp.relay</replaceable> $: foo &lt; @ example . com . &gt;
<prompt>&gt;</prompt> <userinput>^D</userinput></screen>
  </sect1>

  <sect1 id="outgoing-only">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Bill</firstname>
	  <surname>Moran</surname>
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Настройка почты только для отправки</title>

    <para>Существует множество случаев, когда может потребоваться только
      отправка почты через почтовый сервер.  Вот отдельные примеры:</para>

    <itemizedlist>
      <listitem>
	<para>У вас настольный компьютер, но вы хотите использовать такие
	  программы как &man.send-pr.1;.  Для пересылки почты вам потребуется
	  использовать почтовый сервер провайдера.</para>
      </listitem>

      <listitem>
	<para>Ваш компьютер является сервером, где почта не хранится локально,
	  необходима только переправка всей почты через внешний почтовый
	  сервер.</para>
      </listitem>
    </itemizedlist>

    <para>Практически любой <acronym>MTA</acronym> способен работать и в
      этих условиях.  К сожалению, может быть очень сложно правильно настроить
      полноценный <acronym>MTA</acronym> для работы только с исходящей
      почтой.  Такие программы, как <application>sendmail</application>
      и <application>postfix</application> слишком избыточны для этих
      целей.</para>

    <para>К тому же, если вы используете обычные средства доступа в
      интернет, условий для запуска <quote>почтового сервера</quote> может
      быть недостаточно.</para>

    <para>Простейшим способом удовлетворить имеющиеся потребности может быть
      установка порта <filename role="package">mail/ssmtp</filename>.
      Выполните под <username>root</username> следующие команды:</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/mail/ssmtp</userinput>
&prompt.root; <userinput>make install replace clean</userinput></screen>

    <para>После установки потребуется настроить
      <filename role="package">mail/ssmtp</filename> с помощью файла из
      четырех строк, расположенного в
      <filename>/usr/local/etc/ssmtp/ssmtp.conf</filename>:</para>

    <programlisting>root=yourrealemail@example.com
mailhub=mail.example.com
rewriteDomain=example.com
hostname=_HOSTNAME_</programlisting>

    <para>Убедитесь, что используете существующий почтовый адрес для
      <username>root</username>.  Введите сервер вашего провайдера для
      пересылки исходящей почты вместо <hostid
      role="fqdn">mail.example.com</hostid> (некоторые провайдеры
      называют его <quote>сервером исходящей почты</quote> или
      <quote>SMTP сервером</quote>).</para>

    <para>Убедитесь, <application>sendmail</application> выключен путем
      добавления строки <literal>sendmail_enable="NONE"</literal>
      в <filename>/etc/rc.conf</filename>.</para>

    <para>У пакета <filename role="package">mail/ssmtp</filename> имеются
      и другие параметры.  Обратитесь к файлу с примером настройки
      в <filename>/usr/local/etc/ssmtp</filename> или к странице справочника
      <application>ssmtp</application> за примерами и дополнительной
      информацией.</para>

    <para>Установка <application>ssmtp</application> таким способом
      позволит правильно работать любым программам на вашем компьютере,
      которым требуется отправка почты, но не нарушит политику вашего
      провайдера и не позволит вашему компьютеру быть использованным
      спамерами.</para>
  </sect1>

  <sect1 id="SMTP-dialup">
    <title>Использование почты с коммутируемым соединением</title>

    <para>Если у вас есть статический IP, настройки по умолчанию менять
      не потребуется.  Установите имя хоста в соответствии с присвоенным
      именем интернет и <application>sendmail</application> будет делать
      свою работу.</para>

    <para>Если у вас динамический IP адрес и используется коммутируемое
      PPP соединение с интернет, у вас возможно уже есть почтовый ящик
      на сервере провайдера.  Предположим, что домен провайдера называется
      <hostid role="domainname">example.net</hostid>, и что ваше
      имя пользователя <username>user</username>, ваш компьютер называется
      <hostid role="fqdn">bsd.home</hostid>, и провайдер сообщил вам, что
      возможно использование <hostid
      role="fqdn">relay.example.net</hostid> в качестве сервера для пересылки
      почты.</para>

    <para>Для получения почты из почтового ящика необходима установка
      соответствующей программы.  Хорошим выбором является
      утилита <application>fetchmail</application>, она поддерживает
      множество различных протоколов.  Эта программа доступна в виде
      пакета или из коллекции портов (<filename
      role="package">mail/fetchmail</filename>).  Обычно провайдер
      предоставляет доступ по протоколу <acronym>POP</acronym>.  Если
      вы работаете с пользовательским <acronym>PPP</acronym>, то можете
      автоматически забирать почту после установления соединения с
      интернет с помощью следующей записи в
      <filename>/etc/ppp/ppp.linkup</filename>:</para>

    <programlisting>MYADDR:
!bg su user -c fetchmail</programlisting>

    <para>Если вы используете <application>sendmail</application> (как
      показано ниже) для доставки почты к не-локальным учетным записям,
      вам возможно потребуется обработка почтовой очереди
      <application>sendmail</application> сразу после установки
      соединения с интернет.  Для выполнения этой работы поместите
      в <filename>/etc/ppp/ppp.linkup</filename> следующую команду
      сразу после <command>fetchmail</command>:</para>

    <programlisting>  !bg su user -c "sendmail -q"</programlisting>

    <para>Предполагается, что учетная запись для
      <username>user</username> существует на <hostid
      role="fqdn">bsd.home</hostid>.  В домашнем каталоге
      <username>user</username> на <hostid
      role="fqdn">bsd.home</hostid>, создайте файл
      <filename>.fetchmailrc</filename>:</para>

    <programlisting>poll example.net protocol pop3 fetchall pass MySecret</programlisting>

    <para>Этот файл не должен быть доступен на чтение никому, кроме
      <username>user</username>, поскольку в нем находится пароль
      <literal>MySecret</literal>.</para>

    <para>Для отправки почты с правильным заголовком
      <literal>from:</literal>, вам потребуется сообщить
      <application>sendmail</application> использовать
      <literal>user@example.net</literal> вместо
      <literal>user@bsd.home</literal>.  Вы можете также указать
      <application>sendmail</application> отправлять почту через <hostid
      role="fqdn">relay.example.net</hostid>, для более быстрой пересылки
      почты.</para>

    <para>Должен подойти следующий файл <filename>.mc</filename>:</para>

    <programlisting>VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`example.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.example.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnl</programlisting>

    <para>Обратитесь к предыдущему разделу за информацией о том, как
      преобразовать этот файл <filename>.mc</filename> в файл
      <filename>sendmail.cf</filename>.  Не забудьте также перезапустить
      <application>sendmail</application> после обновления
      <filename>sendmail.cf</filename>.</para>
  </sect1>

  <sect1 id="SMTP-Auth">
    <sect1info>
    <authorgroup>
      <author>
        <firstname>James</firstname>
        <surname>Gorham</surname>
        <contrib>Написал </contrib>
      </author>
    </authorgroup>
    </sect1info>

    <title>SMTP аутентификация</title>

    <para>Наличие <acronym>SMTP</acronym> аутентификации на почтовом сервере
      дает множество преимуществ.  <acronym>SMTP</acronym> аутентификация
      может добавить дополнительный уровень безопасности к
      <application>sendmail</application>, и позволяет мобильным пользователям,
      подключающимся к разным хостам, возможность использовать тот же
      почтовый сервер без необходимости перенастройки почтового клиента
      при каждом подключении.</para>

    <procedure>
      <step>
	<para>Установите <filename role="package">security/cyrus-sasl</filename>
	  из портов. Вы можете найти этот порт в
	  <filename role="package">security/cyrus-sasl</filename>.
	  В пакете <filename role="package">security/cyrus-sasl</filename>
	  есть множество параметров компиляции, и для используемого здесь
	  метода убедитесь, что выбран параметр
	  <option>pwcheck</option>.</para>
      </step>


      <step>
	<para>После установки
	  <filename role="package">security/cyrus-sasl</filename>,
	  отредактируйте <filename>/usr/local/lib/sasl/Sendmail.conf</filename>
	  (или создайте его если он не существует) и добавьте следующую
	  строку:</para>

	<programlisting>pwcheck_method: passwd</programlisting>

	<para>Этот метод включит аутентификацию
	  <application>sendmail</application> через базу данных
	  <filename>passwd</filename> FreeBSD.  Это позволяет избежать
	  проблем, связанных с созданием нового набора имен пользователей
	  и паролей для каждого пользователя, которому необходима
	  <acronym>SMTP</acronym> аутентификация, пароль для входа в систему
	  и для отправки почты будет одним и тем же.</para>
      </step>

      <step>
	<para>Теперь отредактируйте <filename>/etc/make.conf</filename> и
	  добавьте следующие строки:</para>

	<programlisting>SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl</programlisting>

	<para>Эти параметры необходимы <application>sendmail</application>
	  для подключения <filename role="package">cyrus-sasl</filename>
	  во время компиляции.  Убедитесь, что <filename
	  role="package">cyrus-sasl</filename> был установлен до
	  перекомпиляции <application>sendmail</application>.</para>
      </step>

      <step>
	<para>Перекомпилируйте <application>sendmail</application>, выполнив
	  следующие команды:</para>

	<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail</userinput>
&prompt.root; <userinput>make cleandir</userinput>
&prompt.root; <userinput>make obj</userinput>
&prompt.root; <userinput>make</userinput>
&prompt.root; <userinput>make install</userinput></screen>

	<para>Компиляция <application>sendmail</application> должна пройти
	  без проблем, если <filename>/usr/src</filename> не был сильно
	  изменен и доступны необходимые разделяемые библиотеки.</para>
      </step>

      <step>
	<para>После компилирования и переустановки
	  <application>sendmail</application>, отредактируйте файл
	  <filename>/etc/mail/freebsd.mc</filename> (или тот файл, который
	  используется в качестве <filename>.mc</filename>; многие
	  администраторы используют в качестве имени этого файла
	  вывод &man.hostname.1; для обеспечения уникальности).
	  Добавьте к нему следующие строки:</para>

	<programlisting>dnl set SASL options
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl</programlisting>

	<para>Эти параметры настраивают различные методы, доступные
	  <application>sendmail</application> для аутентификации пользователей.
	  Если вы хотите использовать вместо
	  <application>pwcheck</application> другой метод, обратитесь к
	  прилагаемой документации.</para>
      </step>

      <step>
	<para>Наконец, запустите &man.make.1; в каталоге
	  <filename>/etc/mail</filename>.  Из файла
	  <filename>.mc</filename> будет создан файл
	  <filename>.cf</filename>, называющийся
	  <filename>freebsd.cf</filename> (или с тем именем, которое было
	  использовано для файла <filename>.mc</filename>).  Затем
	  используйте команду <command>make install restart</command>,
	  которая скопирует файл в <filename>sendmail.cf</filename>,
	  и правильно перезапустит <application>sendmail</application>.
	  Дополнительная информация об этом процессе находится в
	  <filename>/etc/mail/Makefile</filename>.</para>
      </step>
    </procedure>

    <para>Если все шаги пройдены успешно, введите информацию для
      аутентификации в настройки почтового клиента и отправьте тестовое
      сообщение.  Для определения причин возможных ошибок установите
      параметр <application>sendmail</application>
      <option>LogLevel</option> в 13 и просмотрите
      <filename>/var/log/maillog</filename>.</para>

    <para>Для включения сервиса после каждой загрузки системы вам может
      потребоваться добавление в <filename>/etc/rc.conf</filename>
      следующих строк:</para>

    <programlisting>sasl_pwcheck_enable="YES"
sasl_pwcheck_program="/usr/local/sbin/pwcheck"</programlisting>

    <para>Эти строки инициализируют <acronym>SMTP_AUTH</acronym> при загрузке
      системы.</para>

    <para>За дальнейшей информацией обратитесь к странице
      <application>sendmail</application>, посвященной
      <ulink url="http://www.sendmail.org/~ca/email/auth.html">
      <acronym>SMTP</acronym> аутентификации</ulink>.</para>
  </sect1>

  <sect1 id="mail-agents">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Marc</firstname>
	  <surname>Silver</surname>
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Почтовые программы пользователей</title>

    <indexterm>
      <primary>почтовые программы пользователей</primary>
    </indexterm>

    <para>Почтовая программа пользователя (Mail User Agent,
      <acronym>MUA</acronym>) это приложение, используемое для отправки
      и получения почты.  Кроме того, поскольку почта
      <quote>эволюционирует</quote> и становится более сложной,
      <acronym>MUA</acronym> совершенствуют свои функции по обработке
      почты, становятся более удобны в использовании.  &os; поддерживает
      множество различных пользовательских почтовых программ, каждая
      из которых может быть легко установлена из <link
      linkend="ports">коллекции портов FreeBSD</link>.  Пользователи могут
      выбирать между графическими почтовыми клиентами, такими как
      <application>evolution</application> или
      <application>balsa</application>, консольными клиентами, такими
      как <application>mutt</application>, <application>pine</application>
      или <command>mail</command>, или веб интерфейсами, используемыми в
      некоторых больших организациях.</para>

    <sect2 id="mail-command">
      <title>mail</title>

      <para>В &os; в качестве <acronym>MUA</acronym> по умолчанию используется
	&man.mail.1;.  Это консольный <acronym>MUA</acronym>, предоставляющий
	все основные функции, необходимые для отправки и получения текстовых
	сообщений, хотя его возможности по работе с вложениями ограничены и
	он может работать только с локальными почтовыми ящиками.</para>

      <para>Хотя <command>mail</command> не поддерживает работу с серверами
	<acronym>POP</acronym> или <acronym>IMAP</acronym>, эти почтовые
	ящики могут быть загружены в локальный файл <filename>mbox</filename>
	с помощью <application>fetchmail</application>, который будет
	обсуждаться далее в этой главе (<xref
	linkend="mail-fetchmail">).</para>

      <para>Для отправки и получения почты просто выполните команду
	<command>mail</command>, как в этом примере:</para>

      <screen>&prompt.user; <userinput>mail</userinput></screen>

      <para>Содержимое почтового ящика в каталоге
	<filename class="directory">/var/mail</filename> будет автоматически
	прочитано утилитой <command>mail</command>.  Если почтовый ящик
	пуст, утилита завершит работу с сообщением о том, что почта не
	была обнаружена.  После чтения почтового ящика запустится
	интерфейс программы и будет отображен список сообщений.  Сообщения
	нумеруются автоматически и будут выглядеть как в этом примере:</para>

      <screen>Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
 N  2 root@localhost        Mon Mar  8 14:05  14/509   "user account"
 N  3 root@localhost        Mon Mar  8 14:05  14/509   "sample"</screen>

      <para>Теперь сообщения могут быть прочитаны с помощью команды
	<keycap>t</keycap>, завершаемой номером сообщения, которое должно
	быть отображено.  В этом примере мы прочтем первое сообщение:</para>

      <screen>& <userinput>t 1</userinput>
Message 1:
From root@localhost  Mon Mar  8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)

This is a test message, please reply if you receive it.</screen>

      <para>Как видно в примере выше, клавиша <keycap>t</keycap> выводит
	сообщение со всеми заголовками.  Для повторного вывода
	списка сообщений необходимо использовать клавишу
	<keycap>h</keycap>.</para>

      <para>Если требуется ответить на сообщение, используйте для
	ответа <command>mail</command>, нажав клавишу <keycap>R</keycap> или
	<keycap>r</keycap>.  Клавиша <keycap>R</keycap> используется в
	<command>mail</command> для ответа только отправителю,
	а <keycap>r</keycap> для ответа и отправителю, и другим получателям
	сообщения.  Вы можете также завершить эти команды номером письма,
	на которое хотите составить ответ.  После этого необходимо ввести
	ответ, конец сообщения должен быть завершен символом
	<keycap>.</keycap> на новой строке.  Пример можно увидеть ниже:</para>

      <screen>& <userinput>R 1</userinput>
To: root@localhost
Subject: Re: test

<userinput>Thank you, I did get your email.
.</userinput>
EOT</screen>

      <para>Для отправки нового сообщения используйте клавишу
	<keycap>m</keycap> и введите адрес получателя.  Несколько получателей
	могут быть указаны через запятую.  Введите тему сообщения и
	его содержимое.  Конец сообщения отмечается помещением
	символа <keycap>.</keycap> на новой строке.</para>

      <screen>& <userinput>mail root@localhost</userinput>
Subject: <userinput>I mastered mail

Now I can send and receive email using mail ... :)
.</userinput>
EOT</screen>

      <para>В утилите <command>mail</command> для вызова справки в любой
	момент может быть использована команда <keycap>?</keycap>,
	для получения помощи по <command>mail</command> необходимо также
	обратиться к странице справочника &man.mail.1;.</para>

      <note>
	<para>Как упоминалось выше, команда &man.mail.1; не была первоначально
	  предназначена для работы с вложениями, и поэтому их поддержка
	  довольно слабая.  Современные <acronym>MUA</acronym>,
	  такие как <application>mutt</application>, работают с вложениями
	  гораздо более уверенно.  Но если вы все же предпочитаете
	  использовать <command>mail</command>,
	  установите порт <filename
	  role="package">converters/mpack</filename>.</para>
      </note>
    </sect2>

    <sect2 id="mutt-command">
      <title>mutt</title>

      <para><application>mutt</application> это небольшая но очень
	мощная почтовая программа с отличными возможностями, в числе
	которых:</para>

      <itemizedlist>
	<listitem>
	  <para>Возможность сортировки сообщений по дискуссиям;</para>
	</listitem>

	<listitem>
	  <para>Поддержка PGP для подписи и шифрования сообщений;</para>
	</listitem>

	<listitem>
	  <para>Поддержка MIME;</para>
	</listitem>

	<listitem>
	  <para>Поддержка Maildir;</para>
	</listitem>

	<listitem>
	  <para>Широкие возможности настройки.</para>
	</listitem>
      </itemizedlist>

      <para>Все эти возможности делают
	<application>mutt</application> одним из самых лучших почтовых
	клиентов.  Обратитесь к <ulink
	url="http://www.mutt.org"></ulink> за
	дополнительной информацией по <application>mutt</application>.</para>

      <para>Стабильная версия <application>mutt</application> может быть
	установлена из порта <filename role="package">mail/mutt</filename>.
	После установки порта, <application>mutt</application> может
	быть запущен следующей командой:</para>

      <screen>&prompt.user; <userinput>mutt</userinput></screen>

      <para><application>mutt</application> автоматически прочтет содержимое
	пользовательского почтового ящика в каталоге <filename
	class="directory">/var/mail</filename> и отобразит почту,
	если она имеется в наличии.  Если почты в ящике пользователя нет,
	<application>mutt</application> будет ожидать команд от пользователя.
	В примере ниже показан <application>mutt</application> со
	списком сообщений:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/mutt1" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Для чтения почты просто выберите сообщение с помощью клавиш
	навигации и нажмите <keycap>Enter</keycap>.  Пример
	<application>mutt</application>, отображающего сообщение, показан
	ниже:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/mutt2" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Как и команда &man.mail.1;, <application>mutt</application>
	позволяет пользователям отвечать как только отправителю, так и всем
	получателям.  Для ответа только отправителю почты, используйте
	клавишу <keycap>r</keycap>.  Для группового ответа и отправителю
	сообщения и всем получателям используйте клавишу
	<keycap>g</keycap>.</para>

      <note>
	<para><application>mutt</application> использует &man.vi.1; в качестве
	  редактора для создания писем и ответа на них.  Редактор можно
	  заменить путем создания или редактирования собственного
	  <filename>.muttrc</filename> в своем домашнем каталоге и установки
	  переменной <option>editor</option>.</para>
      </note>

      <para>Для создания нового почтового сообщения нажмите
	<keycap>m</keycap>.  После введения темы
	<application>mutt</application> запустит &man.vi.1; для создания
	письма.  Как только письмо будет завершено, сохраните его и закройте
	<command>vi</command>, <application>mutt</application> продолжит
	работу, отобразив окно с сообщением, которое должно быть отправлено.
	Для отправки сообщения нажмите <keycap>y</keycap>.  Пример окна с
	сообщением показан ниже:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/mutt3" format="PNG">
	</imageobject>
      </mediaobject>

      <para><application>mutt</application> также содержит исчерпывающий
	справочник, к которому можно обратиться из большинства меню,
	нажав клавишу <keycap>?</keycap>.  Верхняя строка также показывает
	клавиатурные сокращения, которые могут быть использованы.</para>
    </sect2>

    <sect2 id="pine-command">
      <title>pine</title>

      <para><application>pine</application> предназначен для начинающих
	пользователей, но включает некоторые дополнительные
	возможности.</para>

      <warning>
	<para>В программе <application>pine</application> ранее были обнаружены некоторые уязвимости,
	  позволяющие удаленному взломщику выполнять произвольный код
	  с правами пользователя локальной системы путем отправки
	  специально подготовленного письма.  Все эти
	  <emphasis>известные</emphasis> проблемы были исправлены,
	  но код <application>pine</application> написан в очень небезопасном стиле и офицеры
	  безопасности &os; считают, что возможно наличие других
	  не обнаруженных уязвимостей.  Имейте это ввиду при установке
	  <application>pine</application>.</para>
      </warning>

      <para>Текущая версия <application>pine</application> может быть
	установлена из порта <filename role="package">mail/pine4</filename>.
	Как только порт установлен, <application>pine</application> можно
	запустить командой:</para>

      <screen>&prompt.user; <userinput>pine</userinput></screen>

      <para>При первом запуске <application>pine</application> отображает
	страницу приветствия с кратким введением, а также просьбу
	команды разработчиков <application>pine</application>
	отправить анонимное почтовое сообщение, позволяющее им
	определить количество пользователей, работающих с их почтовым
	клиентом.  Для отправки анонимного сообщения нажмите
	<keycap>Enter</keycap>, или <keycap>E</keycap> для выхода
	из из приветствия без отправки анонимного сообщения.  Пример
	приветствия показан ниже:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine1" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Затем отображается главное меню, перемещение по которому
	осуществляется с помощью клавиш навигации.  В главном меню
	находятся ссылки для составления новых писем, просмотра почтовых
	каталогов, и даже управления адресной книгой.  Ниже главного меню
	показаны клавиатурные сокращения, выполняющие
	соответствующие задачи.</para>

      <para>По умолчанию <application>pine</application> открывает каталог
	<filename class="directory">inbox</filename>.  Для просмотра списка
	сообщений нажмите <keycap>I</keycap>, или выберите
	<guimenuitem>MESSAGE INDEX</guimenuitem>, как показано ниже:</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine2" format="PNG">
	</imageobject>
      </mediaobject>

      <para>В списке показаны сообщения в текущем каталоге, они могут быть
	просмотрены с помощью клавиш навигации.  Подсвеченные сообщения
	можно прочесть нажав <keycap>Enter</keycap>.</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine3" format="PNG">
	</imageobject>
      </mediaobject>

      <para>На снимке экрана ниже показан пример письма, отображаемого
	<application>pine</application>.  Внизу экрана даны клавиатурные
	сокращения.  Например, <keycap>r</keycap> используется для
	указания <acronym>MUA</acronym> ответить на отображаемое в
	данный момент сообщение.</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine4" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Ответ на письмо в <application>pine</application> осуществляется
	с помощью редактора <application>pico</application>, который
	устанавливается по умолчанию вместе с <application>pine</application>.
	<application>pico</application> упрощает навигацию в сообщении
	гораздо проще для новых пользователей, чем &man.vi.1; или
	&man.mail.1;.  Как только ответ будет готов, сообщение можно отправить
	нажав <keycombo
	action="simul"><keycap>Ctrl</keycap><keycap>X</keycap></keycombo>.
	<application>pine</application> запросит подтверждение.</para>

      <mediaobject>
	<imageobject>
	  <imagedata fileref="mail/pine5" format="PNG">
	</imageobject>
      </mediaobject>

      <para>Программа <application>pine</application> может быть настроена
	через пункт <guimenuitem>SETUP</guimenuitem> главного меню.
	Обратитесь к странице <ulink
	url="http://www.washington.edu/pine/"></ulink>
	за дальнейшей информацией.</para>

    </sect2>
  </sect1>

  <sect1 id="mail-fetchmail">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Marc</firstname>
	  <surname>Silver</surname>
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Использование fetchmail</title>

    <indexterm>
      <primary>использование fetchmail</primary>
    </indexterm>

    <para><application>fetchmail</application> это полноценный
      <acronym>IMAP</acronym> и <acronym>POP</acronym> клиент,
      позволяющий пользователям автоматически загружать почту с
      удаленных серверов <acronym>IMAP</acronym> и <acronym>POP</acronym>
      в локальные почтовые ящики; так доступ к почтовым ящикам упрощается.
      <application>fetchmail</application> может быть установлен из
      порта <filename role="package">mail/fetchmail</filename> и
      предоставляет различные возможности, в том числе:</para>

    <itemizedlist>
      <listitem>
	<para>Поддержка протоколов <acronym>POP3</acronym>,
	  <acronym>APOP</acronym>, <acronym>KPOP</acronym>,
	  <acronym>IMAP</acronym>, <acronym>ETRN</acronym> и
	  <acronym>ODMR</acronym>.</para>
      </listitem>

      <listitem>
	<para>Возможность пересылки почты через <acronym>SMTP</acronym>,
	  что позволяет использовать функции фильтрации, перенаправления и
	  синонимов.</para>
      </listitem>

      <listitem>
	<para>Может быт запущен в режиме даемона для периодической проверки
	  поступающих сообщений.</para>
      </listitem>

      <listitem>
	<para>Может забирать почту с нескольких почтовых ящиков и рассылать
	  ее различным локальным пользователям в зависимости от
	  настроек.</para>
      </listitem>
    </itemizedlist>

    <para>Описание всех возможностей
      <application>fetchmail</application> выходит за пределы этой главы,
      за дополнительной информацией обратитесь к документации по
      <application>fetchmail</application>.  Утилита
      <application>fetchmail</application> требует наличия
      файла настройки <filename>.fetchmailrc</filename>.  Этот файл
      включает информацию о сервере, а также информацию для аутентификации.
      Поскольку этот файл содержит важную информацию, правильно будет
      сделать его доступным для чтения только владельцем с помощью
      следующей команды:</para>

    <screen>&prompt.user; <userinput>chmod 600 .fetchmailrc</userinput></screen>

    <para>В следующем примере файл <filename>.fetchmailrc</filename>
      предназначен для загрузки одного почтового ящика по протоколу
      <acronym>POP</acronym>.  Этот файл указывает
      <application>fetchmail</application> соединиться с
      <hostid role="fqdn">example.com</hostid> с именем пользователя
      <username>joesoap</username> и паролем <literal>XXX</literal>.
      В примере подразумевается, что пользователь <username>joesoap</username>
      существует также и в локальной системе.</para>

    <programlisting>poll example.com protocol pop3 username "joesoap" password "XXX"</programlisting>

    <para>В следующем примере производится подключение к нескольким
      <acronym>POP</acronym> и <acronym>IMAP</acronym> серверам,
      при необходимости почта перенаправляется другим локальным
      пользователям:</para>

    <programlisting>poll example.com proto pop3:
user "joesoap", with password "XXX", is "jsoap" here;
user "andrea", with password "XXXX";
poll example2.net proto imap:
user "john", with password "XXXXX", is "myth" here;</programlisting>

    <para>Утилита <application>fetchmail</application> может работать
      в режиме даемона с флагом <option>-d</option>, заданным с
      интервалом (в секундах), через который
      <application>fetchmail</application> должен опрашивать
      серверы, перечисленные в <filename>.fetchmailrc</filename>.
      В следующем примере <application>fetchmail</application> будет
      забирать почту каждые 60 секунд:</para>

    <screen>&prompt.user; <userinput>fetchmail -d 60</userinput></screen>

    <para>Дополнительную информацию о <application>fetchmail</application>
      можно найти на сайте <ulink
      url="http://www.catb.org/~esr/fetchmail/"></ulink>.</para>
  </sect1>

  <sect1 id="mail-procmail">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Marc</firstname>
	  <surname>Silver</surname>
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Использование procmail</title>

    <indexterm>
      <primary>использование procmail</primary>
    </indexterm>

    <para>Утилита <application>procmail</application> это невероятно
      мощное приложение, используемое для фильтрации входящей почты.
      Она позволяет пользователям определять <quote>правила</quote>,
      которые могут быть сопоставлены входящим письмам для выполнения
      определенных действий или для перенаправления почты в
      альтернативные почтовые ящики и/или на почтовые адреса.
      <application>procmail</application> может быть установлен
      с помощью порта <filename role="package">mail/procmail</filename>.
      После установки он может быть непосредственно интегрирован в
      большинство <acronym>MTA</acronym>; сверьтесь с документацией
      на ваш <acronym>MTA</acronym>.  Другой способ интеграции
      <application>procmail</application> &ndash; добавление в
      файл <filename>.forward</filename>, находящийся в домашнем
      каталоге пользователя, следующей строки:</para>

    <programlisting>"|exec /usr/local/bin/procmail || exit 75"</programlisting>

    <para>В этом разделе будут показаны основы настройки правил
      <application>procmail</application>, а также краткое описание их
      действия.  Эти и другие правила должны быть помещены в файл
      <filename>.procmailrc</filename>, который должен находиться в домашнем
      каталоге пользователя.</para>

    <para>Большую часть этих правил также можно найти на странице справочника
      &man.procmailex.5;.</para>

    <para>Перенаправление всей почты от <literal>user@example.com</literal> на
      внешний адрес <literal>goodmail@example2.com</literal>:</para>

    <programlisting>:0
* ^From.*user@example.com
! goodmail@example2.com</programlisting>

    <para>Перенаправление всей почты объемом меньше 1000 байт на внешний адрес
      <literal>goodmail@example2.com</literal>:</para>

    <programlisting>:0
* < 1000
! goodmail@example2.com</programlisting>

    <para>Перенаправление всей почты, отправляемой на
      <literal>alternate@example.com</literal>, в почтовый ящик
      <filename>alternate</filename>:</para>

    <programlisting>:0
* ^TOalternate@example.com
alternate</programlisting>

    <para>Перенаправление всей почты с <quote>Spam</quote> в
      <filename>/dev/null</filename>:</para>

    <programlisting>:0
^Subject:.*Spam
/dev/null</programlisting>

    <para>Полезный пример, обрабатывающий входящую почту со списков
      рассылки <hostid role="domainname">&os;.org</hostid> и
      помещающий каждый список в отдельный почтовый ящик.</para>

    <programlisting>:0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
	LISTNAME=${MATCH}
	:0
	* LISTNAME??^\/[^@]+
	FreeBSD-${MATCH}
}</programlisting>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
