linux(CentOS6.5)之postfix服务器编译安装

时间:2015-12-28 06:46:42   收藏:0   阅读:1351

基础知识:

  手动编译Postfix时使用的环境变量,变量值中含有空格符或者shell特殊字符,整个变量值必须放在双引号中。

AUXLIBS

指出位于标准位置以外的函数库,使用此变量标出函数库的路径;

CC

指出需要使用的特定编译器,Postfix默认使用gcc编译器,如果不想使用,可以使用此变量指出想要使用的编译器路径;

CCARGS

提供额外选项给编译器,编译器支持特殊选项,或是所需要的支持文件不是在标准路径中,使用此变量指出特殊选项或路径。

-I选项,指出函数库路径,如CCARGS ‘-I/usr/local/include/‘,

-l选项指出函数库的名称(不是指函数库的文件名),如/usr/lib/mysql/目录下的libmysqlclient.so是mysqlclient函数库的文件名,函数名是mysqlclient,则链接形式为-lmysqlclient。

Postfix包定义了一系列的宏,代表在系统上找到的特定资源以及预先设定的选项,编译器选项提供

-D选项供用户定义编译宏,如Postfix具备查询mysql的能力,则定义HAS_MYSQL宏,CCARGS=‘-DHAS_MYSQL‘

DEBUG

构造Postfix可执行文件时,编译器使用的调试等级,等级越高,调试工具得到更详细的调试信息,构建实际系统的Postfix时,建议关闭调试支持。

OPT

构造Postfix可执行文件时,编译器进行何种程度的优化。次选项提示所选择的默认优化程度。

本次配置使用的系统是CentOS6.5 64位版本。


一、安装前的准备工作:

安装前说明:邮件服务依赖于DNS服务,请事先确信您的DNS服务已经为邮件应用配置完成。

配置MX解析


1、安装所需的rpm包,这包括以下这些:

httpd, mysql, mysql-server, mysql-devel, openssl-devel, dovecot, perl-DBD-MySQL, tcl, tcl-devel, libart_lgpl, libart_lgpl-devel, libtool-ltdl, libtool-ltdl-devel, expect,cyrus-sasl,cyrus-sasl-devel、cyrsu-sasl-libs(后面三个软件很重要)


2、删除系统自带的postfix软件、postfix和postdrop账号;

# rpm -e postfix

# userdel -r postfix

# userdel -r postdroop

为什么要删掉系统自带的账号后面会予以说明。不删掉的话,后面配置extmail的时候会出错。


3、安装以下开发所用到的rpm包组:

Development Libraries

Development Tools

方法:

# yum groupinstall "packge_group_name"


二、启动依赖的服务:

1、启动mysql数据库,并给mysql的root用户设置密码:

# service mysqld start

# chkconfig mysqld on

# mysqladmin -uroot password ‘your_password‘

2、启动saslauthd服务,并将其加入到自动启动队列:

# service saslauthd start

# chkconfig saslauthd on


三、安装配置postfix

# groupadd -g 504 postfix

# useradd -g postfix -u 503 -s /sbin/nologin -M postfix

# groupadd -g 505 postdrop

# useradd -g postdrop -u 505 -s /sbin/nologin -M postdrop

备注:CentOS6.6版本中自带有postfix,但是版本较低,需要卸载掉。


下载好postfix

# tar zxvf postfix-2.11.7.tar.gz

# cd postfix-2.11.7


备注:64位版本的系统库文件在/usr/lib64文件夹下,因此编译选项中的/usr/lib都要替换为/usr/lib64。MySQL没有安装到标准目录的时候,要注明安装位置(我这里mysql是系统自带的,不需要修改),如下所示。

# make makefiles ‘CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ‘ ‘AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm -L/usr/lib64/sasl2 -lsasl2  -lssl -lcrypto‘

make

make install


按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值,省略的表示采用默认值)

install_root: [/] /

tempdir: [/root/postfix-2.9.3] /tmp/postfix

config_directory: [/etc/postfix] /etc/postfix

daemon_directory: [/usr/libexec/postfix]

