中小企业服务器配置方案(邮件服务器)
汤海京 (投稿)
第四章 邮件服务器
第一节 Sendmail服务器
& 1.1 简介
邮件服务是用户所需要的最重要的网络服务。Web的通信量很大,但邮件主要用于个人之间的通信,而人-人的通信是商务的基础。没有邮件服务的网络是不完整的网络。换句话说,如果不能给用户提供完整的TCP/IP下的邮件支持,这样的网络操作系统也不值得信赖。
配置sendmail是一件大而复杂的工作,但也不完全都是这样,与其他一些网络服务器系统只安装SMTP服务器软件的情况相比,Linux已经配置好了多数的设置。在多数系统下,缺省配置都能良好的运行。我将在本章中给出一些配置的建议,主要的一些配置参数建议大家不要随意更改。
(LinuxByte下载Sendmail)
& 1.2 所需资源
&1.2.1 所需包
RedHat6.2 服务器安装
&1.2.2 所需配置文件
/etc/sendmail.cf 系统自带,管理员配置
/etc/sendmail.cw 系统自带,管理员配置
& 1.3 配置方案
1./etc/sendmail.cf
说明:sendmail主配置文件
控制sendmail运行时的配置。完整的sendmail配置应该包括7部分:
Local Info(本地信息):这部分定义了本地主机的信息
Options(选项):用来设置定义sendmail环境的选项。
Message Precedence(消息的优先级):sendmail消息优先级
Trusted Users(信任用户):定义发送邮件时允许改变发送地址的用户
Format of Headers(头格式):定义在sendmail中插入的邮件头信息
Rewriting Rules(改写规则):这部分保存着改写邮件地址命令使用该命令可以将邮件地址从用户邮件程序的地址形式改写为邮件发送程序所需要的地址形式。
Mailer Definition(邮寄者说明):定义发送邮件的程序,改写规则是邮件者使用的规则,在本部分定义。
源文件:
V8/Berkeley
Cwlocalhost
Fw /etc/sendmail.cw
CP.
DYuunet.uu.net
CPUUCP
DS mail.weboa.com.cn
CO @ % !
C..
C[[
Kmailertable hash -o /etc/mail/mailertable
#制作db库
Kdomaintable hash -o /etc/mail/domaintable
Kgenerics hash -o /etc/mail/genericstable
Kvirtuser hash -o /etc/mail/virtusertable
Kaccess hash -o /etc/mail/access
Kmxserved bestmx -z: -T
Kresolve host -a -T
FR-o /etc/mail/relay-domains
DR
DH
Kdequote dequote
CM root
DM mail.weboa.com.cn
#设置邮件服务器名称
DnMAILER-DAEMON
CPREDIRECT
DZ8.9.3
O SevenBitInput=False
O EightBitMode=pass8
O AliasWait=10
O AliasFile=/etc/mail/aliases,/etc/mail/majordomo
O MinFreeBlocks=100
#规定最小空闲块
O MaxMessageSize=1000000
#指定用户一次最大发送的邮件大小
O BlankSub=.
O HoldExpensive=False
O DeliveryMode=background
O AutoRebuildAliases=true
O TempFileMode=0600
O HelpFile=/etc/mail/sendmail.hf
O SendMimeErrors=True
O ForwardPath=$z/.forward.$w:$z/.forward
O ConnectionCacheSize=2
O ConnectionCacheTimeout=5m
O UseErrorsTo=False
O LogLevel=9
#记录到日志文件的事件等级
O CheckAliases=False
O OldStyleHeaders=True
O PrivacyOptions=authwarnings,noexpn,novrfy
O QueueDirectory=/var/spool/mqueue
O Timeout.queuereturn=4d
O Timeout.queuewarn=4h
O SuperSafe=True
O StatusFile=/var/log/sendmail.st
O DefaultUser=8:12
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
O UnixFromLine=From $g $d
O OperatorChars=.:%@!^/[]+
Pfirst-class=0
Pspecial-delivery=100
Plist=-30
Pbulk=-60
Pjunk=-100
Ft -o /etc/mail/sendmail.ct
Troot
Tdaemon
Tuucp
R$* $#error $@ 5.7.1 $: "550 Relaying denied"
#以上是Linux默认的选项,不允许客户机使用mail服务器收发邮件,如果允许客户机收发的话应将上边一句话改成
R$- $@ok
#注意:中间是两个tab键
#一下是邮件头信息
H?P?Return-Path: <$g>
HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
H?D?Resent-Date: $a
H?D?Date: $a
H?F?Resent-From: $?x$x <$g>$|$g$.
H?F?From: $?x$x <$g>$|$g$.
H?x?Full-Name: $x
H?M?Resent-Message-Id: <$t.$i@$j>
H?M?Message-Id: $t.$i@$j
#以上是邮件头信息
2.管理员需要执行touch /etc/mail/aliases 和 touch /etc/mail/majordomo来创建两个文件,然后重新启动sendmail,利用sendmail.cf里生成db库的配置来生成两个库文件:aliases.db和majordomo.db;当然,管理员也可以通过执行makemap hash mailertable < mailertable来生成新的db,这样可以不重新启动。
& 1.4 测试及管理办法
&1.4.1 测试方法
1.管理员可以通过执行/etc/rc.d/init.d/sendmail restart来使更改的
配置生效。
2.管理员通过执行 fetchmail –u yourname yourserver 来为没有邮件用
户制定他们的口令,用户需要在客户端作相应的设置。
3.管理员应该打开pop3服务,即更改配置文件
3. 管理员在服务器上可以通过执行 echo test | /usr/sbin/sendmail \
– v [email protected]来测试建立好的邮件用户是否能够正常工作。
& 1.5 小结
其实我们只要设置其中的几个地方就可以实现mail服务器的功能,这是因为sendmail有很强的适用性,并且它是在不断更新的。所以现在提供给我们的sendmail的配置方案已经经过实践检验,不需要管理员做太大改动,就可以实现强大的sendmail功能。
第二节 Qmail服务器
& 2.1 简介
Qmail是一种可以完全替代Sendmail-binmail体系的新一代Unix邮件系统.Qmail与Sendmail比起来有很多特性,包括:
安全----Qmail将Mail处理过程分为多个过程,尽力避免用root用户
运行.同时Qmail禁止对特权用户(root,deamon等)直接发
信.
可靠----Qmail的直接投递保证Email在投递过程中不会丢失.
Qmail同时支持新的更可靠的信箱格式Maildir,保证系统在
突然崩溃情况下不至破坏整个信箱.
高效----在运行于奔腾的BSD/OS上,Qmail每天可以轻松的投递200000
封信件.
简单----Qmail要比其他的Internet Mail系统小得多.Qmail通过统
一的向前机制完成forwarding,alias和maillist等功
能,Qmail使用简单高效队列来处理投递.Qmail-smtpd可以由
inetd启动,节省了一定资源.
Qmail支持: host and user masquerading
full host hiding
virtual domains
null clients
list-owner rewriting
relay control
double-bounce recording
arbitrary RFC 822 address lists
cross-host mailing list loop detection
& 2.2 所需资源
(LinuxByte下载qmail,其它软件大多数都可以在LinuxByte找到,需要的话请使用LinuxByte搜索引擎查找)
&2.2.1 所需包
qmail-1.03.tar.gz Qmail基本系统包
ucspi-tcp-0.88.tar.gz tcpserver等服务程序
daemontools-0.70.tar.gz 监视工具
checkpassword-0.90.tar.gz pop3验证用户程序
vpopmail-4.9.8.tar.gz 虚拟域用户pop3支持
vqsignup-0.4 web方式用户注册
sqwebmail-1.2.4.tar.gz webmail
qmailadmin-0.42.tar.gz 虚拟域web方式管理
ezmlm-0.53.tar.gz 邮件列表管理
autorespond-1.0.0.tar.gz 自动回复程序
&2.2.2 下载网址
http://www.qmail.org
http://www.inter7.com/qmail
& 2.3 安装过程
2.2.1 安装Qmail基本包
(1)添加Qmail所必须的用户和组
mkdir /var/qmail
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 nofiles -d /var/qmail qmailq
useradd -g nofiles -d /var/qmail qmailr
useradd -g nofiles -d /var/qmail qmails
(2)安装Qmail包
cd /usr/local/src
tar xvzf qmail-1.03.tar.gz
cd qmail-1.03
make setup check
./config-fast $HOSTNAME
# 设定Qmail服务器主机名
cd ~alias;touch .qmail-postmaster .qmail-mailer-\
daemon .qmail-root
sed s/Mailbox/Maildir\// /var/qmail/boot/home >\
/var/qmail/rc
chmod 755 /var/qmail/rc
2.2.2 安装tcpserver等服务程序
cd /usr/local/src
tar xvzf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check
2.2.3 安装pop3验证用户程序
cd /usr/local/src
tar xvzf checkpasswd-0.90.tar.gz
cd checkpasswd-0.90
make
make setup check
chmod og-rx /bin/checkpassword
2.2.4 安装虚拟域用户pop3支持
groupadd vchkpw
useradd -g vchkpw vpopmail
mkdir ~vpopmail/etc
echo "127.0.0.:allow,RELAYCLIENT=\"\"" > ~vpopmail/etc/tcp.smtp
echo "192.168.0.:allow,RELAYCLIENT=\"\"" >> ~vpopmail/etc/tcp.smtp
echo ":allow" > /etc/tcp.smtp
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
cd /usr/local/src
tar xvzf vpopmail-4.9.8.tar.gz
cd vpopmail-4.9.8
make clean
./configure --enable-hardquota=10485760 --enable-deliver-filter=y
make
make install-strip
cd /home/vpopmail/bin
./vadddomain weboa.com.cn weboa
./vadduser [email protected] thj
2.2.5 更改Sendmail为Qmail
killall -TERM sendmail
mv /usr/lib/sendmail /usr/lib/sendmail.org
mv /usr/sbin/sendmail /usr/sbin/sendmail.org
mv /etc/rc.d/init.d/sendmail /etc/rc.d/init.d/sendmail.org
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
cp /root/qmail/qmail-start /etc/rc.d/init.d/ -f
cp /root/qmail/databytes /var/qmail/control/ -f
ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S98qmail
2.2.6 制作Qmail控制脚本
#!/bin/sh
case "$1" in
start)
echo "start qmail:"
/var/qmail/rc &
echo "start smtp service:"
/usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger \
smtpd 3 &
echo "start pop3 service:"
/usr/local/bin/tcpserver -H -R 0 pop3 /var/qmail/bin/ \
qmail-popup $HOSTNAME /home/vpopmail/bin/vchkpw \
/var/qmail/bin/qmail-pop3d Maildir & \
;;
stop)
echo "stop qmail:"
killall -9 tcpserver
killall -9 qmail-lspawn
;;
*)
exit 1
;;
esac
exit 0
2.2.7 安装监视工具
cd /usr/local/src
tar zxvf daemontools-0.70.tar.gz
cd daemontools-0.70
make
make setup check
#执行文件将安装于/usr/local/bin中。
#安装本工具后可以用 # mkdir /var/run/qmail
# supervise /var/run/qmail /var/qmail/rc
来启动qmail,还可以用svc来关闭或重启qmail,用svstat监视
qmail运行情况
2.2.8 Qmail之Web解决方案
(1) 安装邮件列表管理
cd /usr/local/src
tar zxvf ezmlm-0.53.tar.gz
make
make man
make setup
(2) 安装自动回复程序
cd /usr/local/src
tar zxvf daemontools-0.70.tar.gz
gcc -Wall -o autorespond autorespond.c
cp autorespond /usr/local/bin/autorespond
(3) 安装虚拟域web方式管理
cd /usr/local/src
tar zxvf qmailadmin-0.42.tar.gz
cd qmailadmin-0.42.tar.gz
在安装前首先要考虑满足以下几项要求:
a.是否拥有一个vpopmail用户vchkpw
b.cgi-bin目录的所在位置
c.ezmlm目录的所在位置
d.autorespond目录的所在位置
如果能够达到以上要求,可以继续安装
./configure
make
make install-strip
检测安装是否正确:浏览器中打开路径
http://mail.weboa.com.cn/cgi-bin/qmailadmin,
看根据前面设置的用户和密码是否能够成功登录进去。
(4) 安装WebMail包
cd /usr/local/src
tar zxvf sqwebmail-1.2.4.tar.gz
cd sqwebmail-1.2.4.tar.gz
./configure --without-authpam --without-authuserdb \
enable-webpass=no --without-authpwd \
--without-authshadow
make configure-check
make
#当make时报错找不到db.h
可以 cp /usr/include/db1/db.h /usr/include/db.h
make check
make install-strip
make install-configure
检测安装是否正确:浏览器中打开路径
http://mail.weboa.com.cn/cgi-bin/sqwebmail
(5) 安装vqsignup
tar xvfz vqsignup-0.4.tar.gz
cd vqsignup-4.0
a. 修改Makefile文件:
FLAGS=-I/home/vpopmail/include
修改-I/home/vpopmail/include指到真实的vpopmail/include目录
修改下面的这行
$(CC) $(FLAGS) -o $(BIN) $(OBJS) -L/home/vpopmail/lib -lvpopmail -lcrypt
修改 -L/home/vpopmail/lib 为真的vpopmail lib的目录
b. 编译
make
c. 安装
拷贝signup.cgi和signup.conf文件到cgi-bin目录下
切换目录到cgi-bin目录下
chown vpopmail signup.cgi
chgrp vchkpw signup.cgi
chmod ug+s signup.cgi
chmod ugo+r signup.conf
拷贝vqsignup_html目录到cgi-bin目录下,确信对所有
用户可读
拷贝vqsignup.html文件到DocumentRoot目录下,确信
能够被访问。编辑cgi-bin目录下的vqsignup.conf文件
修改"add_domain"的所有行,加上你的真实的域,把其他
的行删除掉.更改vqsignup_text/*.html文件,使包含"result_*"的行的路径指到正确的全路经。
修改vqsignup_text目录下所有的文件,使它们只包含你
想支持的域,你也可以定制这些页面,使它们更加好看些。
修改DocumentRoot目录下vqsignup.html文件,使它只
包含你想支持的域,你也可以定制这个页面,使它更加好
看些。
d. 测试
用你的浏览器访问http://your web server/your sub dir/vqsignup.htm, 试着注册新用户,如果成功的话,
那么就恭喜你了。如果有错误,请返回安装步骤仔细查看文件的权限和vqsignup.html里的值是否正确。
& 2.4 其他参考资料
Adam McKenna所编写qmail-HOWTO
http://www.flounder.net/qmail/qmail-howto.html
qmail FQA (內含于qmail 1.03 Source Code)
http://www.qmail.org/
http://www.linuxaid.com.cn/solution/上有几篇比较好的安装文档
http://www.linuxforum.net/cgi-bin/perl/wwwthreads.pl上的qmail讨
论也不错
& 2.5小结
Qmail配置工作虽然较Sendmail来说已经大大简化,但要想真正建立一个功能强大、运行稳定的邮件服务器,掌握其灵活的配置,认真阅读其How-to和FAQ还是极有必要的。关于Dot-forward、邮件列表等其他非常有用的方法和使用技巧,限于篇幅就不再介绍了,建议大家参考软件包中的有关文档。
发布人:netbull 来自: