Postfix邮件服务器搭建之软件安装与cyrus-sasl配置

发布时间:2017-03-30 编辑:小张个人博客 查看次数:5558

关于Postfix:

postfix的产生是为了替代传统的sendmail.相较于sendmail,postfix在速度,性能和稳定性上都更胜一筹。现在目前非常多的主流邮件服务其实都在采用postfix. 当我们需要一个轻量级的的邮件服务器是,postfix不失为一种选择。

postfix是免费的:

postfix想要作用的范围是广大的Internet用户,试图影响大多数的Internet上的电子邮件系统,因此它是免费的。

更快:

postfix在性能上大约比sendmail快三倍。一部运行postfix的台式PC每天可以收发上百万封邮件。

兼容性好:

postfix是sendmail兼容的,从而使sendmail用户可以很方便地迁移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。

更健壮:

postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,postfix会自动减少运行进程的数目。当处理的邮件数目增长时,postfix运行的进程不会跟着增加。

更灵活:

postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以

通过配置文件设置每个程序的运行参数。

安全性

postfix具有多层防御结构,可以有效地抵御恶意入侵者。如大多数的postfix程序可以运行在较低的权限之下,不可以通过网络访问安全性相关的本地投递程序等等。

下面来介绍Linux上如何搭建和配置postfix服务:

安装前的准备工作:

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

安装所需的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

 关闭sendmail,并将它的随系统自动启动功能关闭:

 service sendmail stop
 chkconfig sendmail off

创建虚拟用户帐号:

groupadd -g 2525 testmail
useradd -g testmail -u 2525 -s /sbin/nologin -M testmail

cyrus-sasl安装与配置:

yum -y install cyrus-sasl

查看版本cyrus-sasl,使用如下命令:

/usr/sbin/saslauthd -v

cyrus-sasl配置(vim /etc/sysconfig/saslauthd):

SOCKETDIR=/var/run/saslauthd
MECH=shadow
FLAGS=

修改smtpd.conf文件,添加如下代码(vim /etc/sasl2/smtpd.conf):

pwcheck_method: saslauthd
mech_list: plain login
log_level: 3
saslauthd_path:/var/run/saslauthd/mux

cyrus-sasl配置完毕后,我们来测试其是否正常。创建系统用户test,并修改其密码,如下:

useradd test &&echo '123456'| passwd --stdin test
su - test
mkdir -p ~/mail/.imap/INBOX
ls -al ~/mail/.imap/

启动cyrus-sasl

/etc/init.d/saslauthd start
chkconfig saslauthd on

现在来使用刚刚创建的用户进行认证测试,如下:

testsaslauthd -u test -p '123456'

看到 0: OK "Success.",很明显的看出cyrus-sasl已经正常启动,并且我们的配置也是完全正确的。

postfix安装(下载最新版本:http://repos.oostergo.net/ ):

wget http://repos.oostergo.net/6/postfix-3.1/postfix-3.1.0-1.el6.i686.rpm
rpm -ivh postfix-3.1.0-1.el6.x86_64.rpm
postconf -d | grep mail_version  #-d:显示默认的配置

postfix基本配置(vim /etc/postfix/main.cf),根据自己的实际情况修改:

myhostname = mail.test.com
mydomain = test.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 192.168.1.0/24, 127.0.0.0/8

说明:

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的文本行视为上一行的延续;

为postfix提供SysV服务脚本vim /etc/init.d/postfix,内容如下:

#!/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/init.d/postfix

启动postfix:

/etc/init.d/postfix start

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

chkconfig --add postfix

#设置其开机自动启动:
chkconfig postfix on

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

service postfix restart

测试postfix是否可以发送邮件,如下

 telnet mail.test.com 25
 mail from:[email protected]  #发件人
 rcpt to :[email protected]  # 收件人
 data

 编写邮件内容

 .  #" . "是邮件内容结束

 quit  #退出

postconf:配置postfix

  -d:显示默认的配置

  -n:修改了的配置

  -m:显示支持的查找表类型

  -A:显示支持的sasl客户端插件类型

  -a:显示支持的sasl服务端插件类型

  -e:更改某参数配置信息,并保存至main.cf文件中

smtp状态码:

  1xx:纯信息

  2xx:正确

  3xx:上一步操作尚未完成,需要继续补充

  4xx:暂时性错误

  5xx:永久性错误

smtp协议命令:

  helo:(smtp协议)

  ehlo:(esmtp协议)

  mail from:发件人

  rcpt to:收件人

  data:内容

  . :是邮件内容结束

  quit:退出

  

以上就是postfix安装与基本配置,希望对各位有所帮助。

出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号