/ 中存储网

编译安装Postfix邮件服务器

2014-07-13 20:14:15 来源:中存储网
Postfix的安装方式与其它的软件有些不同,其做为悠久的邮件服务器,它支持众多的特性,包括与第三方软件的交互整合功能。这里对其的编译、安装过程进行了一个简单总结。

---------------
Installation of Postfix

Adding Users and Groups--添加用户及其组

Before you compile the program, you need to create users and groups that will be expected to be in place during the installation. Add the users and groups with the following commands issued by the root user:

groupadd -g 32 postfix &&
groupadd -g 33 postdrop &&
useradd -c "Postfix Daemon User" -d /var/spool/postfix -g postfix -s /bin/false -u 32 postfix &&
chown -v postfix:postfix /var/mail

Configuring the Build--编译配置
Postfix的编译安装与其它通用的软件安装不同,它有自己的一套规则。

The Postfix source tree does not contain a configure script, rather the makefile in the top-level directory contains a makefiles target that regenerates all the other makefiles in the build tree. If you wish to use additional software such as a database back-end for virtual users, or TLS/SSL authentication, you will need to regenerate the makefiles using one or more of the appropriate CCARGS and AUXLIBS settings listed below.

Cyrus-SASL
To use Cyrus-SASL with Postfix, use the following arguments:
CCARGS='-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl'
AUXLIBS='-lsasl2'

OpenLDAP
To use OpenLDAP with Postfix, use the following arguments:
CCARGS='-DHAS_LDAP'
AUXLIBS='-lldap -llber'

Sqlite
To use Sqlite with Postfix, use the following arguments:
CCARGS='-DHAS_SQLITE'
AUXLIBS='-lsqlite3 -lpthread'

MySQL
To use MySQL with Postfix, use the following arguments:
CCARGS='-DHAS_MYSQL -I/usr/include/mysql'
AUXLIBS='-lmysqlclient -lz -lm'

PostgreSQL
To use PostgreSQL with Postfix, use the following arguments:
CCARGS='-DHAS_PGSQL -I/usr/include/postgresql'
AUXLIBS='-lpq -lz -lm'

CDB/TinyCDB
To use CDB or TinyCDB with Postfix, use the following arguments:
CCARGS='-DHAS_CDB'
AUXLIBS='</path/to/CDB>/libcdb.a'

StartTLS Authentication
To use OpenSSL with Postfix, use the following arguments:
CCARGS='-DUSE_TLS -I/usr/include/openssl/'

AUXLIBS='-lssl -lcrypto'

具体的编译参数和选项选项:
1.AUXLIBS
2.CC
3.CCARGS  
4.DEBUG
5.OPT

参数:-I ,-D, -L, -R, -r, -l。各个参数的说明如下:
-I 指明某一包的库文件所在的地方

-D The -D option provides a way to define macros at the time you compile Postfix. Add-on packages for Postfix require that you define a particular macro to tell Postfix to include it when building. For example, if you want to include support for MySQL, you define the HAS_MYSQL macro:CCARGS='-DHAS_MYSQL'

-L 加入对某一包的额外库的支持。如:AUXLIBS='-L/usr/local/lib'

-l 和-L一块儿使用,具体到某一库。如:AUXLIBS='-L/usr/local/lib -lmysqlclient'

-R -r
The linker uses an argument to include directories in a runtime search path for dynamic libraries. The argument differs depending on your linker and platform. The GNU linker (Linux, FreeBSD) uses -rpath, as does IRIX. Solaris, on the other hand uses -R, and HP-UX uses +b. Consult the manpage for your linker, ld(1), to see which argument you should use to set the runtime library search path.

如:Using the SSL library as an example, if your libssl.so file is located in /usr/local/lib and you are building Postfix on FreeBSD or another system that uses rpath, define AUXLIBS as follows:
AUXLIBS='-L/usr/local/lib -rpath/usr/local/lib -lssl'

下面给出一个例子:可以将它保存成shell,如:install.sh文件

#make tidy
# Specify all of our options and supporting libraries
make makefiles
CCARGS='-DUSE_SASL_AUTH -DHAS_SSL -DHAS_MYSQL -DHAS_LDAP
-I/usr/local/include/sasl -I/usr/local/ssl/include
-I/usr/local/include/mysql -I/usr/local/include'

