Flatik.ru

Перейти на главную страницу

Поиск по ключевым словам:

страница 1
Управление несколькими копиями Postfix на одном хосте
Обзор
Документ содержит руководство по управлению несколькими копиями Postfix на одном хосте средствами утилиты postmulti(1).

Управление несколькими копиями Postfix на одном хосте доступно в Postfix версий 2.6 и выше.

Обратитесь к руководству по postfix-wrapper(5) за основной информацией по API менеджера копий и руководством по созданию собственного менеджера копий.
Темы, раскрытые в этом документе:
* Зачем нужны несколько копий Postfix в одной системе

* Ноль-клиент в противоспотавлении полнофункциональному

* Обзор предмета

* Components of a Postfix system

* The default Postfix instance

* Instance groups

* Multi-instance configuration parameters

* Использование утилиты postmulti(1)

* Credits

Зачем нужны несколько копий Postfix в одной системе
Postfix является почтовой системой общего назначения и может быть сконфигурирован для исполнения нескольких задач:
Приема локальной почты от системных процессов и пользователей в консоли
Приема почты из сети интернет (MX host)
Релея для отправки почты из сети предприятия
Приема почты от удаленных авторизованных пользователей
Основанной на содержимом письма фильтрации почты
Единственная копия Postfix в состоянии обеспечить исполнение большинства или всех этих задач, но сложности конфигурации, например,

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

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

но разделяет с другими общие для всех исполнимые файлы и файлы документации.
Поскольку не существует единственного подходящего для всех пути сконфигурировать систему, мы предлагаем вам самостоятельно избрать подходы,

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

как противоречащие друг другу значения опций файлов master.cf и main.cf и заставить любую их комбинацию работать без использования сложных трюков,

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

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

каждую из них для исполнения единственной задачи и скомпоновать затем из них законченную систему.
Дополнив Postfix утилитой postmulti(1) и сократив объем конфигурации каждой дополнительной копии Postfix правкой файлов master.cf и main.cf

(все остальные файлы являются разделяемыми) мы полагаем, что сделали конфигурирование законченной системы более простым, чем некогда.
Ноль-клиент в противоспотавлении полнофункциональному
Первой тривиальной формой в концепции применения нескольких копий Postfix

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

sendmail(1), используемой демонами, системными процессами, cron-заданиями и т.п.

для отсылки отчетов и предупреждений. Равно как и из командной строки от пользователей в консоли.
Эта задача может исполняться копией нуль-клиента Postfix, собирающего локальную почту и пересылающего ее на центальный хаб.
Типичный нуль-клиент обычно либо не исполняет никаких задач SMTP сервера вообще (master_service_disable = inet), либо прослушивает,

как SMTP сервер, исключительно локальный lo0 сетевой интерфейс (inet_interfaces = loopback-only).
При построении полнофункциональной Postfix системы работающей с Интернет, удаленными пользователями, закрытыми хабами и т.д. мы рекомендуем вам

возложить задачи приема локальной почты на исполняющий эту единственную функцию нуль-клиент, а все остальные задачи переложить на более специализированные копии Postfix.
Отметьте, что обычно вам приходится использовать различные установки "myhostname" при запуске нескольких копий Postfix на одной системе.

Иначе, при попытке перслать почту от копии к копии появятся сообщения "mail loops back to myself".

Нуль-клиент использует имя системы, а остальные копии Postfix свои собственные уникальные значения "myhostname".

Различные значения "myhostname" не требуются в системах, в которых копии передают друг другу почту отличным

от SMTP способом или через SMTP TCP портом, отличным от 25, что обычно для почтовых фильтров.
Обзор предмета
Прежде, чем обсудить концепцию в деталях, разберем по шагам создание гипотетического, рассматриваемого для примера, пограничного мэйл-сервера.

Он будет состоять из нуль-клиента, принимающего локальную почту, копии Postfix сервера, принимающего почту из Интернета и из SMTP фильтра,

анализирующего содержимое письма и доставляющего отфильтрованную почту получателям в "домашней" сети.
Создание копии Postfix, исполняющей роль нуль-клиента
On a border mail hub, while mail from the Internet requires a great deal of scrutiny, locally submitted messages are typically limited to mail from cron jobs and other system services. In this regard the border MTA is not different from other Unix hosts in your environment. For this reason, it will submit locally-generated email to the internal mail hub. We start the construction of the border mail server with the default instance, which will be a local-submission null client:
/etc/postfix/main.cf:

# We are mta1.example.com

# Наше имя mta1.example.com

myhostname = mta1.example.com

