您的位置:首页 > 运维架构 > Linux

Linux系列-Red Hat5平台下的Postfix邮件服务搭建(一)

2010-03-24 21:38 891 查看
[align=center]构建Postfix电子邮件系统[/b][/align]
上次咱们说了Sendmail.今天来看一下PostfixMail。Postfix最大的好处在于它采用了模块化的设计,有多个不同的程序集合而成,分别用于实现不同的功能。还有就是可以结合mysql数据库使用虚拟邮件用户。现在就来看看如何构建Postfix电子邮件系统。
前面概念我会稍微啰嗦一点,毕竟理解概念才是最重要的。后面我就主要以配置为主喽,下面咱们边做边说。
第一部分:编译安装Postfix[/b]
因为RHEL5系统中默认安装了sendmail,所以在安装Postfix前先将sendmail服务停止,以免发生冲突。RHEL5也带有Postfix软件的RPM包,但功能太少了,它不支持MySQL数据库,所以我们采用Postfix的源码包进行编译安装。首先从官方站点中下载程序文件包postfix-2.4.6.tar.gz ,地址如下:
http://mirror.postfixchina.org
然后下载相应版本的vda补丁包postfix-2.4.6-vda-ng.patch.gx,vda补丁用于支持对虚拟邮件用户设置邮箱空间配额,地址如下:
http://vda.sourceforge.net
1. [/b]创建运行postfix服务的用户(postfix)、组(postfix、postdrop)[/b]



说明:指定用户postfix的UID为1000,所属组为postfix,附加组为postdrop,且不创建宿主目录,禁止直接登录到本地系统。
2. [/b]解压并释放源码包、合并补丁包[/b]



3. [/b]预配置编译参数[/b]
我们采用源码编译安装的AMP平台,并使用RHEL5系统自带的eyrus-sasl认证软件,因此根据mysql、cyrus-sasl的库文件和头文件安装位置对编译参数CCARGS和AUXLIBS进行适当调整,配置命令及参数如下:



说明:在编译前需要使用“make maekfiles”命令调整编译参数,以便Postfix支持SASL认证和查询MySQL数据库。
其中,编译参数CCARGS和AUXLIBS的作用如下:
CCARGS参数:为编译器提供额外的参数。“-I”选项指出标准的额外头文件的存放目录。例如,mysql和cyrus-sasl的头文件分别位于目录:/usr/local/mysql/lib/mysql、/usr/include/sasl.
AUXLIBS参数:指出位于标准位置之外的额外函数库。如果需要链接SASL、MySQL或任何附加的函数库,而且他们不是存在标准位置(/usr/lib目录),则必须在AUXLIBS参数中指出这些函数库的路径,例如,mysql和cyrus-sasl的库文件分别位于目录:/usr/local/mysql/lib/mysql、/usr/lib/sasl2。
4.[/b]编译并进行安装[/b]



执行“make install”命令以后,期间会需要设置一些安装参数,例如



