学海无涯 个人blog lnmps.com 新站
分类: LINUX
2013-03-12 11:33:22
原文地址:Linux下快速部署开源的web邮件系统实施步骤 作者:fengzhanhai
基本功能实现篇
一、部署前基本知识了解
a)已有DNS服务器并在映射到邮件服务器的域名配置文件中进行A记录和MX记录的设置
列如:
@ IN MX 5 mail.ltest.com.
mail IN A 192.168.1.2
b)邮件基本维护命令mailq 查看邮件队列中的邮件 sendmail –q对邮件队列进行再一次处理发送
二、组件配置及部署(发送功能配置):
第一步:安装sendmail-8.12.10-1.i386.rpm安装包
默认系统应已安装改程序包
我们可使用 rpm -e -nodeps sendmail-8.12.10进行卸载程序后再次安装该安装包
rpm -ivh sendmail-8.12.10-1.i386.rpm
第二步:配置相关参数
cd /etc/mail
a)设置mail的服务地址
vi sendmail.mc
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
//修改为
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
b)设置smtp用户认证方式
# vi /etc/mail/sendmail.mc
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
修改为
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
修改LOCAL_DOMAIN(`localhost.domain')dnl 为sdlp.com域名
LOCAL_DOMAIN(`sdlp.com')dnl
c)设置提供邮件服务的域名
# vi /etc/mail/local-host-names
//添加邮件服务器提供邮件服务的域名
sdlp.com
第三步:修改完主配置文件sendmail.mc后生产新的sendmail.cf文件
m4 sendmail.mc > sendmail.cf
报错信息:sendmail.mc:10: m4: Cannot open /usr/share/sendmail-cf/m4/cf.m4: No such file or directory
这是因为没有安装sendmai-cf这个包
第四步:安装该程序包
rpm -ivh sendmail-cf-8.12.10-1.i386.rpm
第五步:生成sendmail配置文件
m4 sendmail.mc > sendmail.cf
第六步:重启服务
service sendmail start
报错如下:
Jan 12 01:21:19 localhost sendmail[22422]: NOQUEUE: SYSERR(root): /etc/mail/sendmail.cf: line 39: unknown
configuration line "\n"
Jan 12 01:21:19 localhost sendmail[22427]: NOQUEUE: SYSERR(root): /etc/mail/sendmail.cf: line 39: unknown
configuration line "\n"
第六步:怀疑以下两行有空格导致修改sendmail.mc 文件
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
删除行前的空格后保存退出。
第七步:重启sendmail服务后
查看日志 tail -f /var/log/maillog 确认系统正常启动
三、pop3服务器部署(收邮件功能)
相关组件安装:
1、 确认安装组件是否已经收集完整:
Perl-dbi-1.52-1.fc6.i386.rpm
Mysql-5.0.22-2.1.i386.rpm
Dovecot-1.0.-1.2.rc15.el5.i386.rpm
2、 配置dovecot
a) 在/etc目录下修改配置文件dovecot.conf
b) 设置access配置文件允许邮件中继
192.168.163.0 RELAY
#设置允许该域内邮件转发
c) 重新生成配置文件access.db
makemap hash access.db
d) 重启邮件服务
Service sendmail restart
3、 我们现在测试邮件服务器是否正常工作:
登录邮件系统
telnet sdlp.com 25
返回如下信息:
Trying 192.168.163.111...
Connected to sdlp.com (192.168.163.111).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.12.10; Wed, 1 Feb 2012 01:17:47 -0800
填写发信人:
mail from:red@sdlp.com
填写收信人:
rcpt to:test@sdlp.com
填写邮件正文:
data
this is a test mail.
以句.结束
从日志查看信件是否可以正常发送
tail -f /var/log/maillog
Feb 1 01:12:41 localhost sendmail[12276]: q119BhTP012276: Authentication-Warning: localhost.localdomain: sdlp.com [192.168.163.111] didn't use HELO protocol
Feb 1 01:13:23 localhost sendmail[12276]: q119BhTP012276: from=red@sdlp.com, size=25, class=0, nrcpts=1, msgid=<201202010913.q119BhTP012276@localhost.localdomain>, proto=SMTP, daemon=MTA, relay=sdlp.com [192.168.163.111]
Feb 1 01:13:23 localhost sendmail[12331]: q119BhTP012276: to=test@sdlp.com, ctladdr=red@sdlp.com (501/501), delay=00:00:21, xdelay=00:00:00, mailer=local, pri=30437, dsn=2.0.0, stat=Sent
显示以上打印日志则邮件服务器可以正常收发邮件了。我们也可以切换到test账号进一步验证是否成功接收了邮件。
su –test后使用mail命令
设置客户端收发邮件时发现telnet sdlp.com 25无法telnet怀疑是防火墙导致所以关闭防火墙service iptables stop后便可以正常telnet该邮件服务器啦。
下一步我们便可以是在客户端进行收发邮件了。
使用outlook客户端时可以正常收发邮件但是使用其他客户端时在收邮件时是正常的但是发送邮件时一直提示需要输入密码通过查看后台日志发现一直提示以下信息:
did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA怀疑saslauthd配置有问题。
解决方法:
cd /etc/sysconfig
修改saslauthd配置文件中的配置项值为:MECH=pam重启服务:service saslauthd restart后重新配置客户端问题解决。
为避免无法向其他域正常发送邮件修改正确的主机名:
1、vi /etc/sysconfig/network
设置为:HOSTNAME=sdlp.com
2、vi /etc/hosts
添加192.168.163.111 sdlp.com后保存。
恭喜你邮件服务器已经搭建成功了~
进阶篇
邮件服务器与webmail的整合
安装介质清单
以下安装介质可在官网下载得到。
Openwebmail-2.52-1.i386.rpm
Perl-suidperl-5.8.1-92.i386.rpm
Perl-cgi-speedcgi-2.22-1.1.fc1.rf.i386.rpm
Perl-text-iconv-1.2-fc1.i386.rpm
Perl-compress-zlib-1.16-12.i386.rpm
openwebmail-data-2.53-1.i386.rpm
由于openwebmail使用perl语言开发的所以我们必须搭建perl的环境才能顺利安装openwebmail程序。
第一步安装必需的rpm程序包:
安装顺序如下:
a)rpm -ivh Perl-suidperl-5.8.1-92.i386.rpm
b)rpm -ivh Perl-compress-zlib-1.16-12.i386.rpm
c)rpm –ivh Perl-text-iconv-1.2-fc1.i386.rpm
d)rpm -ivh perl-CGI-SpeedyCGI-2.21-RH73.i386.rpm
e)在安装openwebmail-2.53-1.i386.rpm程序包时出现错误信息。
f)rpm -ivh openwebmail-2.53-1.i386.rpm
提示如下错误信息:
error: Failed dependencies:openwebmail-data = 2.53-1 is needed by openwebmail-2.53-1.i386
下载openwebmail-data-2.53-1.i386.rpm安装程序包
rpm -ivh openwebmail-data-2.53-1.i386.rpm 依然提示错误信息
发现错误信息为openwebmail-data-2.53-1.i386.rpm与openwebmail-2.53-1.i386.rpm互相依赖。
用以下安装方法安装来解决该问题:
g)rpm –ivh openwebmail-2.53-1.i386.rpm openwebmail-data-2.53-1.i386.rpm
成功安装该程序。
h)初始化openwebmail软件提示
以下错误信息Can't locate Text/Iconv.pm in @INC从baidu上无法查到解决方案所以我就去官网看了一下官网说需要下载install the Text-Iconv-1.2.tar.gz包
所以我从官网下载了该程序安装包
1)tar –xvf Text-Iconv-1.2.tar.gz
2)cd Text-Iconv-1.2
3)perl Makefile.PL
4)make
5)make test
6)make install
完成安装该程序包后再次运行/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init程序成功无误运行。
7)修改配置文件
cd /var/www/cgi-bin/openwebmail/etc
vi dbm.conf
vi openwebmail.conf
domainnames sdlp.com
default_language zh_CN.GB2312退出并保存。
运行openwebmail-tool.pl –init使改动后的配置生效
第二步:从apache开源组织官网获取最新版本的安装介质:httpd-2.2.9.tar.gz
a)解压程序包:tar –xvf httpd-2.2.9.tar.gz
b)参阅INSTALL文件并按照该文件进行安装
c)配置环境变量./configure –prefix=/apache
d)编译适配该版本的程序make
e)安装apache软件 make install
f)启动该服务并测试其正常性cd apache/bin/
使用sh apachectl start可以正常启动httpd服务。
g)使用service httpd start提示以下错误信息:
httpd: unrecognized service
解决方案:
cp apachectl /etc/rc.d/init.d/httpd
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
# chkconfig: 2345 50 90
退出并保存后就可以使用网上经常使用的service httpd start 命令启动httpd服务了。
第三步:输入提示
如下错误信息:
The requested URL was not found on this server.
出现该错误信息笔者考虑到可能是apache配置文件没有经过配置的问题所以我将apache2/conf下的http.conf修改了如下配置信息:
将ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"修改成如下信息
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/openwebmail/openwebmail.pl"
后重启httpd服务后再次访问该URL后又提示错误信息如下:
You don't have permission to access openwebmail.pl笔者在百度和google上均未找到答案所以去官网查了一下得到如下所示解决方案:在httpd.conf添加了对openwebmail允许访问的信息:
AllowOverride All
Options ExecCGI
Order allow,deny
Allow from all
保存退出后重启apache服务再次访问,呵呵终于成功了。
完善篇
加速邮件服务器:
(1)使用speedcgi来加速
针对Openwebmail速度慢的缺点,可以使用speedcgi来加速。
# yum -y install perl-CGI-SpeedyCGI,安装完后接着执行命令:“speedy_convert”,这个命令会自动设定已安装的 OpenWebMail 以便让其以 SpeedyCGI 方式执行。
(2)启动HTTP资料压缩传送
目前openwebmail的版本是openwebmail-2.53,这个版本默认是已启动HTTP资料压缩传送功能的,在登录openwebmail时会出现“HTTP资料压缩传送”选项。这样可以加速邮件服务器运行速度。