Если вам есть что добавить или вы хотите что-то исправить - милости просим, настройка Postfix - это очень обширная тема.

Если вы решили настроить почту на своём сервере, то Postfix - определённо ваш выбор. Подробное описание всех возможностей Postfix, вы можете найти в официальном руководстве. В данном руководстве указан базовый пример настройки почтового сервера. Итак, перейдем к установке.

Установка Postfix

Установить Postfix можно командой:

apt-get install postfix

При конфигурировании пакета вам зададут несколько вопросов, внимание стоит обратить лишь на предлагаемые профили первоначальной настройки. Вне зависимости от того, для чего вы хотите использовать Postfix, всегда выбирайте Internet Site. Это необходимо сделать для того, чтобы Postfix сгенерировал файл main.cf и сразу начал работу. В противном случае, Вам необходимо будет конфигурировать этот файл самостоятельно!

Немного общих слов о настройках

Итак, Postfix установлен. Все настройки этого почтового сервера хранятся в /etc/postfix. В этом каталоге Вас в первую очередь должен интересовать основной файл конфигурации, называющийся main.cf.

Теперь настала пора определиться с тем, какую функцию будет выполнять ваш почтовый сервер. Собственно, для каждого из обслуживаемых доменов тут есть два варианта:

  1. Либо Postfix будет использоваться только для пересылки почты на другой хост.
  2. Либо Postfix будет сохранять почту локально, возможно и не всю, передавая часть на другой хост.

Третьего собственно не дано. В настройках Postfix есть три основных группы параметров:

  1. Параметры локальной доставки.
  2. Параметры пересылки.
  3. Параметры «виртуальных доменов».

Как «правильный» почтовый сервер, Postfix занимается обработкой почты для указанных в конфигурации доменов. Так вот, каждый домен может обрабатываться ровно одним из указанных способов, то есть либо как конечный домен для почты, либо как домен для пересылки, либо как виртуальный домен.

Стандартная локальная доставка основана на системе авторизации и учёта пользователей вашей системы, что значительно уменьшает её гибкость, поэтому смысла её использовать обычно нет. Вместо этого следует использовать механизм «виртуальных доменов» для доставки почты в локальные почтовые ящики. Однако рассмотреть параметры, отвечающие за локальную доставку, всё же надо, ибо на них много что завязано.

Итак, откройте файл /etc/postfix/main.cf в вашем любимом текстовом редакторе. Записи этого файла имеют вид

параметр = значение

Комментарии можно добавлять, поставив в начало строки символ #. Кстати, сразу хочу сказать, что параметры, имеющие несколько значений, можно записывать одним из следующих способов:

параметр = значение1 значение2 значение3
параметр = значение1, значение2, значение3
параметр =
 значение1
 значение2
 значение3
параметр =
 значение1,
 значение2,
 значение3

В третьем и четвёртом случае не забудьте про пробел в начале каждой строчки с параметром. В данном примере, рассмотрим конфигурирование по способу №3.

Кстати, после того, как вы задали значение какого-либо параметра, вы можете его использовать для задания значений другим параметрам. Вам просто нужно указать имя параметра с символом $ вначале в том месте, куда вы хотите подставить его значение. Например вот так:

mydomain = example.com
mydestination = mail.$mydomain
Я по возможности буду стараться указывать явные значения для как можно меньшего количества параметров, дабы уменьшить возможность ошибки и упростить изменение параметров в дальнейшем.

Теперь немного конкретики.

Основные параметры Postfix

Прежде всего вам надо настроить следующие параметры, отвечающие за домен и имя сервера:

# Имя вашего хоста. По умолчанию берется из системы, но лучше всегда указывать явно
myhostname = mail.example.com

# Домен вашего сервера. По умолчанию выделяется из имени хоста отбрасыванием первой части, поэтому вручную указывать обычно не нужно
#mydomain = example.com

# Домен, с которого отправляется локальная почта. Автоматически дописывается при необходимости к исходящему адресу
myorigin = $mydomain

# Домены, для которых данный сервер является конечной точкой доставки почты.
# Обычно лучше почтовые домены обслуживать через механизм virtual, поэтому в этом параметре
# чаще всего стоит лишь указать localhost и имя хоста, так, на всякий случай,
# можно вообще оставить значение пустым.
mydestination =
 localhost
 $myhostname

# Мы хотим вообще запретить стандартную локальную доставку, поэтому нужно указать пустой список локальных получателей
# Для локальной доставки почты мы будем использовать виртуальные домены
local_recipient_maps =

Теперь можно немного похимичить с общими параметрами сервера:

# Сетевые интерфейсы, на которые принимает почту Postfix. В большинстве случаев all - самое то
inet_interfaces = all

# Протоколы, можно указать так же ipv4 или ipv6. В современном мире поддерживать ipv6 необходимо.
inet_protocols = all

# Доверенные внутренние сети, из которых мы будем принимать практически все соединения.
mynetworks =
 127.0.0.0/8
 [::ffff:127.0.0.0]/104
 [::1]/128
 192.168.0.0/24

Ну и наконец, если у вашего провайдера есть релей, через который вы хотите пересылать исходящую почту, то его можно указать в параметре relayhost:

# Релей для исходящей почты
relayhost = smtp.provider.net
# Отменяем запросы к DNS для выяснения хоста назначение для исходящей почты.
# Мы ведь всё пересылаем на релей, так что опрашивать DNS нам не нужно.
disable_dns_lookups = yes

Кстати, что такое и зачем нужны релеи - стоит почитать в интернете.

Карты данных

FIXME

Локальная доставка

Как я уже говорил, для организации локальной доставки мы будем использовать не стандартный механизм Postfix, доставшийся в наследство от Sendmail, а механизм виртуальных доменов. Это позволит нам не зависеть от списка локальных пользователей вашего сервера и добавлять ящики даже для пользователей, не имеющих учётных записей на сервере. Да и вообще, конфигурировать виртуальные домены гораздо проще локальных, плюс есть много очень мощных возможностей, доступных только для виртуальных доменов.

FIXME

Создание псевдонимов для ящиков

FIXME

Пересылка почты

FIXME

Транспорты

FIXME

Безопасность и защита от спама

Спам - это огромная проблема современного интернета. Поэтому очень важно максимально правильно настроить почтовый сервер в контексте противодействия спаму. Основные моменты расписаны в отдельной статье, посвящённой основам работы SMTP протокола передачи корреспонденции в сети:

Кроме того, всегда указывайте в конфигурационном файле Postfix следующие параметры:

# Запретить ETRN команду
smtpd_etrn_restrictions = reject

# Запретить VRFY команду
disable_vrfy_command = yes

# Требовать наличие EHLO (HELO) команды
smtpd_helo_required = yes

Без них ваш сервер будет сам помогать злоумышленникам в рассылке спама, что, надо надеяться, не является вашей целью.

Один из популярных методов фильтрации спама - грейлистинг, можно реализовать с помощью программы postgrey, которой посвящена отдельная небольшая статья:

Также существует огромное количество других сторонних продуктов, способных интегрироваться с Postfix и фильтровать спам. Список большинства из них можно найти на официальном сайте Postfix:

Шифрование и аутентификация

FIXME

Примеры использования

С помощью Postfix можно легко предоставить пользователям вашего сайта почтовые адреса, привязанные к их профилям. Этому посвящена отдельная статья: