个人qmail安装及设定过程,希望对大家有用
1.如何获得Qmail?
可以通过访问www.qmail.org或mirror站点下载qmail-1.03.tar.gz,以及获得
更多qmail的资料.
2安装Qmail
获得qmail-1.03.tar.gz后,用tar命令解包
#tarxzvfqmail-1.03.tar.gz
进入qmail目录后,仔细阅读一下README和INSTALL文件.然后开始编译qmail.
2.1建/var/qmail目录:
#mkdir/var/qmail
2.2按照INSTALL.ids中方法建立qmail用户和组:
#groupaddnofiles
#useradd-gnofiles-d/var/qmail/aliasalias
#useradd-gnofiles-d/var/qmailqmaild
#useradd-gnofiles-d/var/qmailqmaill
#useradd-gnofiles-d/var/qmailqmailp
#groupaddqmail
#useradd-gqmail-d/var/qmailqmailq
#useradd-gqmail-d/var/qmailqmailr
#useradd-gqmail-d/var/qmailqmails
2.3makesetupcheck
2.4阅读INSTALL.ctl和FAQ,配置qmail,最简单的方法是
#./config
或者
#./config-fastyour.full.home.name
2.5建立系统别名
#(cd~alias;touch.qmail-postmaster.qmail-mailer-daemon.qmail-root)
#chmod644~alias/.qmail*
2.6复制/var/qmail/boot/proc到/var/qmail/rc
#cp/var/qmail/boot/proc/var/qmail/rc
2.7开始测试Qmail投递程序
启动qmail:
#csh-cf'/var/qmail/rc%26amp;'
先查看一下/var/log/maillog,搜索
qmail:status:local0/10remote0/20
qmail-send通常是输出"status"或者"cannotstart"如果不能正常启动.
用ps监视一下qmail守护进程,应该有五个相关进程:
qmail-send,以qmails用户运行
qmail-lspawn,以root用户运行
qmail-rspawn,以qmailr用户运行
qmail-clean,以qmailq用户运行
splogger,以qmaill用户运行
本地Mail测试:
%echoto:me|/var/qmail/bin/qmail-inject
注意:要用你的用户名代替me
Mail应该立即出现在你的信箱之中./var/log/maillog中应该有如下记录:
qmail:newmsg53
qmail:infomsg53:bytes246fromqp20345uid666
qmail:startingdelivery1:msg53tolocalme@domain
qmail:status:local1/10remote0/20
qmail:delivery1:success:did_1+0+0/
qmail:status:local0/10remote0/20
qmail:endmsg53
53是inode号,20345是进程号,你的数字应该有所不同.
本地错误测试:
给一个不存在的本地用户发信:
%echoto:nonexistent|/var/qmail/bin/qmail-inject
qmail:newmsg53
qmail:infomsg53:bytes246fromqp20351uid666
qmail:startingdelivery2:msg53tolocalnonexistent@domain
qmail:status:local1/10remote0/20
qmail:delivery2:failure:No_such_address.__#5.1.1_/
qmail:status:local0/10remote0/20
qmail:bouncemsg53qp20357
qmail:endmsg53
qmail:newmsg54
qmail:infomsg54:bytes743fromqp20357uid666
qmail:startingdelivery3:msg54tolocalme@domain
qmail:status:local1/10remote0/20
qmail:delivery3:success:did_1+0+0/
qmail:status:local0/10remote0/20
qmail:endmsg54
你将立即收到弹回的信件.
远程投递测试:向你在其他机器上的账户发信:
%echoto:me@wherever|/var/qmail/bin/qmail-inject
qmail:newmsg53
qmail:infomsg53:bytes246fromqp20372uid666
qmail:startingdelivery4:msg53toremoteme@wherever
qmail:status:local0/10remote1/20
qmail:delivery4:success:1.2.3.4_accepted_message./...
qmail:status:local0/10remote0/20
qmail:endmsg53
投递过程将在startingdelivery和success中有个间断,SMTP传送是相对较慢的
然后去检查一下me@wherever是否正确收到email.
后面还有三个测试,分别测试本地postmaster,两次弹回mail和通过mail执行
命令.具体方法可以在TEST.deliver中找到.
2.8从Sendmail象Qmail转移.
2.8.1首先找到sendmail的启动程序,一般是在/etc/rc.d目录中
看上去象这样的命令:
sendmail-bd-q15m
将其注释掉.
2.8.2杀掉Sendmail进程.
如果sendmail有子进程,可以反复用-STOP和-CONT信号杀,直到没有
子进程后用-TERM后加-CONT杀就可以了.
2.8.3检查mail队列中是否还有信,如果认为有必要将他们发送出去,可以在
以后一段时间不定期的运行sendmail.bak-q直到队列清空.
2.8.4去掉sendmail等文件的setuidbit
#chmod0/usr/lib/sendmail
#chmod0/usr/sbin/sendmail
#chmod0/usr/lib/sendmail.mx
2.8.5
#mv/usr/lib/sendmail/usr/lib/sendmail.bak
#mv/usr/sbin/sendmail/usr/sbin/sendmail.bak
2.8.6将
csh-cf'/var/qmail/rc%26amp;'
添加到启动文件中去.
2.8.7安装qmail的sendmail外壳:
#ln-s/var/qmail/bin/sendmail/usr/lib/sendmail
#ln-s/var/qmail/bin/sendmail/usr/sbin/sendmail
2.8.8在/etc/inetd.conf中设置qmail-smtpd:(是一行)
smtpstreamtcpnowaitqmaild/var/qmail/bin/tcp-env
tcp-env/var/qmail/bin/qmail-smtpd
2.8.9重启动inetd,用-HUP信号杀inetd及可.
2.9.1使用qmail的maildir(这个问题麻烦我好几天)
每个用户目录内:/var/qmail/bin/maildirmake/home/$LOGINNAME/Maildir
2.9.2这一步不做好象也可以
addalineto"/home/uusername/.bash_profile"
MAIL=/home/$LOGINNAME/Maildir/
exportMAIL
2.9.3pop3
去www.qmail.org去下载checkpassword,(这个东西qmail不自带)并编译
inet.conf中的pop-3
pop-3streamtcpnowaitqmaild/var/qmail/bin/qmail-popupmydomain
.com/bin/checkpassword/var/qmail/bin/qmail-pop3d(在一行)
2.9.4rc文件
cp/var/qmail/boot/home/var/qmail/rc
修改rc文件变成如下
execenv-PATH="/var/qmail/bin:$PATH"
qmail-start./Maildir/sploggerqmail
3qmail的一些特殊配制
3.1如何设置SmartHost:
#echo":your.smart.host"/var/qmail/control/smtproutes
3.2为其它主机转信
在/var/qmail/control/rcpthosts添加
21cn.com
163.com
3.3设置主机多个域名
将名称加入/var/qmail/control/local,/var/qmail/control/rcpthosts
/var/qmail/control/me
3.4别名
本机不存的的进行转发
如:webmaster@my.com(webmaster用户本地不存在)转发给user1@my.com(user1为
本地用户)
方法:
echo"user1"/var/qmail/alias/.qmail-webmaster
或
echo"user1@21cn.com"/var/qmail/alias/.qmail-webmaster
完全的email地址
3.5群发mailist
假如发信给list@my.com时同多人可编辑
/var/qmail/alias/.qmail-list内添加
user1
user2
user3
uu@21cn.com
ss@163.net
3.6本地用户扩展
user1,q1,,qq为本地用户user1-s1,user1-s2,user1-xxx不是本地用户
设定发信给:user1-s1转为q1,user1-s2转为,
user1-21转为dd@21cn.com,user1-list转为dd@21cn.com,q1,,qq
user1-xxx(xxx表示其它名称)转为qq,
echo"q1"/home/user1/.qmail-s1
echo"qd@21cn.com"/home/user1/.qmail-21
echo""/home/user1/.qmail-s2
echo"qq"/home/user1/.qmail-default
编辑/home/user1/.qmail-list内容为
dd@21cn.com
q1
3.7如何设置虚拟主机
如:
虚拟主机ttt.com设定webmaster@ttt.com转给本地用户tttweb
设定help@ttt.com转给外地用户help@other.com
设定其它@ttt.com转给本地用户tttother
方法:
(1)将虚拟主机ttt.com加入/var/qmail/control/local和/var/qmail/control/rcpthosts
(2)然后在/var/qmail/control/virtualdomains中加入
your.virtual.domains:tttcom
(3)加一个用户tttcom
addusertttcom
这样所有发往me@ttt.com都将以testcom-me@test.com
的形式发给testcom,
(4)echo"tttweb"/home/testcom/.qmail-webmaster
echo"help@other.com"/home/testcom/.qmail-help
echo"tttother"/home/testcom/.qmail-default
(5)从新启动qmail
3.8抄送
如:发信给user1@red.lx,同时抄送给user2,dd@21cn.com
方法:编辑/home/user1/.qamil内容如下
./Maildir/
|forwarduser2dd@21cn.com
3.9转信
user1@red.lx转向dd@163.net
方法:编辑/home/user1/.qamil内容如下
dd@163.net
3.10如何设置qmail为对外smtp服务器?(去掉转信和发信的限止)
去掉/var/qmail/control/rcpthosts文件
,