Установка Postfix из исходных кодов

Материал из Wiki Open book
Перейти к: навигация, поиск

Для начала нужно cкачать с одного из «зеркал» официального сайта программы http://www.postfix.org/download.html архив с исходными кодами, например при помощи программы wget.

Я воспользовался последней (на момент написания данной статьи) версией программы Postfix: postfix-2.4.3.

wget -c <источник>postfix-2.4.3.tar.gz

После распаковки архива видно, что в каталоге отсутствует программа configure, значит установка будет немного отличаться от стандартной ( ./configure , make && make install ).

$ tar -xzf postfix-2.4.3.tar.gz
$ cd postfix-2.4.3
$ ls

AAAREADME              libexec/                         RELEASE_NOTES-1.0
auxiliary/             LICENSE                          RELEASE_NOTES-1.1
bin/                   makedefs                         RELEASE_NOTES-2.0
COMPATIBILITY          Makefile                         RELEASE_NOTES-2.1
conf/                  Makefile.in                      RELEASE_NOTES-2.2
COPYRIGHT              Makefile.init                    RELEASE_NOTES-2.3
examples/              man/                             src/
HISTORY                mantools/                        TLS_ACKNOWLEDGEMENTS
html/                  pflogsumm-conn-delays-dsn-patch  TLS_CHANGES
implementation-notes/  PORTING                          TLS_LICENSE
include/               postfix-install                  TLS_TODO
INSTALL@               proto/                           US_PATENT_6321267
IPv6-ChangeLog         README_FILES/
lib/                   RELEASE_NOTES

$

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


Для сборки и установки будет необходимо выполнить команды make и make install.


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


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

$
make makefiles CC="gcc" OPT="-O2 -march=i686 -mtune=i686" \
>  CCARGS="-DHAS_PCRE -DUSE_TLS -DUSE_SASL_AUTH -I/usr/include/sasl" \
>  AUXLIBS="-L/usr/lib -lpcre -ldl -lcrypt -lpthread -lssl -lcrypto -lsasl2"
$

В этой команде я указал:

  • CC="gcc" — использовать компилятор gcc;
  • OPT="-O2 -march=i686 -mtune=i686" — параметры оптимизации компилятора gcc для системной архитектуры;
  • CCARGS="-DHAS_PCRE -DUSE_TLS -DUSE_SASL_AUTH -I/usr/include/sasl" и AUXLIBS="-L/usr/lib -lpcre -ldl -lcrypt -lpthread -lssl -lcrypto -lsasl2" — поддержка в Postfix дополнительных возможностей (здесь TLS и SASL_AUTH). Информацию о том, какие параметры нужно указывать для включения той или иной возможности можно получить из файлов документации.


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

make -f Makefile.init makefiles


После успешного выполнения команды make, необходимо выполнить make install.

В ходе работы будет вызван командный сценарий postfix-install, в котором в интерактивном режиме можно указать некоторые параметры, необходимые для завершения установки.

Внимание! Вполне возможно, что у Вас уже работает программа Sendmail и Вы не хотите удалять её из системы. В Postfix есть исполняемые файл и файлы руковдств, аналогичные файлам программы Sendmail. Это исполняемые файлы sendmail, mailq, newaliases и файлы руководств mailq.1, newaliases.1, aliases.5. Если в ходе выполнения сценария postfix-install Вы примете параметры по умолчанию, файлы программы Sendmail будут заменены! Чтобы этого не произошло, можно либо указать нестандартную директорию установки, например, /opt/postfix и впоследствии прописать соответствующие пути в переменные окружения, либо явным образом в ходе работы сценария переименовать «конфликтные» файлы. Для файлов руководств также необходимо указать директорию, отличную от той, в которой находятся файлы руководств Sendmail


Кстати, в документации по установке рекомендуется переместить файлы MTA Sendmail перед установкой Postfix:

$
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
mv /usr/bin/newaliases /usr/bin/newaliases.old
mv /usr/bin/mailq /usr/bin/mailq.old
chmod 755 /usr/sbin/sendmail.old /usr/bin/newaliases.old \
>    /usr/bin/mailq.old
$

Но мне этот способ не понравился, потому что, во–первых, таким образом я нарушу структуру пакета Sendmail, во-вторых, придётся править скрипт инициализации Sendmail.


Я буду устанавливать программу в директорию /opt/postfix.

