Chinaunix首页 | 论坛 | 博客
  • 博客访问: 571382
  • 博文数量: 52
  • 博客积分: 2673
  • 博客等级: 少校
  • 技术积分: 1432
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-24 09:55
文章分类

全部博文(52)

文章存档

2011年(2)

2010年(20)

2009年(14)

2008年(16)

分类:

2008-07-23 14:50:44

centos5.1、liunx as4 u5 安装qmail 1.03 笔记
 
 
这个文档不是我的原创,借鉴与网络,在学习安装中做了一些修改,卸载了系统默认安装的sendmail,
因需求不同,我只做到了能正常收发邮件这一步,没有继续做web管理和注册,如果需要首先要安装好
LAMP环境支持。
1.首先安装mysql数据库,我用的是mysql-5.0.45二进制包,数据库的安装我就不在这里啰嗦了
2.安装ucspi-tcp-0.88 
 #tar zxvf ucspi-tcp-0.88.tar.gz 
 #cd ucspi-tcp-0.88
 //打补丁时注意补丁文件路径正确、同时从网上直接copy的补丁文件最好复制到文本文件中再生成补
丁文件。
 #patch -p1 < ../ucspi-tcp-0.88.a_record.patch 
 #patch -p1 < ../ucspi-tcp-0.88.errno.patch 
 #patch -p1 < ../ucspi-tcp-0.88.nobase.patch 
 #make 
 #make setup check 
●安装qmail 
 1.下载软件及补丁: 
 2.建立目录: 
 # mkdir /var/qmail 
 # mkdir /var/qmail/alias 
 3.建组及用户: 
嫌麻烦也可以在qmail源码目录找到一个INSTALL.ids的文件,用sed或者其他什么编辑器提取出适合你
系统的命令,保存为一个新文件,source filename就ok了。
   # groupadd nofiles
   # useradd -g nofiles -d /var/qmail/alias alias
   # useradd -g nofiles -d /var/qmail qmaild
   # useradd -g nofiles -d /var/qmail qmaill
   # useradd -g nofiles -d /var/qmail qmailp
   # groupadd qmail
   # useradd -g qmail -d /var/qmail qmailq
   # useradd -g qmail -d /var/qmail qmailr
   # useradd -g qmail -d /var/qmail qmails
 
 4.打补丁及编绎安装qmail 
 #tar zxvf qmail-1.03.tar.gz 
 #tar zxvf qmail-smtpd-auth-0.31.tar.gz 
 #cp qmail-smtpd-auth-0.31/base64.* qmail-1.03 //安装smtp-auth补丁,支持smtp认证 
 #patch -d qmail-1.03 < qmail-smtpd-auth-0.31/auth.patch 
 #cd qmail-1.03 
 #patch -p1 < ../qmail-103.patch 
 #patch -p1 < ../qmailqueue-patch 
 #patch -p1 < ../qmail-maildir++.patch 
 #patch -p1 < ../qmail-1.03.errno.patch 
 #patch -p1 < ../qmail-1.03.qmail_local.patch 
 #vi qmail-smtpd.c //将函数straynewline中的451改为553 
//将451改为553是为避免当其它服务器给你发来无效格式的邮件时,你的服务器陷入循环应答。当你
的服务器收到无效格式的邮件时,一般会发送:"I am not going to accept that message at the
moment,you can try again later",对方服务器收到后,几秒钟后又会发送同样的邮件给你,造成多
次的重复。改为553后,你的服务器将直接发送:"I am not going to accept that message,don't
try sending it again.",告诉对方的服务器不要再发这封无效的信件。 
 # make setup check 
 # ./config-fast test200.com 
 
 
 5.添加别名用户: 
 # touch /var/qmail/alias/.qmail-root 
 # touch /var/qmail/alias/.qmail-postmaster 
 # touch /var/qmail/alias/.qmail-mailer-daemon 
 # chmod 644 /var/qmail/alias/.qmail*
 # echo postmaster > /var/qmail/control/bouncefrom  \\退回邮件
 # echo test200.com > /var/qmail/control/helohost  \\主机名(解决新浪拒收邮件问题)
 # echo 10485760 > /var/qmail/control/databytes     \\接收邮件的最大容量 (0=无限制)??
 # echo 40 > /var/qmail/control/concurrencylocal    \\本地同时投递邮件的数目
 # echo 40 > /var/qmail/control/concurrencyremote    \\同时投递至远程主机的数目
 注意:
 /var/qmail/control/locals中必须有缺省域名,否则投递失败的邮件将不知所踪。
 6.如果存在postfix和sendmail,停用现在的mail服务 
 #/etc/rc.d/init.d/sendmail stop 
 #cp /var/qmail/bin/sendmail /usr/sbin/qmail.sendmail 
 #rm -f /etc/alternatives/mta 
 #ln -s /usr/sbin/qmail.sendmail /etc/alternatives/mta 
 
 # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail 
 # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 
 #chmod 777 /usr/sbin/sendmail  //这里特别要注意检查/usr/sbin/sendmail的属性