command_directory: [/usr/sbin]

queue_directory: [/var/spool/postfix]

sendmail_path: [/usr/sbin/sendmail]

newaliases_path: [/usr/bin/newaliases]

mailq_path: [/usr/bin/mailq]

mail_owner: [postfix]

setgid_group: [postdrop]  

html_directory: [no]/var/www/html/postfix

manpages: [/usr/local/man]

readme_directory: [no]

到此postfix编译完成。


生成别名二进制文件:

#  newaliases

编译完成后检查cyrus模块是否支持,

postconf -a

观察是否显示cyrus

技术分享技术分享


2.进行一些基本配置,测试启动postfix并进行发信

# vim /etc/postfix/main.cf

修改以下几项为您需要的配置

myhostname = mail.fei.com

myorigin = fei.com

mydomain = fei.com

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  (发往该域的邮件则负责接收,否则就中继)

mynetworks = 192.168.10.0/24, 127.0.0.0/8     (在此网段内的IP负责中继,不在则不予中继,192.168.10.0/24网段是我的虚拟机测试网段)


说明:

myorigin参数用来指明发件人所在的域名,即做发件地址伪装;

mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件,

myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;

mydomain 参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;

mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;

inet_interfaces 参数指定postfix系统监听的网络接口;


注意:

1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;

2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;

3、每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;

4、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;

5. 当mydestination的值里面没有$mydomain的时候,邮件发送时就不知道送往哪个域,此时会出现statu=bounced(mail for fei.com loops back to myself)的错误提示。


四、为postfix提供SysV服务脚本/etc/rc.d/init.d/postfix

内容如下(#END 之前):

#!/bin/bash

#

# postfix      Postfix Mail Transfer Agent

#

# chkconfig: 2345 80 30

# description: Postfix is a Mail Transport Agent, which is the program \

#              that moves mail from one machine to another.

# processname: master

# pidfile: /var/spool/postfix/pid/master.pid

# config: /etc/postfix/main.cf

# config: /etc/postfix/master.cf

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ $NETWORKING = "no" ] && exit 3

[ -x /usr/sbin/postfix ] || exit 4

[ -d /etc/postfix ] || exit 5

[ -d /var/spool/postfix ] || exit 6

RETVAL=0

prog="postfix"

start() {

 # Start daemons.

 echo -n $"Starting postfix: "

        /usr/bin/newaliases >/dev/null 2>&1

 /usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"

 RETVAL=$?

 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix

        echo

 return $RETVAL

}

stop() {

  # Stop daemons.

 echo -n $"Shutting down postfix: "

 /usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop"

 RETVAL=$?

 [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix

 echo

 return $RETVAL

}

reload() {

 echo -n $"Reloading postfix: "

 /usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload"

 RETVAL=$?

 echo

 return $RETVAL

}

abort() {

 /usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort"

 return $?

}

flush() {

 /usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush"

 return $?

}

check() {

 /usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check"

 return $?

}

restart() {

 stop

 start

}

# See how we were called.

case "$1" in

  start)

 start

 ;;

  stop)

 stop

 ;;

  restart)

 stop

 start

 ;;

  reload)

 reload

 ;;

  abort)

 abort

 ;;

  flush)

 flush

 ;;

  check)

 check

 ;;

  status)

   status master

 ;;

  condrestart)

 [ -f /var/lock/subsys/postfix ] && restart || :

 ;;

  *)

 echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}"

 exit 1

esac

exit $?

# END


为此脚本赋予执行权限:

# chmod +x /etc/rc.d/init.d/postfix

将postfix服务添加至服务列表:

# chkconfig --add postfix

设置其开机自动启动:

# chkconfig postfix on

使用此脚本重新启动服务,以测试其能否正常执行:

# service postfix restart

此时可使用本地用户测试邮件收发了。

此时根据mynetwork的限制,只有本地IP地址和本地回环地址可以发收发邮件。

本文出自 “无飞天下” 博客,请务必保留此出处http://hf1208.blog.51cto.com/8957433/1728826

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!