mydomain = example.com
# Flat user-account namespace in example.com:

# Используется плоское простантво имен

# [email protected] not [email protected]

#

myorigin = $mydomain
# Postfix 2.6+, disable inet services, specifically disable smtpd(8)

# все inet сервисы отключены, особенно SMTP

master_service_disable = inet
# No local delivery:

# Отключаем локальную доставку

mydestination =

local_transport = error:5.1.1 Mailbox unavailable

alias_database =

alias_maps =

local_recipient_maps =
# Send everything to the internal mailhub

# Пересылаем все на внутренний хаб

relayhost = [mailhub.example.com]
# Indexed table macro:

# (use "hash", ... when cdb is not available)

#

default_database_type = cdb

indexed = ${default_database_type}:${config_directory}/
# Expose origin host of mail from "root", ...

#

smtp_generic_maps = ${indexed}generic
# Send messages addressed to "root", ... to the MTA support team

#

virtual_alias_maps = ${indexed}virtual
/etc/postfix/generic:

# The smarthost supports "+" addressing (recipient_delimiter = +).

# Mail from "root" exposes the origin host, without replies

# and bounces going back to the same host.

#

# On clustered MTAs this file is typically machine-built from

# a template file. The build process expands the template into

# "mtaadmin+root=mta1"

#

root mtaadmin+root=mta1
/etc/postfix/virtual:

# Caretaker aliases:

#

root mtaadmin

postmaster root
You would typically also add a Makefile, to automatically run postmap(1) commands when source files change. This Makefile also creates a "generic" database when none exists.
/etc/postfix/Makefile:

MTAADMIN=mtaadmin
all: virtual.cdb generic.cdb
generic: Makefile

@echo Creating $@

@rm -f [email protected]

@printf '%s\t%s+root=%s\n' root $MTAADMIN `uname -n` > [email protected]

@mv [email protected] generic
%.cdb: %

postmap cdb:$<
Construct the "virtual" and "generic" databases (the latter is created by running "make"), then start and test the null-client:
# cd /etc/postfix; make

# postfix start

# sendmail -i -f root -t <

From: root

To: root

Subject: test
testing

EOF
The test message should be delivered the members of the "mtaadmin" address group (or whatever address group you choose) with the following headers:
From: [email protected]

To: [email protected]
========================================================
Использование утилиты postmulti(1)
* Инициализация менеджера копий Postfix

* Вывод списка управляемых копий Postfix

* Запуск и остановка нескольких копий Postfix в одной системе

* Исполнение команд в контексте избранной копии Postfix

* Создание новой копии Postfix

* Уничтожение копии Postfix

* Импорт уже существующих копий Postfix

* Исключение копии Postfix из числа управляемых

* Назначение копии Postfix нового имени или нового имени группы

* Активация и деактивация копии Postfix
Инициализация менеджера копий Postfix
Прежде, чем утилита postmulti(1) может быть использована первый раз, вы должны установить

multi_instance_wrapper и разрешить управление несколькими копиями в своей основной копии Postfix.
Далее вы должны добавить в конфигурацию новые или существующие копии Postfix.
Инициализация менеждера копий производится так:
# postmulti -e init
Эта команда вносит в main.cf файл основной копии Postfix следующие изменения:
# Use postmulti(1) as a postfix-wrapper(5)

# Использовать postmulti(1) в качестве postfix-wrapper(5)

#

multi_instance_wrapper = ${command_directory}/postmulti -p --
# Configure the default instance to start when in multi-instance mode

# Разрешеить основной копии Postfix запускаться из под менеджера управления копиями

#

multi_instance_enable = yes
Вы можете внести эти изменения в в main.cf файл основной копии Postfix и вручную, и используя "postconf -e".
Вывод списка управляемых копий Postfix
Список управляемых копий Postfix состоит из основной копии и остальных копий, список конфигурационных директорий

которых содержится в параметре multi_instance_directories файла main.cf основной копии Postfix.
Вы можете вывести список выбранных копий, список групп копий или список всех копий, используя уточняющие опции, следующие за опцией -l.

Опция -a предполагает, что никаких уточняющих опций за нею не следует и при ее использовании выводится список всех копий Postfix.

Смысл опции -a изменяется при использовании ее с опцией -e.
Как особый случай, предусмотрено использование конструкции "-i -", всегда обращающейся к основной копии Postfix,

независимо от наличия или остутствия у нее имени.
# postmulti -l -a

# postmulti -l -g a_group

# postmulti -l -i an_instance
Список выводится в формате "одна строка - одна копия" (в порядке запуска копий командой "postfix start"):
имя грцппа активна конфигурационная директория
- - yes /etc/postfix

mta-out mta yes /etc/postfix/mta-out

mta-in mta yes /etc/postfix-mta-in

msa-out msa yes /etc/postfix-msa-out

msa-in msa yes /etc/postfix-msa-in

test - no /etc/postfix-test
Первая строка листинга содержит заголовки колонок и не является частью вывода команды.

Если у копии нет имени или она не принадлежит никакой именованной группе, то этот

факт отражается выводом "-" в колонке соответствующего имени.
Используя опцию -i вы всегда можете использовать в качестве параметра полный путь к конфигурационной директории

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

способом обращения к ним.
Основная копия Postfix может быть выбрана использованием "-i -" независимо от того, является основная копия Postfix поименованной или нет.
Для вывода списка копий в обратном порядке используйте опцию -R.
Запуск и остановка нескольких копий Postfix в одной системе
Для того, чтобы запустить, остановить, перегрузить и т.п. несколько копий Postfix

(сконфигурированных описанным выше образом) просто используйте postfix(1) точно так же,

как в системе с единственной копией Postfix. Встроенная система управления копиями

полностью изолирует все инициализирующие скрипты от своего содержимого!
Опция -p утилиты postmulti(1) включает режим совместимости с postfix(1). В этом случае все следующие

за ней аргументы полностью совпадают с такими же от postfix(1), но команды применяются ко всем копиям

Postfix или ко всем активным копиям Postfix, в зависмости от контекста применения.
Как описано выше, этот ключ требуется для использования postmulti(1) в качестве multi_instance_wrapper.
Если вам необходимо указать избранные копии Postfix по имени, имени группы или выполнить произвольную команду

(не просто start/stop) в контексте избранной копии Postfix (определяемой переменной среды MAIL_CONFIG) или

избранной группы копий Postfix, вы можете использовать postmulti(1), специально для того предназначенную, напрямую.
Исполнение команд в контексте избранной копии Postfix
Утилита postmulti(1) может быть использована администратором для запуска различных команд

в контексте одной или нескольких копий Postfix.

Например, для запуска и останова группы копий Postfix:
# postmulti -g mygroup -p start

# postmulti -g mygroup -p flush

# postmulti -g mygroup -p reload

# postmulti -g mygroup -p status

# postmulti -g mygroup -p stop

# postmulti -g mygroup -p upgrade-configuration
Опция -p исполняет здесь роль команды postfix, но с некоторыми отличиями от ее поведения, зависящими от конкретного аргумента.

Например, при использовании аргумента "start" вместо того, чтобы оказаться просто пропущенными, конфигурации неактивных копий,

входящих в группу, будут проверены (postfix check).
Заданная команда будет исполнена для каждой входящей в группу копии с передачей в переменую среды MAIL_CONFIG

пути к конфигурационной директории соответствующей копии Postfix.
Утилита postmulti(1) может исполнять и отличающиеся от postfix(1) команды.

С использованием опции -x postmulti может исполнить произвольную команду

для всех копий Postfix в системе, для группы копий или для единственной копии.

При этом состояние параметра multi_instance_enable игнорируется, команда будет

безусловно исполнена в отношении любой копии, заданной через опции -a, -g и -i.
Помимо передачи в переменную среды MAIL_CONFIG пути к конфигурационной директории соответствующей копии Postfix,

для каждой копии экспортируются следующие параметры командной среды:
command_directory=$command_directory

daemon_directory=$daemon_directory

config_directory=$config_directory

queue_directory=$queue_directory

data_directory=$data_directory

multi_instance_name=$multi_instance_name

multi_instance_group=$multi_instance_group

multi_instance_enable=$multi_instance_enable
Содержимое config_directory, конечно же, совпадает с содержимым MAIL_CONFIG что является, в некотором смысле,

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

multi_instance_enable и выход через exit, когда она установлена в "no".
Возможность исполнять адресованные избранным копиям Postfix команды открывает перед администратором системы новые возможности.
Например, отсылать почту командой sendmail(1) через избранную копию Postfix, игнорируя общесистемные установки:
$ postmulti -i postfix-myinst -x sendmail -bv [email protected]
Отображать отличающиеся от установленных по умолчанию значения установок main.cf всех копий Postfix.

Для этого используется скрипт оболочки, многократно исполняемый для каждой копии Postfix:
$ postmulti -x sh -c 'echo "-- $MAIL_CONFIG"; postconf -n'
Поместить всю почту активных копий избранной группы в состояние "on hold":
$ postmulti -g group_name -x sh -c 'test $multi_instance_enable = yes && postsuper -h ALL'
Отобразить первые 10 доменов очереди deferred queue каждой копии Postfix:
# postmulti -x sh -c 'echo "-- $MAIL_CONFIG"; qshape deferred | head -12'
Создание новой копии Postfix
Утилита postmulti(1) может быть использована для создания новой копии Postfix.

Новые копии создаются с правами локального приема почты и неактивными "inet" службами.

Это делается через задание следующих отличающихся от существующих по умолчанию значений в файле main.cf:
authorized_submit_users =

master_service_disable = inet
Приведенные выше значения позволяют безопасно и немедленно запустить новую копию Postfix не опасаясь конфликта с уже запущенными копиями.

Помимо прочего, они не позволяют новой копии вообще принимать почту, оставляя администратору время для

своего окончательного переконфигурирования, после чего администратор может удалить обе или любую из них.
Утилита postmulti(1) предлагает жесткий порядок организации кофигурационных и рабочих директорий для вновь создаваемых копий.
Если в основной копии Postfix они выглядят так:
config_directory = /conf-path/postfix

queue_directory = /queue-path/postfix

data_directory = /data-path/postfix
То в новой копии, имеющей имя "postfix-myinst" они будут выглядеть следующим образом:
multi_instance_enable = no

multi_instance_name = postfix-myinst

config_directory = /conf-path/postfix-myinst

queue_directory = /queue-path/postfix-myinst

data_directory = /data-path/postfix-myinst
Вы можете изменить любые из этих предлагаемых по умолчанию путей к рабочим директориям,

но если вы не предполагаете размещать их на нескольких различных файловых системах, вам

лучше придерживаться этой предлагаемой по умолчанию стратегии именования директорий,

поддерживающей несколько копий Postfix внутри одной системы в единообразной, предсказуемой форме.
Обращаясь в дальнейшем к этой новой копии Postfix вы можете адресоваться к ней либо по имени "postfix-myinst",

либо через полный путь к ее конфигурационной директории.
Чтобы создать новую копию Postfix, используйте опцию -e create:
# postmulti -I postfix-myinst -e create
Если новая копия Postfix должна принадлежать к группе связанных копий, логически объединенных в единый сервис,

при создании копии вы можете задать имя группы, которой она должна принадлежать:
# postmulti -I postfix-myinst -G mygroup -e create
Переназначить предлагаемые по умолчанию имена рабочих и конфигурационной директории вы можете из командной строки:
# postmulti [-I postfix-myinst] [-G mygroup] -e create \

"config_directory = /path/to/config_directory" \

"queue_directory = /path/to/queue_directory" \

"data_directory = /path/to/data_directory"
Обратите внимание на использованный выше регистр опций -I и -G. В верхнем регистре они используются для задания новых имени копии и имени группы

в то время как в нижнем регистре опции -i и -g используются для выбора уже существующих имени копии и имени группы
По умолчанию, конфигурационные директории вновь созданных или добавленных в систему копий добавляются

в список копий multi_instance_directories, размещенный в main.cf основной копии Postfix.
Вы можете использовать опции "-i" или "-g", или "-a" для манипуляций со списком копий

в параметре multi_instance_directories, находящемся в файле main.cf основной копии Postfix.
При использовании опции -I с указанием имени вновь создаваемой копии (когда создается копия с именем, отличным от "-"),

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

они будут созданы автоматически, на основе имени новой копии по уже упомянутым правилам именования.

В противном случае требуется указание всех трех этих параметров.
Вы должны явно задать значение "syslog_name" в файле main.cf вновь созданной "безымянной" копии Postfix для того,

чтобы избежать конфликтов в лог файлах почты при использовании нескольких копий Postfix.
Уничтожение копии Postfix
Если существующая в системе копия Postfix вам больше не нужна, вы можете уничтожить ее командами:
# postmulti -i postfix-myinst -p stop

# postmulti -i postfix-myinst -e disable

# postmulti -i postfix-myinst -e destroy
Копия должна быть остановлена, деактивирована и не иметь в очереди недоставленных сообщений.
Без проблем таким путем удаляются только свежесозданные копии Postfix, которые никогда не использовались.

В случае, если копия уже побывала в эксплуатации и ее файлы очередей или данных не пусты,

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

Вы можете завершить удаление копии вручную, удалив с диска все ненужные остатки данных, связанных с этой копией, в ее рабочих директориях.
Импорт уже существующих копий Postfix
Если в системе уже есть копия Postfix еще не управляемая средствами postmulti(1), вы можете "импортировать" ее в список управляемых postmulti(1) копий.