Внимание! При установке в нестандартную директорию необходимо перед выполнением команды make надо описать эти директории в файле Makefile
$
make makefiles CC="gcc" OPT="-O2 -march=i686 -mtune=i686" \
>  CCARGS='-DHAS_PCRE -DUSE_TLS -DUSE_SASL_AUTH -I/usr/include/sasl \
   -DDEF_COMMAND_DIR=\"/opt/postfix/usr/sbin\" -DDEF_CONFIG_DIR=\"/opt/postfix/etc/postfix\" \
   -DDEF_DAEMON_DIR=\"/opt/postfix/usr/libexec/postfix\" -DDEF_MAILQ_PATH=\"/opt/postfix/usr/bin/mailq.postfix\" \
   -DDEF_MANPAGE_DIR=\"/opt/postfix/usr/local/man\" -DDEF_NEWALIAS_PATH=\"/opt/postfix/usr/bin/newaliases.postfix\" \
   -DDEF_QUEUE_DIR=\"/opt/postfix/var/spool/postfix\" -DDEF_SENDMAIL_PATH=\"/opt/postfix/usr/sbin/sendmail.postfix\"' \
>  AUXLIBS="-L/usr/lib -lpcre -ldl -lcrypt -lpthread -lssl -lcrypto -lsasl2"
$

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

Параметр                Описание                                                Значение по умолчанию

DEF_COMMAND_DIR         директория с програмамми (mailq, newaliases)         	/usr/sbin 
DEF_CONFIG_DIR          конфигурационные файлы                                  /etc/postfix
DEF_DAEMON_DIR          «демоны»                                                /usr/libexec/postfix
DEF_MAILQ_PATH          путь к программе mailq                                  /usr/bin/mailq
DEF_HTML_DIR            директория с документацией в формате html               no           
DEF_MANPAGE_DIR         директория с файлами руководств                         /usr/local/man
DEF_NEWALIAS_PATH       путь к программе newaliases                            	/usr/bin/newaliases
DEF_QUEUE_DIR           директория, где будут находится очереди                 /var/spool/postfix
DEF_README_DIR          директория с документацией README                       no
DEF_SENDMAIL_PATH       путь к программе sendmail                               /usr/sbin/sendmail

Я хоть и устанавливал программу в директорию /opt/postfix, всё равно переименовал файлы аналогичные входящим в состав MTA Sendmail — /usr/sbin/sendmail.postfix, /usr/bin/newaliases.postfix и /usr/bin/mailq.postfix для того, чтобы когда я опишу пути в переменных окружения, не было конфликтов.


Выполнение команды make install:

$ make install
----

/bin/sh postfix-install

    Warning: if you use this script to install Postfix locally,
    this script will replace existing sendmail or Postfix programs.
    Make backups if you want to be able to recover.

    Before installing files, this script prompts you for some definitions.
    Most definitions will be remembered, so you have to specify them
    only once. All definitions should have a reasonable default value.

Please specify the prefix for installed file names. Specify this ONLY
if you are building ready-to-install packages for distribution to other
machines.

# Корневой каталог файловой системы используемой для установки
# Все дальнейшие директории, которые будут созданы в ходе установки программы
# кроме каталога, определяемого параметром tempdir будут находится в этом корневом каталоге.
# Поэтому, в большинстве случаев, на дальнейшие вопросы о назначении
# установки будет достаточно нажать клавишу ENTER.
# КОРНЕВЫИ КАТАЛОГОМ СЧИТАЕТСЯ ТОТ, КОТОРЫЙ УКАЗАН В ФАЙЛЕ Makefile
install_root: [/] 

Please specify a directory for scratch files while installing Postfix. You
must have write permission in this directory.

# Сюда будут помещаться временные файлы создаваемые в процессе инсталляции
tempdir: [/usr/src/postfix-2.4.3] /tmp/postfix-2.4.3

Please specify the final destination directory for installed Postfix
configuration files.

# Сюда будут помещены конфигурационные файлы программы
config_directory: [/opt/postfix/etc/postfix]

Please specify the final destination directory for installed Postfix
daemon programs. This directory should not be in the command search path
of any users.

# Сюда будут помещены программы Postfix.
# эта директория не должна находится в переменной среды окружения $PATH пользователей.
daemon_directory: [/opt/postfix/usr/libexec/postfix]

Please specify the final destination directory for installed Postfix
administrative commands. This directory should be in the command search
path of adminstrative users.

# Сюда будут помещены программы, необходимые для выполнения 
# административных задач.
# Эта директория должна находится в переменной среды окружения $PATH
# только у пользователей с административными полномочиями.
command_directory: [/opt/postfix/usr/sbin]

Please specify the final destination directory for Postfix queues.

# Директория, где будут находятся почтовые очереди.
queue_directory: [/opt/postfix/var/spool/postfix]

Please specify the final destination pathname for the installed Postfix
sendmail command. This is the Sendmail-compatible mail posting interface.

# Путь к программе sendmail, совместимой с MTA sendmail.
sendmail_path: [/opt/postfix/usr/sbin/sendmail.postfix]

Please specify the final destination pathname for the installed Postfix
newaliases command. This is the Sendmail-compatible command to build
alias databases for the Postfix local delivery agent.

# Путь к программе newaliases, совместимой с MTA sendmail.
newaliases_path: [/opt/postfix/usr/bin/newaliases.postfix]

