Руководство FreeBSD
Пред. | Глава 22. Электронная почта | След.

# 22.3. Настройка sendmail

Предоставил Christopher Shumway.

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

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

Имя файла | Назначение
--- | ---
`/etc/mail/access` | Файл базы данных доступа sendmail
`/etc/mail/aliases` | Синонимы почтовых ящиков
`/etc/mail/local-host-names` | Список хостов, для которых sendmail принимает почту
`/etc/mail/mailer.conf` | Настройки почтовой программы
`/etc/mail/mailertable` | Таблица доставки почтовой программы
`/etc/mail/sendmail.cf` | Основной файл настройки sendmail
`/etc/mail/virtusertable` | Таблицы виртуальных пользователей и доменов

## 22.3.1. `/etc/mail/access`

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

Пример 22-1. Настройка базы данных доступа sendmail

    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

В этом примере приведены пять записей. К отправителям, чей адрес соответствует записи в левой части таблицы, применяется правило записанное в правой части таблицы. В первых двух примерах код ошибки будет передан процедуре обработке ошибок sendmail. В этом случае на удаленном хосте будет получено соответствующее сообщение. В следующем примере почта отбрасывается почта от определенного хоста, `another.source.of.spam`. В четвертом примере разрешается прием почты от хоста `okay.cyberspammer.com`, имя которого более точно совпадает с этой записью, чем с `cyberspammer.com` в примере выше. При более точном совпадении правила перезаписываются. В последнем примере разрешается пересылка почты от хостов с IP адресами, начинающимися с `128.32`. Эти хосты смогут отправлять почту через этот почтовый сервер для других почтовых серверов.

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

## 22.3.2. `/etc/mail/aliases`

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

Пример 22-2. Mail Aliases

    root: localuser
    ftp-bugs: joe,eric,paul
    bit.bucket:  /dev/null
    procmail: "|/usr/local/bin/procmail"

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

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

## 22.3.3. `/etc/mail/local-host-names`

В этом файле находится список имен хостов, принимаемых программой sendmail(8) в качестве локальных. Поместите в этот файл любые домены или хосты, для которых sendmail должен принимать почту. Например, если этот почтовый сервер должен принимать почту для домена `example.com` и хоста `mail.example.com`, его файл `local-host-names` может выглядеть примерно так:

    example.com
    mail.example.com

После обновления этого файла необходимо перезапустить sendmail(8), чтобы он смог перечитать изменения.

## 22.3.4. `/etc/mail/sendmail.cf`

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

Основной файл настройки sendmail может быть собран из макроса m4(1), определяющего возможности и поведение sendmail. Подробнее этот процесс описан в файле `/usr/src/contrib/sendmail/cf/README`.

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

## 22.3.5. `/etc/mail/virtusertable`

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

Пример 22-3. Пример таблицы виртуального домена

    root@example.com                root
    postmaster@example.com          postmaster@noc.example.net
    @example.com                    joe

В примере выше мы видим сопоставление адресов для домена `example.com`. Почта обрабатывается по первому совпадению с записью в этом файле. Первая запись сопоставляет адрес root@example.com локальному почтовому ящику `root`. Вторая запись сопоставляет postmaster@example.com локальному почтовому ящику `postmaster` на хосте `noc.example.net`. Наконец, до этого момента адрес в домене `example.com` не совпал ни с одним из предыдущих, будет применено последнее сопоставление, в которому соответствует всякое другое почтовое сообщение, отправленное на любой адрес в `example.com`. Это сообщение будет доставлено в локальный почтовый ящик `joe`.

Пред. | Начало | След.
Использование электронной почты | Уровень выше | Установка другой почтовой программы

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.