Если ваша уже существующая копия Postfix использует принятую по умолчанию схему именования рабочих директорий, просто укажите ее имя в командной

строке следующей конструкции (при необходимости поправьте main.cf этой копии, снабдив его параметром multi_instance_name, содержащим с соответсвующее имя копии):
# postmulti -I postfix-myinst [-G mygroup] -e import
В ином случае вы должны указать в командной строке полный путь к конфигурационной директории импортируемой копии:
# postmulti [-I postfix-myinst] [-G mygroup] -e import \

"config_directory = /path/of/config_directory"
Импортировав копию, вы можете включить ее в группу копий.

Точно так же, как при использовании опции create вы можете управлять местом копии в списке копий при помощи опций "-i", "-g" или "-a".
Импортированнная копия Postfix по умолчанию остается неактивированной если только она уже не сконфигурирована быть активной ранее.

Если копия полностью сконфигурирована и готова к запуску, не забудьте активировать ее перед запуском.

Если остальные активированные копии Postfix уже запущены, новая копия, вновь созданная или импортированная, должна быть запущена индивидуально.
Чтобы получить список всех запущенных копий, дайте команду:
# postfix status
Исключение копии Postfix из числа управляемых
Вы можете "исключить" существующую копию Postfix из списка управляемых копий.

Эта операция не уничтожит исключаемую копию, а просто превратит ее в отдельную,

самостотельную и незарегистрированную для управления средствами postmulti(1).

postmulti(1) откажется "исключать" копию, которая не остановлена и не деактивирована.
# postmulti -i postfix-myinst -p stop

# postmulti -i postfix-myinst -e disable

# postmulti -i postfix-myinst -e deport
Назначение копии Postfix нового имени или нового имени группы
You can assign a new name or new group to a managed instance. Use "-" as the new value to assign the instance to no group or make it nameless. To specify a nameless secondary instance use the configuration directory path instead of the old name:
# postmulti -i postfix-old [-I postfix-new] [-G newgroup] -e assign
Активация и деактивация копии Postfix
Вы можете активировать и деактивировать управляемые postmulti(1) копии Postfix.

Неактивные копии Postfix не охватываются командами start и stop.

Подробнее см. postfix-wrapper(5)
# postmulti -i postfix-myinst -e enable

# postmulti -i postfix-myinst -e disable
Credits
Wietse Venema created Postfix, designed and implemented the multi-instance wrapper framework and provided design feedback that made the postmulti(1) utility much more general and useful than originally envisioned.
The postmulti(1) utility was developed by Victor Duchovni of Morgan Stanley, who also wrote the initial version of this document.

Руководство по управлению несколькими копиями Postfix на одном хосте средствами утилиты postmulti(1)

Охватываются командами start и stop

182.42kb.

30 09 2014
1 стр.


Руководство пользователя (краткое описание) г. Зеленоград 2002 Содержание Назначение программ

Настройка локального пульта для работы с несколькими приборами по проводной линии связ

69.07kb.

01 10 2014
1 стр.


Наталия Байкалова

Тренинги по управлению, переговорам, формированию команды, коммуникациям, управлению временем и др

46.02kb.

08 10 2014
1 стр.


Постановление №14 от 04. 02. 2009г. О районной комиссии по противодействию злоупотреблению наркотическими средствами Администрация мр "Сергокалинский район" постановляет

Утвердить районную комиссию по противодействию злоупотреблению наркотическими средствами в следующем составе

11.87kb.

15 10 2014
1 стр.


Как да създадем автоматичен отговор във Postfix чрез Autoresponse

Той ви позволява да създавате съобщения за автоматичен отговор за имейл акаунти от шел или чрез пощата до определен имейл

28.06kb.

17 12 2014
1 стр.


Трумен Капоте. Воспоминания об одном рождестве

Представьте себе раннее утро в конце ноября. По-зимнему холодное утро двадцать с лишним лет тому назад. А теперь вообразите себе кухню в одном из

221.99kb.

12 10 2014
1 стр.


Принцесса-людоед

В одном царстве, в одном государстве жила-была принцесса. И звали ее… Ну, допустим, Розамунда Лорнетская. На самом деле совершенно не важно, как ее звали, потому что главным достои

61.08kb.

08 10 2014
1 стр.


Руководство по эксплуатации (рис. 0) Основные узлы и механизмы кофемашины контейнер для отходов

Данное руководство по эксплуатации является неотъемлемой частью кофемашины. Необходимо внимательно изучить данное руководство, поскольку в нем содержится вся информация о правильно

354.82kb.

25 12 2014
1 стр.