В данном разделе описано, как организовать обмен электронной почтой с Интернет и внутри локальной сети — для этого служит сервер электронной почты postfix. Здесь не описывается, как создавать и читать почтовые сообщения. Однако даже если у вас отдельный компьютер, подключённый к Интернет через обычное модемное соединение, вам стоит ознакомиться с данным разделом.
Возможно, вас удивит то, что сервер передачи электронной почты
postfix рекомендуется к установке в любой конфигурации
ALT Linux. Это объясняется тем, что в UNIX
-подобных системах
возможность отправлять почту с помощью простого вызова команды из
командой оболочки практически обязательна. Некоторые программы
(например, сервис crond) пользуются этим
для отправки сообщений пользователям. Пересылкой всей электронной
почты, проходящей через машину, занимается MTA
(Mail Transport Agent), в нашем случае это postfix. Хотя
многие почтовые программы способны отправлять сообщения на удалённый
SMTP-сервер, имеет смысл поручить и эту задачу
системному серверу электронной почты, чтобы не было необходимости
следить за отсылкой отправленных писем. Существуют и другие популярные
MTA (например qmail,
exim), но они по разным причинам не
вошли в данную версию
дистрибутива. Sendmail, ветеран
Интернета, проигрывает postfix по ряду параметров, в том
числе в безопасности, к тому же он неоправданно сложен в
настройке. В данном руководстве мы ограничимся рекомендациями по
настройке postfix для нескольких типичных ситуаций. Более
полные сведения можно получить из превосходной документации на
английском языке, которая входит в состав пакета postfix
, документация в формате HTML размещена в отдельном пакете — postfix-html.
Обратите внимание, что по умолчанию после установки postfix не работает в режиме SMTP-сервера. Для того, чтобы принимать сообщения по протоколу SMTP или ESMTP, как извне так и локально, необходимо переключить службу postfix в режим работы server командой control postfix server. По умолчанию после установки служба postfix находится в режиме local, в котором postfix не принимает соединений из сети, ограничиваясь приёмом локальных соединений посредством сокетов семейства UNIX (UNIX-domain socket). Для большинства рабочих станций работа в режиме SMTP-сервера не требуется (и нежелательна с точки зрения безопасности), а в качестве SMTP-сервера должен использоваться какой-то внешний узел сети.
Базовый RPM-пакет для установки сервера postfix в ALT Linux
носит, как нетрудно догадаться, имя
postfix
.
Также есть несколько дополнительных пакетов, расширяющих
возможности postfix
. Так, один из
таких пакетов, postfix-tls
,
реализует расширения TLS/SASL; подробнее
об этом см. далее.
Файлы настройки postfix располагаются в каталоге /etc/postfix
. Основные параметры
определяются в файле main.cf
; в частности,
все параметры, о которых говорится далее в этой главе,
устанавливаются именно в этом файле, если это не оговаривается специально.
В изначальном виде этот файл содержит конфигурацию, позволяющую серверу работать в пределах машины, а также развёрнутые комментарии с примерами. Если вы изменили конфигурацию при работающем postfix, её нужно активизировать командой service postfix reload.
Имя хоста и домена, которые считаются локальными при обработке
email-адресов, необходимы для функционирования почтового
сервера. Если эти имена для postfix должны быть отличны от
того, что выдаёт команда hostname, установите
их с помощью параметров myhostname
и
mydomain
.
Существует несколько проблем, возникающих при попытке отправки
исходящей почты с машин, которые не являются полноценными узлами
интернет, например, в системах с модемным и другими непостоянными
соединениями не всегда возможно немедленно отправить сообщения
удалённым адресатам по SMTP и их приходится
держать в очереди до тех пор, пока соединение не будет
установлено. Для этого используется параметр
defer_transports
, например:
defer_transports = smtp
Доставка активизируется командой /usr/sbin/sendmail -q, которая в ALT Linux исполняется автоматически при установке PPP-соединения.
Будучи полноценным MTA, postfix способен
находить серверы, обслуживающие получателей сообщений, при помощи
DNS. Тем не менее, для dialup-машин
непосредственная доставка сообщений нежелательна, поскольку
время соединения ограничено. К тому же это излюбленная тактика
распространителей спама, поэтому многие серверы сверяют
IP-адрес отправителя с базой известных
адресов провайдерских пулов, после чего сообщения с таких
адресов отвергаются. Поэтому целесообразно доверить доставку
исходящей почты SMTP-серверу провайдера. Этим
управляет параметр relayhost
,
например:
relayhost = [smtp.provider.net]
Рабочие станции в локальной сети или машины в провайдерской сети,
отделённой от Интернета с помощью межсетевого
экрана/NAT, должны переправлять исходящую
почту на почтовый сервер, обслуживающий данную сеть. Для этого
также используется параметр relayhost
,
описанный выше. Если сервер задан IP-адресом,
можно отключить использование DNS для
ускорения работы:
disable_dns_lookups = yes
Для того, чтобы в доменной части адреса отправителя фигурировал
домен сети, а не имя конкретной машины, установите параметр
myorigin
в имя домена:
myorigin = $mydomain
Если почтовые ящики пользователей монтируются с сервера по
NFS, postfix на клиентских машинах
служит лишь для отправки почты. В такой конфигурации следует
отключить агенты local
и
smtp
в файле
/etc/postfix/master.cf
.
Домены, для которых сервер получает почту, отличные от значения
mydomain
и не сконфигурированные как
виртуальные домены postfix (см. ниже), нужно перечислить с
помощью параметра mydestination
, либо в
дополнительном файле, на который ссылается этот
параметр. Аналогичным образом параметр
mynetworks
описывает блоки
IP-адресов, которые считаются внутренними и с
которых разрешён приём исходящих сообщений. Не следует
записывать в mynetworks
блоки адресов, не
принадлежащих сети, которую обслуживает сервер, поскольку этим
могут воспользоваться распространители спама.
Для SMTP-аутентификации внешних
пользователей, желающих отправлять сообщения через данный сервер,
можно использовать поддержку авторизации TLS/SASL.
Для использования этой возможности необходимо установить пакет
postfix-tls
; возможный недостаток этого расширения — включение исходного текста, в меньшей
степени проверенного в плане безопасности. Настройка
аутентификации TLS/SASL описана в файлах
TSL_README
и SASL_README
в документации postfix.
Преобразование глобальных почтовых адресов в локальные
адреса назначения устанавливается с помощью таблиц типа virtual
(см.
virtual(5)):
virtual_alias_maps = cdb:/etc/postfix/virtual
Пример содержимого /etc/postfix/virtual
:
domain1.ru # Домен в стиле postfix (текст здесь игнорируется)
name1@domain1.ru user1
name2@domain2.ru user2@otherbox
@domain2.ru user3
После редактирования не забудьте активизировать изменения командой service postfix reload.
Если каким-либо пользователям сети почта должна доставляться по
SMTP на их рабочие станции (это предполагает,
что на их машинах работают MTA), подставляйте
в доменной части их адресов имена машин в таблицах
virtual
либо aliases
(см. ниже).
Имена локальных адресатов либо совпадают с именами пользователей
системы, либо подставляются из таблицы aliases
(см.
aliases(5)):
alias_maps = cdb:/etc/postfix/aliases alias_database = cdb:/etc/postfix/aliases
При установке postfix «с нуля» в этой таблице
создаётся алиас на имя root
для доставки всей
корреспонденции, предназначенной администратору и поступающей на
другие системные адреса, на имя реального пользователя, который
осуществляет функции администратора. Изначально им становится
первый зарегистрированный в системе реальный
пользователь. Таблица алиасов отличается от остальных таблиц,
используемых postfix; имена слева, которые являются ключами
для поиска, отделяются от значений справа двоеточиями. Адресаты
справа перечисляются через запятую и могут быть адресами,
командами (обозначаются символом |
в начале
правой части; сообщение подаётся на стандартный поток ввода
команды) и именами файлов:
John.Smith: john chief: chief@bosscomputer trio: stock, hausen, walkman robot: | /usr/bin/robot --process-mail filebox: /dir/file
Рабочий образ таблицы строится с помощью команды
newaliases, а также при актуализации всех
изменений посредством команды service postfix reload.
При отправке сообщения postfix генерирует адрес отправителя из
имени пользователя и собственного домена (или значения
myorigin
). Даже если почтовый клиент
выставил заголовок From:
, этот адрес попадает
в служебную информацию сообщения и может быть использован
получателем, что не всегда желательно. Преобразование адресов
отправителей к глобальным адресам можно задать в таблице типа
canonical
(см.
canonical(5)):
sender_canonical_maps = cdb:/etc/postfix/sender_canonical
Аналогичная таблица recipient_canonical
и
соответствующий параметр
recipient_canonical_maps
могут быть
использована для преобразования адресов назначения. Для
актуализации изменений таблиц используйте команду
service postfix reload.
Противодействие спаму (массовым рассылкам непрошеной корреспонденции) — отдельная большая тема, которую невозможно полностью раскрыть в этом руководстве; здесь даны лишь несколько практических советов применительно к конфигурации postfix. По умолчанию сервер сконфигурирован так, что отвергает попытки переслать сообщения извне на другие удалённые серверы. Со спамом, адресованным локальным получателям, дело обстоит сложнее. Хорошо зарекомендовали себя служба MAPS RBL и ей подобные, организованные по принципу «чёрного списка» IP-адресов; чтобы задействовать эти сервисы, предварительно ознакомившись с условиями их использования, занесите имена доменов, работающих по принципу RBL, в конфигурацию:
smtpd_client_restrictions = permit_mynetworks, reject_maps_rbl maps_rbl_domains = relays.ordb.org, blackholes.mail-abuse.org
В некоторых случаях требуется адресная работа с отдельными
нарушителями почтового этикета. Адресная работа заключается в
блокировании SMTP-соединений с их адресов,
сетей либо доменов. Для этого предусмотрены таблицы типа
access
(см.
access(5)):
smtpd_client_restrictions = permit_mynetworks, cdb:/etc/postfix/access
Пример таблицы:
1.2.3.4 550 No more canned meat, please 1.2.5 REJECT goodguy.generallybad.com OK .generallybad.com REJECT
Как и с другими таблицами, после редактирования приведите кары в действие командой service postfix reload.
По умолчанию размер файла почтового ящика при локальной доставке
ограничен 51200000
байтами. Это ограничение
можно изменить с помощью параметра
mailbox_size_limit
. Установка параметра в
0
снимает ограничение.
После того, как postfix настроен и запущен как сервис с
предсказуемым именем postfix, в настройках
почтовых клиентов можно указывать имя или адрес машины (например,
localhost
)
как SMTP-сервер. Программа
fetchmail работает в связке с postfix,
опрашивая внешние почтовые ящики пользователей по протоколам
POP3 или IMAP и передавая
полученные сообщения системному MTA для
локальной доставки. Лог-файлы postfix находятся в каталоге
/var/log/mail
.