简介
Qmail搭建文档可以基于Redhat AS3 & Qmail实现以下功能:
- iGenus admin (Web Mail管理系统)
以上配置能够满足中小型企业的日常需求。
功能列表:
- SMTP服务器:SMTP-AUTH认证(Plain,Login,CRAM-MD5),TLS(SSL)支持
- POP3服务器:CRAM-MD5,APOP,和SSL支持
安装准备
1)推荐在Red Hat Enterprise Linux Advanced Server 3.X或Red Hat Linux 9.0中部署本邮件系统。在AS4中测试时,发现反垃圾部分由于缺少一个RPM包(在AS4安装光盘中无法找到),因而反垃圾功能未能实现。另外,在开始部署本邮件系统之前请务必确认您的系统中已经部署完成Apache+PHP+MySQL,否则Webmail和Web管理无法安装!
要确认下面的软件是否已经安装:
rpm -q gdbm
rpm -q gdbm-devel
rpm -q openssl
rpm -q openssl-devel
rpm -q stunnel
rpm -q krb5-devel
如果你还没有安装, 请先安装它们. 你可以到安装光盘或是在这里找到它们的RPM包 http://www.rpmfind.net
如果设置了防火墙,要打开服务器的www 80、smtp 25和pop3 110三个端口。
2)卸载已有的邮件系统,确认没有SMTP/POP/IMAP服务在运行:
/etc/init.d/sendmail stop
netstat -na | grep 25
netstat -na | grep 110
netstat -na | grep 143
ntsysv
3)删除已有的SMTP/POP/IMAP软件:
rpm -e --nodeps sendmail
rpm -e --nodeps postfix
4)下载软件
我把下文中所提到的软件打成了一个包,下载地址为:http://nanu.8866.org/qmail.tar.gz,我一般把软件放在/usr/local/qmail_src下面,根据个人习惯吧。
cd /usr/local/qmail_src
tar xzvf qmail.tar.gz
cd Qmail
tar xzvf netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh
注意:./collate.sh这一步不要忘
安装软件
1)daemontools
daemontools是一个收集管理UNIX进程的工具.用它来监听qmail-send,qmail-smtpd,qmail-pop3d.
安装:
cd /usr/local/qmail_src/Qmail
tar -zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /usr/local/qmail_src/Qmail/netqmail-1.05/
other-patches/daemontools-0.76.errno.patch
package/install
验证daemontools已经正常运行:
sleep 5
ps ax | grep svscan
2)ucspi-tcp
ucspi-tcp包括tcpserver和tcpclient,一个命令行工具来建立client-server应用程序.
安装:
cd /usr/local/qmail_src/Qmail
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
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
3)qmail
这个toaster补丁,是下面这几个补丁的组合:
smtp auth 0.4.2
qmail-queue (to allow for virus scanners)
maildir++ patch
support oversize dns packets (not necessary if you use dnscache)
mfcheck (check that the envelope sender has a dns entry)
tarpit delay
qregex (regular expression matching in badmailfrom and badmailto)
big concurrency (set the spawn limit above 255)
安装:
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 qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
在这里把vpopmail用户也加上
groupadd -g 89 vchkpw
useradd -u 89 -g vchkpw vpopmail
cd /usr/local/qmail_src/Qmail
tar -xzf toaster-scripts-0.6.tar.gz
cd netqmail-1.05/
bunzip2 -c ../qmail-toaster-0.6-1.patch.bz2 | patch -p0
cd netqmail-1.05
注:在RedHat上,需要为TLS补丁链接一个include文件:
ln -s /usr/kerberos/include/com_err.h /usr/kerberos/include/
krb5.h /usr/kerberos/include/profile.h /usr/include/
vi qmail-smtpd.c \ 搜索函数straynewline中的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.",告诉对方的服务器不要再发这封无效的信件。
4)make
make setup check
用你自己的主机名代替下面的mail.domain.com
./config-fast mail.domain.com
cd /var/qmail/alias
touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
chmod 644 /var/qmail/alias/.qmail*
cd -
echo 1 > /var/qmail/control/mfcheck
echo ./Maildir/ >/var/qmail/control/defaultdelivery
make cert
按提示输入公司信息
make tmprsadh
注:这里可能要多等一会
用"crontab -e"在crontab里增加下面这条,每天晚上更新temp keys
crontab -u root -e
01 01 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1
5)为qmail服务建立监控目录和日志文件:
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
mkdir -p /var/qmail/supervise/qmail-pop3ds/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-pop3ds/log
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/send.run /var/qmail/supervise/qmail-send/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/send.log.run /var/qmail/supervise/qmail-send/log/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
mkdir -p /var/log/qmail/pop3ds
chown -R qmaill /var/log/qmail
6)启动脚本:
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/rc /var/qmail/
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/qmailctl /var/qmail/bin/
chmod 755 /var/qmail/rc
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
7)用daemontools来启动qmail-send和qmail-smtpd
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
8)命令:
启动,停止,重启,查看队列等
qmailctl start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help
9)检查服务
netstat -an | grep 25
ps -ef | grep qmail
ps -efl | grep "service errors" | grep -v grep
10)日志:
/var/log/maillog
/var/log/qmail/current
/var/log/qmail/pop3d/current
/var/log/qmail/pop3ds/current
/var/log/qmail/smtpd/current
vpopmail的安装
1)定义
vpopmail是一个以qmail为基础的虚拟域管理包
vpopmail的用户和组我们前边已经建立了
2)配置
mkdir -p /home/vpopmail/etc
a.设置默认域,红色部份改成你要设置的域。
echo "domain.com" > /home/vpopmail/etc/defaultdomain
b.设置smtp规则,关闭open relays
echo '127.0.0.1:allow,RELAYCLIENT=""' > /home/vpopmail/etc/tcp.smtp
cd /home/vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
c.设置MySQL信息,第一个vpopmail是帐号,xukixu为密码,第二个vpopmail是数据库
echo "localhost|0|vpopmail|xukixu|vpopmail" > /home/vpopmail/etc/vpopmail.mysql
chmod 640 /home/vpopmail/etc/vpopmail.mysql
chown -R vpopmail.vchkpw /home/vpopmail/etc
d.在MySQL里添加vpopmail的帐号
mysql -uroot --pxukixu
> CREATE DATABASE vpopmail;
> GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmail@localhost IDENTIFIED BY 'xukixu';
> FLUSH PRIVILEGES;
> QUIT
3)安装:
cd /usr/local/qmail_src/Qmail
tar zxvf vpopmail-5.4.7.tar.gz
cd vpopmail-5.4.7
4)带数据库支持
./configure --enable-incdir=/usr/local/mysql/include
--enable-libdir=/usr/local/mysql/lib --disable-roaming
-users --enable-logging=p --disable-passwd --enable-
clear-passwd --disable-domain-quotas --enable-auth-
module=mysql --enable-auth-logging --enable-mysql-
logging --disable-valias --disable-mysql-limits
make
make install-strip
5)管理:
echo 'export PATH=$PATH:/home/vpopmail/bin' >> /etc/profile
source /etc/profile
a.添加域,红色部份前面是域名,后面是管理员(postmaster)密码
vadddomain domain.com xukixu
b.添加用户,红色部份为注解,不用输入
vadduser -q 10485760S(邮箱大小) xukixu@domain.com(邮箱帐号) 1234(密码)
vmoduser -c 许靖(邮箱描述) xukixu@domain.com
c.设置邮箱容量达到90%的警告信息
vi /home/vpopmail/domains/.quotawarn.msg
From: 邮箱管理员
Reply-To: postmaster@domain.com
To: 邮箱用户
Subject: 邮箱空间警告
Mime-Version: 1.0
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: base64
您的邮箱空间已经达到90%.如果想继续使用,请删除一些信件.
如果需要帮助,请联系邮箱管理员:
Email : postmaster@domain.com
6)设置邮箱已满的警告信息
echo "邮件被拒绝,用户的邮箱空间已满." > /home/vpopmail/domains/.over-quota.msg
7)启动脚本:
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/vpopmailctl /var/qmail/bin
ln -s /var/qmail/bin/vpopmailctl /usr/bin
chmod 755 /var/qmail/bin/vpopmailctl
8)用daemontools来启动qmail-pop3d和qmail-pop3ds
ln -s /var/qmail/supervise/qmail-pop3d /service
ln -s /var/qmail/supervise/qmail-pop3ds /service
9)命令:
vpopmailctl start|stop|restart|stat|pause|cont|help
10)检查服务
netstat -an | grep 110
ps -ef | grep qmail
ps -efl | grep "service errors" | grep -v grep
11)带数据库支持
cd /usr/local/qmail_src/Qmail/netqmail-1.05/netqmail-1.05
patch -p0 < /usr/local/qmail_src/Qmail/chkuser-0.6.mysql.patch
12)修改libmysqlclient.a存在路径
vi conf-mysql
/usr/local/mysql/lib/libmysqlclient.a
make clean
make
qmailctl stop
make setup check
qmailctl start
13)安装选项参考:
vpopmail 5.4.7
Current settings
------------------------------------------------------
vpopmail directory = /home/vpopmail
uid = 89
gid = 89
roaming users = OFF --disable-roaming-users (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON --enable-make-seekable (default)
clear passwd = ON --enable-clear-passwd (default)
user dir hashing = ON --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
ip alias = OFF --disable-ip-alias-domains (default)
domain quotas = OFF --disable-domainquotas (default)
auth module = mysql --enable-auth-module=mysql
mysql replication = OFF --disable-mysql-replication (default)
mysql logging = ON --enable-mysql-logging
mysql limits = OFF --disable-mysql-limits (default)
MySQL valias = OFF --disable-valias (default)
auth inc = -I/usr/include/mysql
auth lib = -L/usr/lib/mysql -lmysqlclient -lz -lm
system passwords = OFF --disable-passwd (default)
pop syslog = show failed attempts with clear text password
--enable-logging=p
auth logging = ON --enable-auth-logging (default)
all domains in one SQL table = --enable-many-domains (default)
14)POP3和SMTP测试
用outlook测试qmail的smtp和pop3是否正常,注意由于vpopmail支持虚拟域名,所以在outlook中设置邮件帐号时,用户名后要加上域名,如demo@demo.com。smtp是带认证的,在outlook中也要作相应设置。建议先测试正常
后再进行下一步安装。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录,这样容易很快找出问题。
安装并运行igenus
到这里 (http://www.igenus.org)下载最新的安装包,我用的是igenus_2.0.2_20040901_release.tgz
1)安装:
cd /usr/local/qmail_src/Qmail
tar zxvf igenus_2.0.2_20040901_release.tgz -C /var/www/
cd /var/www/
rm -rf html/
mv igenus html
2)建temp文件夹
cd /var/www/html/
mkdir temp
chmod -R 0755 temp
chown -R vpopmail:vchkpw temp
mkdir /home/netdisk
chmod -R 0755 /home/netdisk
chown -R vpopmail:vchkpw /home/netdisk
chmod -R 0755 /var/www/html/
chown -R vpopmail:vchkpw /var/www/html/
3)修改httpd.conf
vi /etc/httpd/conf/httpd.conf
Group vchkpw
User vpopmail
DocumentRoot "/var/www/html/"
/etc/rc.d/init.d/httpd restart //重启apache,使修改生效
4)修改config_inc.php文件
cd /var/www/html/config
vi config_inc.php
$CFG_BASEPATH = "/var/www/html/"; \\改成你安装的目录
$CFG_MYSQL_HOST = 'localhost';
$CFG_MYSQL_USER = 'vpopmail'; \\vpopmail访问mysql的帐号
$CFG_MYSQL_PASS = 'xukixu'; \\vpopmail访问mysql的密码
$CFG_MYSQL_DB = 'vpopmail'; \\数据库
$CFG_TEMP = $CFG_BASEPATh."/temp"; \\改成你安装的目录的当前目录下
5)重新编制Mysql数据库表格
a.删除之前创建的域名
vdeldomain domain.com
b.编辑数据库:
mysql -uroot -pxukixu
use vpopmail;
drop table lastauth;
drop table vpopmail;
quit;
c.编辑/var/www/html/docs/iGENUS.sql
vi /var/www/html/docs/iGENUS.sql
# phpMyAdmin SQL Dump
# version 2.5.3
# http://www.phpmyadmin.net
#
# Host: localhost
# Generation Time: Jun 04, 2004 at 11:26 AM
# Server version: 3.23.55
# PHP Version: 4.3.0
#
# Database : `vpopmail`
#
# --------------------------------------------------------
#
# Table structure for table `address`
#
use vpopmail; //加入这一行
CREATE TABLE `address` (
`id` int(11) unsigned NOT NULL auto_increment,
`pw_id` int(5) NOT NULL default '0',
`name` varchar(64) NOT NULL default ,
`email` varchar(128) NOT NULL default ,
UNIQUE KEY `id` (`id`),
KEY `pw_id` (`pw_id`)
) TYPE=MyISAM PACK_KEYS=1 ;
# --------------------------------------------------------
。。。。。。。。。
。。。。。。。。。。
CREATE TABLE `vpopmail` (
`pw_id` int(5) unsigned NOT NULL auto_increment,
`pw_name` varchar(32) NOT NULL default ,
`pw_domain` varchar(64) NOT NULL default ,
`pw_passwd` varchar(40) NOT NULL default ,
`pw_uid` int(11) default NULL,
`pw_gid` int(11) default NULL,
`pw_gecos` varchar(48) default NULL,
`pw_dir` varchar(255) default NULL,
`pw_shell` varchar(20) default NULL,
`pw_clear_passwd` varchar(16) default NULL, \\加入这一行
`createtime` timestamp(14) NOT NULL,
PRIMARY KEY (`pw_id`),
KEY `pw_name` (`pw_name`,`pw_domain`)
) TYPE=MyISAM PACK_KEYS=1 ;
6)运行
mysql -uroot -pxukixu </var/www/html/docs/iGENUS.sql 导入数据表。
7)设置igenus 定义允许上传下载的邮件的大小
vi /etc/php.ini
a.编辑/etc/php.ini
max_execution_time=60
memory_limit=20M
post_max_size = 10M
file_uploads=on
upload_max_filesize=10M
register_globals=On
session.bug_compat_42=0
session.bug_compat_warn=0
sendmail_path = /var/qmail/bin/qmail-inject
vi /etc/httpd/conf/httpd.conf
b.编辑/etc/http/conf/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mail.domain.net
DocumentRoot /var/www/html
</VirtualHost>
8)重启apache:
service httpd restart
9)如果需要,用vadddomain和vadduser添加新域名和新用户。
最后打开浏览器,输入http://domain.com/, 就可以访问网站了
10)Qmail限制附件的大小
在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对qmail附件大小的限制,一般安装完成后,这个文件是没有的,你可以自己创建。
smtp方式是以qmail的databytes作限制的
创建databytes并设置邮件最大为4m
echo 4000000 >/var/qmail/control/databyte
11)限制单域的邮箱数量
vi /home/vpopmail/domains/domain.com/.qmailadmin-limits
maxpopaccounts 200
default_quota 52428800s
chmod 700 /home/vpopmail/domains/domain.com/.qmailadmin-limits
chown vpopmail:vchkpw /home/vpopmail/domains/domain.com/.qmailadmin-limits
这样就把邮箱总数限制在200个,每个邮箱为50M了
12)用qmail封mail from
vi /var/qmail/control/badmailfrom
这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起qmail就能生效。例如:
peng@96633.net -----限制一个特定的用户
@sina.com -----限制整个域中的邮件