前段时间介绍过了在RHEL5下如何搭建LAMP环境,今天来介绍如何在LAMP下搭建邮件服务器,这一篇是构建基于postfix的简单邮件系统,等下一篇会介绍到postfix的高级应用,这一篇的架构是LAMP下postfix+dovecot+squirrelmail,下面来看具体的搭建步骤:
一、编译安装postfix
1.创建运行postfix服务的用户(postfix)、组(postfix、postdrop):
[root@LW~]# tar vzxf postfix-2.6.5.tar.gz //此包可以到postfix的官网下载
[root@LW~]# cd postfix-2.6.5
[root@LW postfix2.6.5]# make makefiles \
>'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl'\
>'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 '
其中,编译参数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。
2.编译并进行安装
[root@LW postfix2.6.5]# make && make install
执行"make install"命令以后,期间会需要设置一些安装参数,直接按照默认按回车即可。如出现以下问题后,如图:
解决方法:
[root@LW postfix2.6.5]# echo "/usr/local/mysql/lib/mysql/" >> /etc/ld.so.conf
[root@LW postfix2.6.5]# ldconfig
二、Postfix的配置文件
1.Postfix系统最主要的配置文件包括:/etc/postfix/main.cf和/etc/postfix/master.cf。前者是Postfix服务的配置文件,后者是master程序的配置文件。由于配置文件/etc/postfix/main.cf中的配置参数太多,而大部分已经默认配置好了,我们只需要配置少数的几个配置参数,就可以满足公司的要求了,所以下面我们可以使用postconf工具来简化一下main.cf配置文件:
[root@LW postfix2.6.5]# cd /etc/postfix
[root@LW postfix]# postconf -n > main2.cf
[root@LW postfix]# mv main.cf > main.cf.bak
[root@LW postfix]# mv main2.cf main.cf
[root@LW postfix]# cat main.cf
command_directory = /usr/sbin
config_directory = /etc/postfix
......//省略更多显示内容
2.Postfix的日志文件
Postfix系统的日志文件位于"/var/log/maillog",该文件中记录了Postfix服务器的运行状态信息(启动、出错及与其他SMTP服务器的会话信息等)。我们可以使用"tail -f /var/log/maillog“命令来跟踪它的日志内容变化。
3.Postfix的启动控制
Postfix系统的启动控制主要通过/usr/sbin/postfix"命令进行,只需要添加相应的“start"、“stop“、“check“、”reload“参数即可分别启动、停止、检查、重载postfix服务。该命令实际上会调用“/etc/postfix/postfix-script“脚本来对Postfix服务进行控制。
注意:
在启动postfix的时候,首先应该把sendmail服务关掉,因为sendmail服务在开机启动时就已经自动运行,所以占用了TCP25号端口,若不关掉sendmail服务的话,当postfix启动时就会启动失败。可以使用下列命令来启动postfix:
[root@LW~]# service sendmail stop
[root@LW~]# chkconfig --level 2345 sendmail off
[root@LW~]# postfix start
[root@LW~]# netstat -antp |grep :25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 7830/master
假如要查看一下当前的配置参数有没有错误时可以使用"postfix check"命令来查看。
三、配置Postfix服务器
Postfix主要提供基于SMTP协议的发信服务,其中最基本的功能包括存储和发送邮件。实现这些功能需要在Postfix的主配置文件“/etc/postfix/main.cf“中进行设置。
1.编辑main.cf文件,调整Postfix的基本运行参数
[root@LW~]# vi /etc/postfix/main.cf //向里面添加如下参数
inet_interfaces = 192.168.0.2, 127.0.0.1 //设置postfix服务器监听的IP地址,缺省为all
myhostname = mail.liwei.com //设置postfix服务器使用的主机名
mydomain = liwei.com //设置postfix服务器使用的邮件域
myorigin = $mydomain //设置外发邮件时发件人地址中的邮件域
mydestination = $mydomain, $myhostname //设置可接收的邮件地址中的域名
home_mailbox =Maildir/ //设置邮件存储位置格式
注意:
用户的邮箱空间用于保存各自的电子邮件内容,在postfix服务器中,支持如下两种常见的邮箱存储方式:
》Mailbox:这种方式将同一个用户的所有邮件内容存储在同一个文件中,通常对应为目录“/var/spool/mail“中以用户名命令的文件。Mailbox存储方式相对比较古老,在邮件数量多时查询和管理的效率较低。
》Maildir:这种方式使用目录结构来存储用户的邮件内容,第一个用户对应有一个文件夹,第一封邮件作为一个独立的文件保存。与Mailbox存储方式相比,Maildir方式的存取速度和效率更好,而且对于管理邮件内容也更加方便。
修改完配置文件后,使用“postfix reload“命令重新加载Postfix服务,并确认已在TCP25端口正常运行。
2.添加邮件用户的账号
Postfix服务器默认使用本机中的系统用户作为邮件账号,因此我们只需要添加Linux系统用户账号即可。下面建立两个账号,并为其设置密码:
[root@LW~]# groupadd mailusers
[root@LW~]# useradd -g mailusers -s /sbin/nologin xiangfei
[root@LW~]# useradd -g mailusers -s /sbin/nologin changwei
[root@LW~]# passwd xiangfei
[root@LW~]# passwd changwei
四、构建Dovecot服务器
1.编译安装Dovecot软件包:
[root@LW~]# useradd -M -s /sbin/nologin dovecot //首先创建运行dovecot的用户
[root@LW~]# tar vzxf dovecot-1.1.4.tar.gz
[root@LW~]# cd dovecot-1.1.4
[root@LW dovecot-1.1.4]# ./configure --sysconfdir=/etc --with-mysql
[root@LW dovecot-1.1.4]# make && make install
2.配置Dovecot的运行参数
[root@LW dovecot-1.1.4]# cp /etc/dovecot-extample.conf /etc/dovecot.conf
[root@LW dovecot-1.1.4]# vi /etc/dovecot.conf
ssl_disable = yes //禁用SSL机制
protocols = pop3 imap //指定支持的邮局协议
disable_plaintext_auth = no //允许明文密码认证
mail_location = maildir:~/Maildir //设置邮件存储格式及位置
3.创建PAM认证文件
[root@LW~]# vi /etc/pam.d/dovecot
auth required pam_nologin.so
auth include system-auth
account include system-auth
session include system-auth
4.启动Dovecot服务,并验证其监听的TCP端口(110,143)
[root@LW~]# /usr/local/sbin/dovecot -c /etc/dovecot.conf
[root@LW~]# netstat -nutpl | grep dovecot
tcp 0 0 :::110 :::* LISTEN 8672/dovecot
tcp 0 0 :::143 :::* LISTEN 8672/dovecot
5.测试邮件的收发
使用OE或者是outlook拿用户changwei给用户xiangfei发送一封邮件,然后在服务器上查看/home/xiangfei/Maildir/new里面是否有邮件,如果有的话就说明成功收到了邮件。当然你也可以另开一台XP客户机使用outlook拿用户xiangfei登录看是否能够接收到邮件,我就等到做完下面的webmail步骤后再截图验证了。
五、Webmail邮件界面
下面我们使用较为流行的SquirrelMail系统提供Webmail邮件界面,SquirrelMail的软件包可以到SquirrelMail的官方网站““上下载,这里分别下载程序文件包squirrelmail-1.4.13.tar.bz2和中文语言包zh_CN-1.4.13-20071220.tar.bz2,下面介绍SquirrelMail系统的安装、配置过程。
1.依次安装程序包、中文语言包
[root@LW~]# tar vjxf squirrelmail-1.4.13.tar.bz2 -C /usr/local/apache2/htdocs/
[root@LW~]# cd /usr/local/apache2/htdocs/
[root@LW htdocs]# mv squirrelmail-1.4.13 webmail
[root@LW htdocs]# cd webmail
[root@LW webmail]# tar vjxf ~/zh_CN-1.4.13-20071220.tar.bz2
2.创建及调整数据目录、附件目录
[root@LW webmail]# mkdir -p attach data
[root@LW webmail]# chown -R daemon:daemon attach/ data/
[root@LW webmail]# chmod 730 attach/
3.建立config.php配置文件
[root@LW webmail]# cp config/config_default.php config/config.php //根据需要查找并修改下列配置行
[root@LW webmail]# vi config/config.php
$squirrelmail_default_language = 'zh_CN';
$default_charset = 'zh_CN.UTF-8';
$domain = 'liwei.com';
$smtpServerAddress = 'localhost'; //设置发信服务器地址及端口
$smtpPort = 25;
$imap_server_type = 'dovecot'; //设置收信服务器地址及端口
$imapPort = 143;
$data_dir = '/usr/local/apache2/htdocs/webmail/data/';
$attachment_dir = '/usr/local/apache2/htdocs/webmail/attach/';
4.启动http服务,并在浏览器中登录SquirrelMail系统
在浏览器中输入““,如出现下图界面,说明Webmail搭建成功,如图:
然后拿xiangfei登录查看是否接收到changwei给他发的邮件,如图:
六、设置SMTP的用户认证
在Postfix邮件系统中,可以使用Cryrus SASL (Cyrus Simple Authentication and Security Layer, Cyrus 简单认证安全层)软件来实现基本的SMTP认证机制。RHEL5系统中默认已经安装了Cyrus SASL相关的软件包。
[root@LW ~]# rpm -qa |grep cyrus
cyrus-sasl-plain-2.1.22-5.el5
cyrus-sasl-devel-2.1.22-5.el5
cyrus-sasl-2.1.22-5.el5
cyrus-sasl-lib-2.1.22-5.el5
1.设置Cyrus SASL函数库,并启动saslauthd服务
[root@LW ~]# cp /usr/lib/sasl2/Sendmail.conf /usr/lib/sasl2/smtpd.conf
[root@LW ~]# vi /usr/lib/sasl2/smtpd.conf
pwcheck_method:saslauthd
[root@LW ~]# service saslauthd start
[root@LW ~]# chkconfig --level 35 saslauthd on
2.修改main.cf配置文件,添加SMTP认证相关的配置参数,并重新加载配置
[root@LW ~]# vi /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes //启用SMTP认证
smtpd_sasl_security_options = noanonymous //禁止匿名登录
mynetworks = 127.0.0.1
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
在上述配置参数中,后面几行设置的作用如下:
>> mynetworks: 用于控制可以通过本服务器外发邮件的网络地址或IP地址,设置为127.0.0.1是为了确保Webmail系统可以正常发送邮件。
>> smtpd_recipient_restrictions: 设置收件人地址过滤规则,其匹配策略是:“从上到下逐条检测,有匹配即停止“。其中:
》permit_mynetworks:允许IP为mynetworks的客户使用本邮件系统寄出邮件。
》permit_sasl_authenticated:允许通过SMTP认证的用户向外发送邮件。
>> reject_unauth_destination: 当收件人地址不包括在Postfix的授权网络内时,将拒绝发送该邮件。Postfix的授权网络包括由以下配置参数指定的域及其子域:mydestination、inet_interfaces、virtual_alias_maps、virtual_mailbox_maps、relay_domain。
确认配置完后,执行“postfix reload“命令重新加载配置信息。
3.测试SMTP发信认证
在OE的账户属性中的“服务器”选项卡中选中“我的服务器要求身份验证”,即可在客户端启用SMTP认证支持。若不选中此项,将无法成功向外域发送邮件。
OK!今天就写到这里了,下次介绍Postfix+dovecot+extmail,配置Postfix支持虚拟用户。