Please specify the final destination pathname for the installed Postfix
mailq command. This is the Sendmail-compatible mail queue listing command.

# Путь к программе mailq, совместимой с MTA sendmail.
mailq_path: [/opt/postfix/usr/bin/mailq.postfix]

Please specify the owner of the Postfix queue. Specify an account with
numerical user ID and group ID values that are not used by any other
accounts on the system.

# Указание пользователя, от имени которого будет работать Postfix.
mail_owner: [postfix]

Please specify the group for mail submission and for queue management
commands. Specify a group name with a numerical group ID that is
not shared with other accounts, not even with the Postfix mail_owner
account. You can no longer specify "no" here.

# Указание группы, от имени которой будут работать программы  обработки
# почтовых очередей
setgid_group: [postdrop]

Please specify the destination directory for the Postfix HTML
files. Specify "no" if you do not want to install these files.

# Директория, в которою будут помещены файлы с документацией в
# формате html.
html_directory: [no]

Please specify the destination directory for the Postfix on-line manual
pages. You can no longer specify "no" here.

# Директория, в которою будут помещены файлы руководства.
manpage_directory: [/opt/postfix/usr/local/man]

Please specify the destination directory for the Postfix README
files. Specify "no" if you do not want to install these files.

# Директория, в которою будут помещены файлы из каталога
# README_FILES.
readme_directory: [no]

----

Warning: you still need to edit myorigin/mydestination/mynetworks
    parameter settings in /opt/postfix/etc/postfix/main.cf.

    See also http://www.postfix.org/STANDARD_CONFIGURATION_README.html
    for information about dialup sites or about sites inside a firewalled
    network.

    BTW: Check your /etc/aliases file and be sure to set up aliases
    that send mail for root and postmaster to a real person, then run
    /opt/postfix/usr/bin/newaliases.postfix.
$


Я также переименовал файлы руководств, после установки программы:

$ pwd
/opt/postfix/usr/local
$
mv man/man1/mailq.1 man/man1/mailq.postfix.1
mv man/man1/newaliases.1 man/man1/newaliases.postfix.1
mv man/man1/sendmail.1 man/man1/sendmail.postfix.1
mv man/man5/aliases.5 man/man5/aliases.postfix.5
$


Далее необходимо создать группы postfix, postdrop и пользователя postfix в системе:

$ groupadd postfix

$ groupadd postdrop

$ useradd -g postfix -d /opt/postfix/var/spool/postfix -c "The postfix MTA" -s /bin/false postfix


В завершении установки нужно добавить пути к программам Postfix в переменные окружения.

Для этого в директории /etc/profile.d я создал исполняемый скрипт postfix.sh следующего содержания:

#!/bin/bash
#
if [ $UID = "0" ]; then
   export PATH=$PATH:/opt/postfix/usr/sbin
fi

export PATH=$PATH:/opt/postfix/usr/bin
export MANPATH=$MANPATH:/opt/postfix/usr/local/man


Ещё раз отмечу, в данном способе я решил вообще не трогать пакет с программой Sendmail, поэтому все конфликтные файлы ( см. выше ) были переименованы. Это вызвало ряд неудобств, так как нельзя выполнить следующие команды:

$ newaliases.postfix        #  переименованный файл newaliases
$ mailq.postfix             # переименованный файл mailq

$ man newaliases.postfix    # обращается к переименованному файлу руководств newaliases.1
$ man mailq.postfix         # обращается к переименованному файлу руководств mailq.1

Файлы newaliases и mailq являются символьными ссылками к программе sendmail ( sendmail.postfix ) которые запускают её с параметрами "sendmail -I" и "sendmail -bp" соответственно. Поскольку программа sendmail ( sendmail.postfix ) понятия не имеет что такое newaliases.postfix и mailq.postfix, то команды работать не будут.


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

Я создал командные сценарии newaliases.sh и mailq.sh следующего содержания:

$ pwd
/opt/postfix

$ cat newaliases.sh
#!/bin/bash
#
/opt/postfix/usr/sbin/sendmail.postfix -I


$ cat mailq.sh
#!/bin/bash
#
/opt/postfix/usr/sbin/sendmail.postfix -bp

$

и переделал символьные ссылки newaliases.postfix, mailq.postfix на эти файлы:

$ ln -sf /opt/postfix/newaliases.sh /opt/postfix/usr/bin/newaliases.postfix
$ ln -sf /opt/postfix/mailq.sh /opt/postfix/usr/bin/mailq.postfix


Для того, чтобы можно было обратиться к файлам руководств, я исправил файлы /opt/postfix/usr/local/man/man1/newaliases.postfix.1 и /opt/postfix/usr/local/man/man1/mailq.postfix.1, заменив в них единственную строку .so man1/sendmail.1 на .so man1/sendmail.postfix.1


Установка закончена.


Назад

Инструменты
    
Личные инструменты