AUXLIBS='-L/usr/local/lib -L/usr/local/ssl/lib
-L/usr/local/lib/mysql -L/usr/local/lib
-lsasl2 -lcrypto -lssl -lmysqlclient -lz -lm -lldap -llber
-rpath /usr/local/lib/mysql -rpath /usr/local/lib
-rpath /usr/local/ssl/lib'

To build Postfix, type:
$ sh build.sh
$ make

Installing Postfix--安装

If you have Cyrus SASL and OpenSSL installed, install Postfix by running the following commands:
make CCARGS="-DNO_NIS -DUSE_TLS -I/usr/include/openssl/ -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl"
AUXLIBS="-lssl -lcrypto -lsasl2"                             
makefiles &&
make

This package does not come with a useful test suite.

Now, as the root user:
sh postfix-install -non-interactive
   daemon_directory=/usr/lib/postfix
   manpage_directory=/usr/share/man
   html_directory=/usr/share/doc/postfix-2.10.0/html
readme_directory=/usr/share/doc/postfix-2.10.0/readme

Command Explanations--指令解析

make makefiles: This command rebuilds the makefiles throughout the source tree to use the options contained in the CCARGS and AUXLIBS variables.

-DNO_NIS: This option disables building Network Information Service/Yellow Pages support. The RPC implementation in Glibc (on which NIS/YP depends) is deprecated.

对于使用'-DNO_'这样的选项是为了在默认的选项中禁止掉一些组件,像nis、Berkeley DB、ipv6、等这些没有使用的功能块。

sh postfix-install -non-interactive: This keeps the install script from asking any questions, thereby accepting default destination directories in all but the few cases. If the html_directory and readme_directory options are not set then the documentation will not be installed.

---------------
Configuring Postfix--配置

Config Files
/etc/aliases, /etc/postfix/main.cf, and /etc/postfix/master.cf

Configuration Information

Create (or append to an existing) /etc/aliases with the following command. Change <LOGIN> for your non-root login identity so mail addressed to root can be forwarded to you. As the root user:

cat >> /etc/aliases << "EOF"
# Begin /etc/aliases

MAILER-DAEMON: postmaster
postmaster: root

root: <LOGIN>
# End /etc/aliases
EOF

To protect an existing /etc/aliases file, the above command appends these aliases to it if it exists. This file should be checked and duplicate aliases removed, if present.

Note
The /etc/postfix/main.cf and /etc/postfix/master.cf files must be personalized for your system. The main.cf file needs your fully qualified hostname. You will find that main.cf is self documenting, so load it into your editor to make the changes you need for your situation.

Note
Postfix can also be set up to run in a chroot jail. See the file in the source examples/chroot-setup/LINUX2 for details.

If you have an existing configuration, you can run the postfix utility to add any necessary definitions to your existing files. As the root user:
/usr/sbin/postfix upgrade-configuration

Before starting Postfix, you should check that your configuration and file permissions will work properly. Run the following commands as the root user to check and start your Postfix server:
/usr/sbin/postfix check &&
/usr/sbin/postfix start

Boot Script--启动脚本

To automate the running of Postfix at startup, install the /etc/rc.d/init.d/postfix init script included in the blfs-bootscripts-20130721 package.

make install-postfix

---------------
Contents--所产生的文件

Installed Programs:
mailq, newaliases, postaliases, postcat, postconf, postdrop, postfix, postkick, postlock, postlog, postmap, postmulti, postqueue, postsuper and sendmail

Installed Libraries:
None

Installed Directories:
/etc/postfix, /usr/lib/postfix, /usr/share/doc/postfix-2.10.0, /var/lib/postfix and /var/spool/postfix

Short Descriptions--简短描述

mailq--A symlink to sendmail.

newaliases--A symlink to sendmail.

postaliases--is a utility for Postfix alias database maintenance

postcat--Prints the contents of files from the Postfix queue in human readable format.

postconf--Displays or changes the value of Postfix configuration parameters.

postdrop--Creates a file in the maildrop directory and copies its standard input to the file.

postfix--is the Postfix control program.

postkick--Sends requests to the specified service over a local transport channel.

postlock--Locks a mail folder for exclusive use, and executes commands passed to it.

postlog--A Postfix-compatible logging interface for use in, for example, shell scripts.

postmap--Creates or queries one or more Postfix lookup tables, or updates an existing one.

postmulti--is the Postfix multi-instance manager. It allows a system administrator to manage multiple Postfix instances on a single host.

postqueue--The Postfix user interface for queue management.

postsuper--The Postfix user interface for superuser queue management.

sendmail--is the Postfix to Sendmail compatibility interface.

---------------