说明:别看它问了这么多,一路回车就可以了,咱按照默认的来,呵呵!
现在Postfix算是装好了,咱们不急着做。先来看一下Postfix的目录、配置文件及启动控制,所谓磨刀不误砍柴工!
Postfix[/b]的目录及配置文件:[/b]
1. [/b]Postfix[/b]的相关目录[/b]
/etc/postfix:该目录中包括Postfix服务的主配置文件、各类脚本、查询表等。
/usr/libexec/postfix/:该目录中包括Postfix服务的各个服务器程序文件。
/var/spool/postfix/:该目录中包括Postfix服务的邮件队列相关的子目录。
其中每个队列子目录用于保存不同的邮件,比如说:
1>.Incoming(传入):刚接收到的邮件。
2>.Active(活动):正在投递的邮件。
3>.Deferred(推迟):以前投递失败的邮件。
4>.Hold(约束):被阻止发送的邮件。
5>.Corrupt(错误):不可读或不可分析的邮件。
/usr/sbin/:该目录中包括Postfix服务的管理工具程序,这些程序文件名以post开头。其中,主要的几个程序文件及其作用如下。
1>.Postalias:用于构造、修改和查询别名表。
2>.Postalias:用于显示和编辑main.cf配置文件。
3>.Postfix:用于启动、停止postfix,要求有root用户权限。
4>.Postmap:用于构造、修改或者查询查询表。
5>.Postqueue:用于管理邮件队列,一般用户使用。
6>.Postsuper:用于管理邮件队列,要求有root用户权限。
2. [/b]Postfix[/b]的配置文件[/b]
Postfix系统最主要的配置文件包括:/etc/postfix/main.cf和/etc/postfix/master.cf,前者是Postfix服务的配置文件,后者是master程序的配置文件。
使用postconf工具可以查看当前Postfix服务所使用的配置参数
使用postconf工具还可以简化main.cf文件,只保留与默认配置不同的参数,如下:
[root@mail postfix]# postconf -n > main.cf[/b]
[root@mail postfix]# mv main.cf main.cf.bak [/b] //备份
[root@mail postfix]# mv main2.cf main.cf[/b]
3. [/b]Postfix[/b]的日志文件[/b]
Postfix系统的日志文件位于“/var/log/maillog”,此文件记录了Postfix服务器的运行状态信息。我们可以经常使用带“-f”选项的tail命令查看日志。如果日志太多了我们可发使用egrep命令进行过滤。
4. [/b]postfix[/b]的启动控制[/b]
Postfix系统的启动控制主要通过“/usr/sbin/postfix”命令进行,后面添加相应的start、stop、check、reload参数即可分别启动、停止、检查、重载postfix服务。用法很简单我这就不做演示了哈!
第二部分:配置Postfix服务器[/b]
好了!现在该说的基本都说到了,我们开始做吧!首先我把环境简单描述一下:
1>.邮件服务器IP地址:192.168.1.1 主机名:mail.zpp.com
2>.邮件域:@zpp.com或mail.zpp.com
3>.AMP平台:使用已编译安装好的Apache、MySQL、PHP,对应的安装目录分别是:
4>./usr/local/apache2、/usr/local/mysql、/usr/local/php5
5>. 使用已安装好的DNS,的配置步骤我这就不多说了,上次搭建sendmail时有说到DNS,以及这个系列也专门写过一篇DNS方面的
下面是具体的步骤:[/b]
1. [/b]编辑main.cf文件,调整Postfix的基本运行参数[/b]
[align=left][root@mail ~]# cat /etc/postfix/main.cf[/b][/align]
[align=left]… …(此处我省略原来的内容)[/align]
[align=left]inet_interfaces = 192.168.1.1,127.0.0.1[/b] //设置监听的IP[/align]
[align=left]myhostname = mail.zpp.com[/b] //设置主机名[/align]
[align=left]mydomain = zpp.com[/b] //设置邮件域[/align]
[align=left]myorigin = $mydomain[/b] //设置外发邮件时发件人地址中的邮件域名[/align]
[align=left]mydestination = $mydomain,$myhostname[/b] //设置可接收的邮件地址中的域名[/align]
[align=left]home_mailbox =Maildir/ [/b] //设置邮件存储位置和格式[/align]
2. [/b]添加邮件用户的帐号[/b]
[align=left][root@mail ~]# groupadd zoupanpan[/b][/align]
[align=left][root@mail ~]# useradd -g zoupanpan -s /sbin/nologin zpp001[/b][/align]
[align=left][root@mail ~]# useradd -g zoupanpan -s /sbin/nologin zpp002[/b][/align]
[align=left][root@mail ~]# passwd zpp001[/b][/align]
[align=left]Changing password for user zpp001.[/align]
[align=left]New UNIX password:[/align]
[align=left]BAD PASSWORD: it is WAY too short[/align]
[align=left]Retype new UNIX password:[/align]
[align=left]passwd: all authentication tokens updated successfully.[/align]
[align=left][root@mail ~]# passwd zpp002[/b][/align]
[align=left]Changing password for user zpp002.[/align]
[align=left]New UNIX password:[/align]
[align=left]BAD PASSWORD: it is WAY too short[/align]
[align=left]Retype new UNIX password:[/align]
[align=left]passwd: all authentication tokens updated successfully.[/align]
3. [/b]测试SMTP发送邮件[/b]
[align=left][root@mail ~]# telnet localhost 25[/b][/align]
[align=left]Trying 127.0.0.1...[/align]
[align=left]Connected to localhost.localdomain (127.0.0.1).[/align]
[align=left]Escape character is '^]'.[/align]
[align=left]220 mail.zpp.com ESMTP Postfix[/align]
[align=left]helo localhost [/b] //宣告客户端地址[/align]
[align=left]250 mail.zpp.com[/align]
[align=left]mail from:zpp001@zpp.com[/b] //告知服务器发件人地址[/align]
[align=left]250 2.1.0 Ok[/align]
[align=left]rcpt to:zpp002@zpp.com [/b] //告知服务器收件人地址[/align]
[align=left]250 2.1.5 Ok[/align]
[align=left]Data [/b] //告知服务器要传送数据了[/align]
[align=left]354 End data with <CR><LF>.<CR><LF>[/align]
[align=left]subject:I Love You! [/b] //主题[/align]
[align=left]hello![/b][/align]
[align=left]You are my super star! he he he ![/b] //邮件内容以点结束[/align]
[align=left].[/align]
[align=left]250 2.0.0 Ok: queued as 27ECCE01ED[/align]
[align=left]Quit [/b] //退出[/align]
[align=left]221 2.0.0 Bye[/align]
[align=left]Connection closed by foreign host.[/align]
现在我们到邮件用户zpp002的宿主目录下进行查看,可以看到刚刚接收到的邮件保存在Maildir子目录中。
[align=left][root@mail ~]# cat /home/zpp002/Maildir/new/1611777596.Vfd00I258020M248704.mail.zpp.com[/b][/align]
[align=left]Return-Path: <zpp001@zpp.com> //退信地址[/align]
[align=left]X-Original-To: zpp002@zpp.com //来源地址[/align]
[align=left]Delivered-To: zpp002@zpp.com //目标地址[/align]
[align=left]Received: from localhost (localhost.localdomain [127.0.0.1])[/align]
[align=left] by mail.zpp.com (Postfix) with SMTP id 27ECCE01ED //经过的MTA[/align]
[align=left] for <zpp002@zpp.com>; Thu, 28 Jan 2021 03:57:40 +0800 (CST)[/align]
[align=left]subject:I Love You![/align]
[align=left]Message-Id: <20100127195752.27ECCE01ED@mail.zpp.com>[/align]
[align=left]Date: Thu, 02 Tuesday 2010 03:57:40 +0800 (CST) //时间[/align]
[align=left]From: zpp001@zpp.com //发件人地址[/align]
[align=left]To: undisclosed-recipients:;[/align]
[align=left]hello![/align]
[align=left]You are my super star! he he he ![/align]
[align=left]现在Postfix服务器已经搭建好了,下面我们来看一下dovecot服务器是如何搭建的。[/align]
第二部分:构建Dovecot服务器[/b]
1. [/b]编译安装Dovecot软件包[/b]
Dovecot其实Red Hat5自带的有,但我这还是源码编译安装一个吧。从下面这个链接可以下载到我接下来要用到的源码包:
http://www.dovecot.org/releases/1.1/dovecot-1.1.4.tar.gz
安装的步骤很简单如下:
[align=left][root@mail ~]# useradd -M -s /sbin/nologin dovecot[/b][/align]
[align=left][root@mail ~]# tar zxf dovecot-1.1.4.tar.gz[/b][/align]
[align=left][root@mail ~]# cd dovecot-1.1.4[/b][/align]
[align=left][root@mail dovecot-1.1.4]# ./configure --sysconfdir=/etc --with-mysql[/b][/align]
[align=left][root@mail dovecot-1.1.4]# make ; make install[/b][/align]
[align=left]说明:如果dovecot用户无法创建,说明系统中默认就有了直接用就可以了[/align]
2. [/b]配置Dovecot的运行参数[/b]
1>.建立dovecot.conf配置文件并进行简单设置
[align=left][root@mail dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf[/b][/align]
[align=left][root@mail dovecot-1.1.4]# cat /etc/dovecot.conf[/b][/align]
[align=left]… …(此处省略)[/align]
[align=left]ssl_disable = yes[/b] //禁用SSL机制[/align]
[align=left]protocols = pop3 imap[/b] //制定支持的邮局协议[/align]
[align=left]disable_plaintext_auth = no[/b] //允许明文密码认证[/align]
[align=left]mail_location = maildir:~/Maildir [/b] //设置邮件存储格式及位置[/align]
[align=left]… …(此处省略)[/align]
[align=left]2>.创建PAM认证文件[/align]
[align=left][root@mail ~]# cat /etc/pam.d/dovecot[/b][/align]
[align=left]#%PAM-1.0[/align]
[align=left]auth required pam_nologin.so[/b][/align]
[align=left]auth include system-auth[/b][/align]
[align=left]account include system-auth[/b][/align]
[align=left]session include system-auth[/b][/align]
[align=left]说明:说的是创建,其实系统里默认就有了。[/align]
3. [/b]启动Dovecot服务,并查看其监听的TCP端口(110、143)[/b]
[align=left][root@mail ~]# /usr/local/sbin/dovecot -c /etc/dovecot.conf[/b][/align]
[align=left][root@mail ~]# netstat -nutpl | grep dovecot[/b][/align]
[align=left]tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 23251/dovecot[/align]
[align=left]tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 23251/dovecot[/align]
[align=left]说明:dorecot服务的启动程序位于“/usr/local/sbin”目录中,使用-c选项可以指定所使用的配置文件的位置,如果使用默认配置文件,则直接执行“dovecot”命令即可。[/align]
4. [/b]测试POP3接收邮件[/b]
[align=left][root@mail ~]# telnet localhost 110[/b][/align]
[align=left]Trying 127.0.0.1...[/align]
[align=left]Connected to localhost.localdomain (127.0.0.1).[/align]
[align=left]Escape character is '^]'.[/align]
[align=left]+OK Dovecot ready.[/align]
[align=left]user zpp002 [/b] //使用邮件用户“zpp002”登录[/align]
[align=left]+OK[/align]
[align=left]pass 123.com[/b] //键入密码123.com[/align]
[align=left]+OK Logged in.[/align]
[align=left]List [/b] //查看邮件列表[/align]
[align=left]+OK 1 messages:[/align]
[align=left]1 485[/align]
[align=left].[/b][/align]
[align=left]retr 1[/b] //收取并查看第一封邮件内容[/align]
[align=left]+OK 485 octets[/align]
[align=left]Return-Path: <zpp001@zpp.com>[/align]
[align=left]X-Original-To: zpp002@zpp.com[/align]
[align=left]Delivered-To: zpp002@zpp.com[/align]
[align=left]Received: from localhost (localhost.localdomain [127.0.0.1])[/align]
[align=left] by mail.zpp.com (Postfix) with SMTP id 27ECCE01ED[/align]
[align=left] for <zpp002@zpp.com>; Thu, 28 Jan 2021 03:57:40 +0800 (CST)[/align]
[align=left]subject:I Love You![/align]
[align=left]Message-Id: <20210127195752.27ECCE01ED@mail.zpp.com>[/align]
[align=left]Date: Thu, 28 Jan 2021 03:57:40 +0800 (CST)[/align]
[align=left]From: zpp001@zpp.com[/b][/align]
[align=left]To: undisclosed-recipients:;[/align]
[align=left]hello![/b][/align]
[align=left]You are my super star! he he he ![/b][/align]
[align=left].[/b][/align]
[align=left]quit[/b][/align]
[align=left]+OK Logging out.[/align]
[align=left]Connection closed by foreign host.[/align]
好了,咱们现在在客户端上测试一下吧!MUA就使用windows自带的OE。下面是测试的步骤:
1>.配置客户机的DNS
2>.启动windows自带的OE
3>.设置用户使用的邮件帐号
虽然上次sendmail中已经说过这个问题但现在还是再说一下。设置完帐号后别望了钩选“我的服务器要求身份验证”,如图:



4>.验证邮件服务器的发信、收信功能
下图是我截取的一幅zpp001用户的发件箱,可以看到邮件是可发成功发送的。



下图是用户zpp002的收件箱,我们可以看到邮件成功的发送了过来。



我们已经看到了Postfix邮件的基本应用,由此可以解决企事业内部的邮件收发,如果要使用户能和Internet上的用户通邮,DNS中的反向记录及MX记录是少不了的。OK!由于篇幅有限,本次就说到这里吧!下次大家会看到当下较为流行的SquirrelMail与Postfix、Dovecot服务共同协作的应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: