Базова конфігурація postfix

Базова конфігурація Postf ix

У Postfix кілька сотень конфігураційних параметрів, що встановлюються в файлі main.cf. На щастя, всі параметри мають осмислені значення за замовчуванням. У більшості випадків Вам доведеться поставити всього два або три параметра перед тим, як Ви зможете почати "грати" з поштовою системою. Тут короткий вступ в синтаксис:

Файли Postfix

Подальший текст має на увазі, що Ви вже встановили Postfix, самостійно скомпілліровав його з вихідного коду (як описано в файлі INSTALL), або встановивши з готових бінарників.

Цей документ описує базову конфігурацію Postfix. Інформація про те, як налаштовувати Postfix для роботи в специфічних умовах, як то: на поштовому вузлі, за файрволлом, на dial-up клієнта може бути знайдена у файлі STANDARD_CONFIGURATION_README. Але не слід переходити по посиланню, поки Ви не опанували матеріал, наданий нижче.

В першу чергу нам Цікаво параметри, що визначають таку нормативну інформацію та роль машини в мережі.

Яке ім'я домену використовувати в минає поштою

Для яких доменів приймати пошту

Від яких клієнтів пересилати (relay) листи

Куди пересилати (relay) листи

Метод доставки: прямий або не прямий

Багато інших конфігураційні параметри успадковують свої значення у вищевказаних.

Наступний цікавий параметр контролюється кількість пошти, яка відсилається локальному postmaster-у:

Про які проблеми повідомляти postmaster-у

Процеси Postfix-а - це демони, що працюють у фоновому режимі. Вони реєструють інформацію про проблеми і нормальної активності в системі syslog. Тут кілька моментів, які слід врахувати:

Що ви повинні знати про журнал (logging) Postfix-а

Якщо на Вашу машину покладено особливі вимоги безпеки, то Ви, ймовірно, побажаєте, щоб Postfix працював в chroot-середовищі (від CHange ROOT - середовище зі зміненим коренем файлової системи).

Запуск демонів Postfix в chroot-оточенні

Якщо Ви запускаєте Postfix на віртуальному мережевому інтерфейсі, або на Вашій машині функціонують інші поштові сервера (mailers) на віртуальних інтерфейсів, то Вам також слід звернути увагу на наступні параметри:

Моє ім'я хоста (hostname)

Моє ім'я домену (domain name)

За замовчуванням конфігураційні файли Postfix розташовуються в / etc / postfix (у FreeBSD - в / usr / local / etc / postfix - прим. Перекл.). Два найважливіших файлу - це main.cf і master.cf. Ці файли повинні належати root-у. Видача будь-якому іншому користувачеві дозволів на запис в main.cf і master.cf (або в їх батьківські папки) означає видачу йому повноважень суперкористувача.

У /etc/postfix/main.cf Вам потрібно встановити значення ряду конфігураційних параметрів. Ці параметри нагадують змінні оболонки (shell), але є дві важливі відмінності. Перше: Postfix не знає про лапках (quotes) в розумінні оболонки UNIX.

Ви привласнюєте значення конфігураційному параметру таким чином:
/etc/postfix/main.cf:
parameter = value

і використовуєте значення параметра, додаючи символ "$" перед його ім'ям:
/etc/postfix/main.cf:
other_parameter = $ parameter

Ви можете використовувати $ параметр ($ parameter) перед тим, як привласните йому значення (це друга основна відмінність від змінних оболонки UNIX). Конфігураційний мову Postfix використовує ледачу обробку (lazy evaluation) і не дивиться на значення параметрів, поки вони не знадобляться під час роботи (runtime).

Якщо Ви внесли зміни в файли main.cf або master.cf, виконайте команду
# Postfix reload

Це потрібно робити від імені root-а, щоб працюючий Postfix "підхопив" зміни конфігурації:
Яке ім'я домену використовувати в минає поштою

Параметр myorigin вказує ім'я домену, яке використовується в пошті, що відправляється з цієї машини. За замовчуванням, використовується ім'я локальної машини - $ myhostname. Значення myhostname за замовчуванням - це ім'я хоста. Якщо Postfix працює не на дуже маленькому сайті, то Ви, ймовірно, захочете поставити параметру myorigin значення $ mydomain, яке за замовчуванням містить доменну частину повного імені машини.

Приклади (вкажіть лише один варіант з наступних):
/etc/postfix/main.cf:
myorigin = $ myhostname (за замовчуванням: слати листи від "user @ $ myhostname")
myorigin = $ mydomain (можливо, краще: "user @ $ mydomain")
Для яких доменів приймати пошту

Ви можете вказати один і більше доменів, "/ ім'я / файлу" і / або таблиці пошуку "тип: таблиця (type: table)" (такі, як hash. Btree. Nis. Ldap. Або mysql :), розділені пробілами і / або комами. "/ Ім'я / файлу" замінюється вмістом файла; "Тип: таблиця (type: table)" виробляє запит до бази даних, просто перевіряючи наявність домена, результат пошуку ігнорується.

ВАЖЛИВО: Якщо Ваш хост є поштовим сервером для всього домену, Вам слід також включити $ mydomain в mydestination.

Приклад 1: значення за замовчуванням.
/etc/postfix/main.cf:
mydestination = $ myhostname localhost. $ mydomain localhost

Приклад 2: поштовий сервер для всього домену.
/etc/postfix/main.cf:
mydestination = $ myhostname localhost. $ mydomain localhost $ mydomain

Приклад 3: хост з декількома записами DNS A.
/etc/postfix/main.cf:
mydestination = $ myhostname localhost. $ mydomain localhost
www. $ mydomain ftp. $ mydomain

Попередження: щоб уникнути зациклення доставки пошти (mail delivery loops), Вам слід вказати всі імена машини, включаючи $ myhostname і localhost. $ Mydomain.
Від яких клієнтів пересилати (relay) листи

ВАЖЛИВО: якщо Ваша машина підключена до глобальної мережі (wide area network), то настройки параметра mynetworks, за замовчуванням, можуть бути небезпечними.

Ви можете вказати мережі, яким довіряєте, в файлі main.cf або надати Postfix-у можливість зробити цю роботу. За замовчуванням, Postfix робить роботу за Вас. Результат залежить від значення параметра mynetworks_style.

Вкажіть "mynetworks_style = host", якщо Postfix повинен пересилати пошту тільки від локального хоста.

Вкажіть "mynetworks_style = subnet" (за замовчуванням), якщо Postfix повинен пересилати пошту від SMTP клієнтів з IP підмереж, до яких належить локальна машина. На Linux-е це працює коректно тільки для інтерфейсів, сконфигурированних командою "ifconfig".

Вкажіть "mynetworks_style = class", якщо Postfix повинен пересилати пошту від SMTP клієнтів, які перебувають в одній і тій же IP мережі класу A / B / C з локальною машиною. Не варто налаштовувати Postfix таким чином при роботі на машині з dialup з'єднанням, так як Postfix буде "довіряти" всієї мережі Вашого провайдера. Замість цього явно вкажіть список mynetworks, як описано нижче.

В якості альтернативи, Ви можете вказати список mynetworks вручну, що змусить Postfix ігнорувати параметр mynetworks_style. Щоб вказати список довірених мереж, вкажіть мережеві блоки в форматі CIDR (мережа / маска), наприклад:
/etc/postfix/main.cf:
mynetworks = 168.100.189.0/28, 127.0.0.0/8

Ви також можете вказати абсолютний шлях до файлу зі списком довірених мереж замість безпосереднього перерахування їх у файлі main.cf.
Куди пересилати (relay) листи

За замовчуванням, Postfix намагається посилати пошту в Internet безпосередньо. В залежності від оточення, в якому функціонує Ваш поштовий сервер, це може бути неможливо або небажано. Наприклад, Ваша машина може бути відключена від Internet-а в неробочий час, вона може бути закрита файрволлом, Ваш провайдер може забороняти пересилку пошти в Internet безпосередньо. У таких випадках Вам необхідно налаштувати Postfix на пересилку листів через інший поштовий сервер (relay host).

Приклади (вкажіть тільки один варіант з наступних):
/etc/postfix/main.cf:
relayhost = (за замовчуванням: посилати в Internet безпосередньо)
relayhost = $ mydomain (пересилати через локальний поштовий сервер)
relayhost = [mail. $ mydomain] (пересилати через локальний поштовий сервер)
relayhost = [mail.isp.tld] (пересилати через поштовий сервер провайдера)

Варіант, укладений у квадратні дужки [], змушує Postfix не робити пошук записів DNS MX. Не турбуйтеся, якщо Ви не розумієте, що це означає (або почитайте про DNS, або забийте на настройку MTA - ваше життя стане спокійніше - прім.перев.). Просто переконайтеся в тому, що ім'я хоста пересилання (relay host), отримане у провайдера, Ви вказали в дужках [].

У файлі STANDARD_CONFIGURATION_README Ви можете знайти більше прикладів і підказок для конфігурації Postfix "за файрволлом" і / або в dial-up мережі.
Про які проблеми повідомляти postmaster-у

Виконайте команду "newaliases" після зміни файлу алиасов. Ваш файл алиасов може розташовуватися в відмінному, ніж / etc / aliases, місці. Використовуйте команду "postconf alias_maps", щоб знайти його.

Postfix повідомляє про проблеми псевдоніму postmaster-а. Можливо, ви захочете обмежити спектр неприємностей, про які Вас інформують. Механізм оповіщення postmaster-а конфігурується. За замовчуванням, Вам буде повідомлено тільки про серйозні (ресурси, програмне забезпечення) проблемах:

Налаштування за замовчуванням:
/etc/postfix/main.cf:
notify_classes = resource, software

Деякі поштові сервера підключені до Internet через NAT (Network Adress Translator) або проксі-сервер (proxy). Це означає, що системи в Інтернет відкривають з'єднання з проксі або NAT, а не безпосередньо з'єднуються з поштовим сервером. Проксі або NAT, в свою чергу, з'єднується з цільовим поштовим сервером, але Postfix про це не знає.

Процеси Postfix-а - це демони, що працюють у фоновому режимі. Вони реєструють інформацію про проблеми і нормальної активності в системі syslog. Процес syslogd сортує повідомлення по типу і важливості і додає їх у файли журналу (logfiles). Типи реєстрованих подій, рівні серйозності і імена журнальних файлів зазвичай вказуються у файлі /etc/syslog.conf. Як мінімум Вам необхідно щось на зразок цього:
/etc/syslog.conf:
mail.err / dev / console
mail.debug / var / log / maillog

Після зміни файлу syslog.conf відправте сигнал "HUP" процесу syslogd.

ВАЖЛИВО: багато реалізації syslogd не створюють самостійно журнальні файли, Ви повинні створити необхідні файли вручну перед (пере) запуском syslogd.

ВАЖЛИВО: на Linux-е Вам слід вказати символ "-" перед ім'ям файлу, тобто - / var / log / maillog, інакше процес syslogd буде споживати більше ресурсів, ніж Postfix.

Проблем буде небагато, але гарним вибором запуск кожної вночі (перед ротацією log-файлів):
# Postfix check
# egrep # '(Reject | warning | error | fatal | panic): #' / some / log / file

Перший рядок (postfix check) змушує Postfix доповісти про некоректні власників / дозволах файлів.

Другий рядок здійснює пошук звітів про проблеми в поштовій системі, а також повідомляє, наскільки ефективно працює пересилання пошти та блокування непотрібної (junk) кореспонденції. Це операція може породити досить об'ємний висновок інформації, тому може знадобитися додаткова обробка, щоб виключити зайве.

Файл DEBUG_README описує значення рівня "warning" і т.п. в журналах Postfix.
Запуск демонів Postfix в chroot-оточенні

Демони Postfix-а можуть бути налаштовані (за допомогою файлу master.cf) для запуску в chroot-оточенні. Процеси працюють з фіксованими низькими привілеями, їх доступ до файлової системи обмежений директоріями черг Postfix-a (/ var / spool / postfix). Це створює серйозний бар'єр проти вторгнень. Бар'єр не є "абсолютним" (chroot-оточення обмежує лише доступ до файлової системи), але кожен елемент захисту корисний.

За винятком демонів Postfix, які доставляють пошту локально, кожен процес Postfix може працювати в chroot-середовищі.

За замовчуванням, файл /etc/postfix/master.cf вказує Postfix не запускати процеси в chroot-оточенні. Щоб запустити демони Postfix в chroot-середовищі, редагуйте /etc/postfix/master.cf, слідуючи інструкціям в файлі. Коли закінчите, виконайте команду "postfix reload", щоб зміни вступили в силу.

Ви повинні пам'ятати, що демони в chroot-оточенні визначають всі шляхи щодо директорії черг Postfix (/ var / spool / postfix). Для успішної роботи chroot-середовища більшість UNIX систем вимагають від Вас перенесення в chroot деяких файлів або пристроїв. В директорії examples / chroot-setup дистрибутива вихідного коду є ряд скриптів, які допоможуть налаштувати chroot-оточення Postfix на різних операційних системах.

На додаток, Вам практично в будь-якому випадку знадобиться налаштувати syslogd, щоб він слухав сокет (socket) усередині директорії черг Postfix. Приклади опцій командного рядка для syslogd, які дозволяють домогтися цього в деяких системах:

FreeBSD: syslogd -l / var / spool / postfix / var / run / log

Linux, OpenBSD: syslogd -a / var / spool / postfix / dev / log
Моє ім'я хоста (hostname)

Параметр myhostname вказує повне доменне ім'я машини (fully-qualified domain name - FQDN), на якій функціонує Postfix. $ Myhostname присутня в багатьох інших конфігураційних параметрах Postfix, як значення за замовчуванням.

За замовчуванням, myhostname встановлюється в ім'я локальної машини. Якщо ім'я Вашої машини не вказано в повній доменної формі (FQDN), або Ви запускаєте postfix на віртуальному інтерфейсі, Вам необхідно вказати повне доменне ім'я (FQDN), яке має використовувати поштова система.

Альтернативно, якщо Ви вкажете значення mydomain в файлі main.cf, то Postfix використовує це значення, щоб згенерувати повне доменне ім'я машини (FQDN) для параметра myhostname.

Приклади (вкажіть лише один варіант з наступних):
/etc/postfix/main.cf:
myhostname = host.local.domain (ім'я машини не є FQDN)
myhostname = host.virtual.domain (віртуальний інтерфейс)
myhostname = virtual.domain (віртуальний інтерфейс)
Моє ім'я домену (domain name)

Параметр mydomain вказує батьківський домен $ myhostname. За замовчуванням, він отримує своє значення відрізання першої частини значення $ myhostname (якщо тільки результат не виявиться доменом самого верхнього рівня).

І навпаки, якщо Ви вкажете значення mydomain в main.cf, то Postfix буде використовувати його, щоб згенерувати повне доменне ім'я машини (FQDN) для параметра myhostname.

За замовчуванням, Postfix слухає на всіх активних інтерфейсів. Якщо Ви запускаєте поштові сервера на віртуальних інтерфейсів, Вам необхідно вказати, на яких інтерфейси чекати з'єднань.

ВАЖЛИВО: Якщо Ви запускаєте поштовий сервер на віртуальних інтерфейсів, то повинні вказати точні значення inet_interfaces для MTA (Mail Transfer Agent - агент поштової пересилки), який приймає пошту для локальної машини: цей MTA ніколи не повинен слухати віртуальні інтерфейси, інакше в разі його падіння відбудеться зациклення пошти.

Приклад: настройки за замовчуванням.
/etc/postfix/main.cf:
inet_interfaces = all

Приклад: хост з одним або більше поштовим сервером. Для кожного примірника Postfix вкажіть лише один варіант з наступних:
/etc/postfix/main.cf:
inet_interfaces = virtual.host.tld (віртуальний Postfix)
inet_interfaces = $ myhostname localhost. (Невіртуальний Postfix)

Примітка: ви повинні зупинити і запустити Postfix після зміни цього параметра.