●安装vpopmail 
 1.下载vpopmail的稳定版,我这里安装的是 vpopmail-5.4.25  和网上大多数介绍vpopmail-5.2.1的
安装和编译有所不同,数据库的配置、邮箱大小控制也有些差异
 2.建立目录: 
 #mkdir -p /home/vpopmail/etc 
 3.添加用户和组: 
 #groupadd vchkpw 
 #useradd -g vchkpw vpopmail 
 4.添加mysql的vpopmail用户,用于操作vpopmail数据库 
 #mysql -u root -p //进入mysql命令行 root是mysql用户 -p后面跟密码
 mysql>create database vpopmail; // 创建数据库vpopmail
 mysql>grant all on vpopmail.* to identified by "密码";  //设置
mail帐户连接数据库权限,这里设置的帐号和密码要在后面配置文件中用到
 5.编译安装vpopmail 
 #tar zxvf  vpopmail-5.4.25.tar.gz 
 #cd vpopmail-5.4.25
 #vi vmysql.h 
6.创建tcp.smtp文件(或者使用/etc/tcp.smtp) 
 # vi /home/vpopmail/etc/tcp.smtp 
 
  127.0.0.1:allow,RELAYCLIENT="" 
 :allow 
 
 #cd /home/vpopmail/etc 
 #tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp 
 7.进行编译: 
 ./configure --prefix=/home/vpopmail \ //指定安装路径
--enable-auth-module=mysql \ //是否应用Mysql数据库
--enable-incdir=/usr/local/mysql/include/ \ //Mysql数据库include文件所在目录 
--enable-libdir=/usr/local/mysql/lib/ \ //\\Mysql数据库lib文件所在目录(网上很多资料是
mysql4.0的安装路径) 
--enable-passwd=n \  //是否使用系统密码验证方式
--enable-tprules-prog=/usr/local/bin/tcprules \  //指定tcprules目录 
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \  //指定tcprules应用规则文件 
--enable-vpopuser=vpopmail \  //vpopmail的用户
--enable-vpopgroup=vchkpw \  //vpopmail的组 
--enable-ip-alias-domains=n \  //在虚拟域中允许通过反向IP地址查找虚拟域名 
--enable-sqwebmail-pass=y    //sqwebmail密码验证支持
以下三个在 vpopmail-5.4.25 版本里不用编译进去。分别有配置文件可以设置。
--enable-hardquota=10000000 \\限制磁盘限额为10M
--enable-defaultquota=10485760 \\定义缺省邮箱大小,10485760为10MB,20971520为20MB,
52428800为50MB 
--enable-default-domain=mydomain.com \\定义虚拟域名
# make 
# make install-strip 
把数据库的lib目录设置到/etc/ld.so.conf文件中
# vi /etc/ld.so.conf  写入如下内容
/usr/local/mysql/lib
/usr/local/lib
然后执行
# ldconfig
配置数据库连接,修改/home/vpopmail/etc/vpopmail.mysql
找到#localhost|0|root|secret|vpopmail行
写入数据库信息按顺序一次是IP|端口|帐号|密码|数据库
 8.创建虚拟域 
 # cd /home/vpopmail/bin 
 # ./vadddomain 域名 (密码) (在mysql数据库vpopmail中自动生成vpopmail表单,生成的密码是
postmaster@域名帐户的密码,以后登陆qmailadmin就是使用postmaster登陆的) 
 # ./vadduser 用户名 密码 (会自动往表vpopmail中添加用户数据,用户添加到默认的域里面。如果
要添加到其他的虚拟域,用户名要带域名,如) 
 如果不成功的话,则必须先删除创建的域,./vdeldomain 域名 不要使用手工操作mysql删除域和用
户帐号,否则会引起系统帐户的紊乱)
 
 ●smtp-auth的设置 
 1.修改vchkpw的属性 
 #chmod 4755 vchkpw 
 #chown root.root vchkpw 
 如果使用带验证的smtp,smtp进程要调用密码验证程序,则必须要使用 setuid 和setgid。提高
vchkpw的权限,才能完成setgid操作。
2.下载安装cmd5checkpw 
#tar zxvf cmd5checkpw-0.22.tar.gz 
#cd cmd5checkpw-0.22 
#mkdir -p /usr/man/man8
#make 
#make install 
  
 注意,因为使用vpopmail,所以checkpassword不用安装。
 
 ●生成qmail的启动脚本 
 #cp /var/qmail/boot/home /var/qmail/rc 
 # vi /var/qmail/rc //对rc文件进行修改,以决定投送方式: 
#!/bin/sh
# Using splogger to send the log through syslog.
# Using dot-forward to support sendmail-style ~/.forward files.
# Using qmail-local to deliver messages to ~/Mailbox by default.
exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ splogger qmail &
#vi /var/qmail/smtp //编辑smtp服务的启动脚本

#!/bin/sh
QMAILQUID=qmaild
NOFILESGID=nofiles
/usr/local/bin/tcpserver -H -R -c 100 -l 0 -t 1 -v -p -x /home/vpopmail/etc/tcp.smtp.cdb
-u $QMAILQUID -g NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd songsong.com
/home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1 |
/var/qmail/bin/splogger smtpd 3 &
#vi /var/qmail/pop3 //编辑pop3服务的启动脚本 
#!/bin/sh
/usr/local/bin/tcpserver -l songsong.com -U -c 100 -H -R 0 pop3 /var/qmail/bin/qmail-
popup songsong.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
//这里要注意,这三个文件中的命令在一行,可以直接复制,我自己的启动脚本是从我系统copy来的可
用性比较高
#chmod 755 /var/qmail/rc 
#chmod 755 /var/qmail/smtp 
#chmod 755 /var/qmail/pop3 
设置自启动文件
#vi /etc/rc.d/init.d/qmail
#! /bin/sh
# chkconfig: 2345 90 90
# description: qmail (include smtp and pop3) auto start/stop scripts.
/etc/rc.d/init.d/functions
case "$1" in
start)
echo -n "start qmail:"
/var/qmail/rc &
echo "."
echo -n "start smtp service:"
/var/qmail/smtp
echo "."
echo -n "start pop3 service:"
/var/qmail/pop3
echo "."
;;
stop)
echo "stop qmail:"
killall qmail-send
killall splogger
killall tcpserver
;;
*)
exit 1
;;
esac
exit 0
#chkconfig --add qmail
#chkconfig --level  2345 qmail on
以后可以在服务里面启动qmail服务了
#service qmail start
#service qmail stop
运行qmail并测试 
 #/var/qmail/rc 
 #/var/qmail/smtp 
 #/var/qmail/pop3 
 #ps aux | grep "qmail" //查看qmail的服务进程是否已完全正常启动
首先可以使用telnet IP 25和110端口看端口是否正常打开,如果telnet不能正常连接请检查服务是否
正常启动。 
 如果qmail已正常启动,用outlook、foxmail测试qmail的smtp和pop3是否正常,这里我用的foxmail做
的测试,由于我没有mx记录所以在机器里添加host文件,在mail服务器添加hosts文件来解决测试,在
这里只能测试向外网发送邮件,接收邮件可以在自己的服务器建立不同的域,利用不同的域之间可测
试接收、发送功能。注意由于vpopmail支持虚拟域名,所以在outlook中设置邮件帐号时,用户名后要
加上域名,如。smtp是带认证的,在outlook中也要作相应设置。如果qmail出现问题,
可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录,这样容易很快找出问题
 
 
 
 
 
 
 
 
 
 

 
阅读(1533) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-07-23 15:05:18

这个安装过程打补丁包确实很麻烦

chinaunix网友2008-07-23 15:05:18

这个安装过程打补丁包确实很麻烦