qmailrocks 安装指南 -(网上最全并有后期升级维护的qmail应用打包解决方案)

本文档参考
[url]http://www.qmailrocks.com/introduction.htm[/url]
网上最全的带后期升级维护的qmail应用打包解决方案,本文结合实际经验写出以下文档。
删除队列 find /var/qmail/queue/$i -type f -exec rm {} \;   

Qmailrocks.org Pre-Installation Checklist

需要预先安装的软件
  Apache,PHP,Perl,GCC,MySQL-Client,MySQL-Server,MySQL-Devel,OpenSSL,OpenSSL-devel,libssl-dev,wget,patch & patchutils
不需要的软件
  Postfix,任何POP服务,任何SMTP服务
Perl需要安装哪些模块
  Digest::SHA1
  Digest::HMAC
  Net::DNS
  Time::HiRes
  HTML::Tagset
  HTML::Parser
需要打开的端口:
     流出端口: 25SMTP,110POP,143IMAP,783SPAMASSASSIN,993IMAPS
     流入端口:25SMTP,80HTTP,110POP,143IMAP,443HTTPS,783SPAMASSASSIN,993IMAPS
###########################################################
下载需要的软件
mkdir /downloads
cd /downloads
wget [url]http://www.qmailrocks.org/downloads/qmailrocks.tar.gz[/url]
tar zxvf qmailrocks.tar.gz
###########################################################
环境初始化脚本:
/downloads/qmailrocks/scripts/install/qmr_install_linux-s1.script
如果这个脚本正常运行,表示帐户,组,权限,目录等安装环境已经具备,否则需要手工建立

qmail的补丁,qmailrocks已经把qmail的相关补丁集合为1个整体大补丁。
/downloads/qmailrocks/scripts/util/qmail_big_patches.script
正常运行后表示qmail补丁全部打齐全了 。
安装SMTP认证补丁
下载软件并且解开http://qmail.org/qmail-auth-20010105.tar.gz
2:cp README.auth base64.c base64.h ../qmail-1.03
patch -d ../qmail-1.03 < auth.patch

下面开始安装qmail
cd /usr/src/qmail/qmail-1.03
make man && make setup check
./config-fast your_fqdn_hostname (ex: ./config-fast mail.mydomain.com)
make cert
Country Name (2 letter code) [GB]:US
State or Province Name (full name) [Berkshire]:Georgia
Locality Name (eg, city) [Newbury]:Atlanta
Organization Name (eg, company) [My Company Ltd]:qmailrocks.org
Organizational Unit Name (eg, section) []:mail
Common Name (eg, your name or your server's hostname) []:mail.qmailrocks.org
Email Address []:postmaster@thisdomain.org
证书的位置:/var/qmail/control/servercert.pem
证书的快捷方式:/var/qmail/control/clientcert.pem
设置证书的权限:chown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem


安装  ucspi-tcp...
cd /usr/src/qmail/ucspi-tcp-0.88/
RH 9/RHEL/Fedora/Slackware 用户需要安装补丁
patch < /downloads/qmailrocks/patches/ucspi-tcp-0.88.errno.patch
cd /usr/src/qmail/ucspi-tcp-0.88/
make && make setup check

安装daemontools....
cd /package/admin/daemontools-0.76/src
RH 9/RHEL/Fedora/Slackware 用户需要安装补丁
patch < /downloads/qmailrocks/patches/daemontools-0.76.errno.patch
cd /package/admin/daemontools-0.76
package/install

ps -aux 可以看到svs进程启动了

###########################################################
安装EZmlm
cd /downloads/qmailrocks/
tar zxvf ezmlm-0.53-idx-0.41.tar.gz
cd ezmlm-0.53-idx-0.41
make && make setup
###########################################################
安装自动回复
cd /downloads/qmailrocks
tar zxvf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5
make && make install
###########################################################
安装Vpopmail    

Vpopmail with MySQL
mkdir ~vpopmail/etc
chown vpopmail:vchkpw ~vpopmail/etc

echo "localhost|0|vpopmailuser|password|vpopmail" > ~vpopmail/etc/vpopmail.mysql
chmod 640 ~vpopmail/etc/vpopmail.mysql
mysql -u root -p
CREATE DATABASE vpopmail;
GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmailuser@localhost IDENTIFIED BY '123';
quit
mysql -u vpopmailuser -p 测试登录一下

cd /downloads/qmailrocks
tar zxvf vpopmail-5.4.13.tar.gz
cd vpopmail-5.4.13
./configure --enable-logging=p --enable-auth-module=mysql --disable-many-domains --enable-sql-logging --enable-valias
make && make install-strip
注意: 如果你用的是gcc3.x 可能出错:
In file included from vconvert.c:35:
vmysql.h:53:22: missing terminating " character
vmysql.h:60:35: missing terminating " character
make[2]: *** [vconvert.o] Error 1
如果出错,打补丁 patch < /downloads/qmailrocks/patches/vmysql.patch
再make;make install
###########################################################
安装Vqadmin
cd /downloads/qmailrocks
tar zxvf vqadmin-2.3.6.tar.gz
cd vqadmin-2.3.6
./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html
make && make install-strip
修改httpd.conf
<Directory "/var/www/cgi-bin/vqadmin">
deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow
</Directory>

cd /var/www/cgi-bin/vqadmin
vi .htaccess
AuthType Basic
AuthUserFile /var/www/cgi-bin/vqadmin/.htpasswd
AuthName vQadmin
require valid-user
satisfy any

chown apache .htaccess
htpasswd -bc /var/www/cgi-bin/vqadmin/.htpasswd admin 123
chmod 644 /var/www/cgi-bin/vqadmin/.htpasswd

apachectl stop
apachectl start
如果以上配置都正确的话,可以用[url]http://www.yourdomain.com/cgi-bin/vqadmin/vqadmin.cgi[/url]
来管理了。





###########################################################

安装 Maildrop
cd /downloads/qmailrocks
tar zxvf maildrop-1.6.3.tar.gz
cd maildrop-1.6.3
./configure --prefix=/usr/local --exec-prefix=/usr/local --enable-maildrop-uid=root --enable-maildrop-gid=vchkpw --enable-maildirquota
make && make install-strip && make install-man

###########################################################
安装Qmailadmin
cd /downloads/qmailrocks
tar zxvf qmailadmin-1.2.9.tar.gz
cd qmailadmin-1.2.9
./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html
make && make install-strip
完成后可以通过网页添加删除用户
安装完成后默认是英文的需要该一下东西


###########################################################
结束安装
这个脚本做了一些结束安装的步骤
/downloads/qmailrocks/scripts/finalize/linux/finalize_linux.script
然后
vi /var/qmail/supervise/qmail-pop3d/run
将"mail.example.com" 修改成自己的域名
vi /var/qmail/supervise/qmail-smtpd/run
将"mail.example.com" 修改成自己的域名
qmailctl stop
echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp
qmailctl cdb

echo postmaster@zhaoyun.com > /var/qmail/alias/.qmail-root
echo postmaster@zhaoyun.com> /var/qmail/alias/.qmail-postmaster
echopostmaster@zhaoyun.com> /var/qmail/alias/.qmail-mailer-daemon
ln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
chmod 644 /var/qmail/alias/.qmail*
###########################################################
卸载Sendmail,postfix邮件程序
sendmail:
rpm -qa | grep sendmail
sendmail-x.x.x.x
sendmail-doc-x.x.x.x
sendmail-devel-x.x.x.x
sendmail-cf-x.x.x.x
/etc/rc.d/init.d/sendmail stop
rpm -e --nodeps sendmail-x.x.x.x
rpm -e --nodeps sendmail-doc-x.x.x.x
rpm -e --nodeps sendmail-devel-x.x.x.x
rpm -e --nodeps sendmail-cf-x.x.x.x
或者这样处理:
/etc/rc.d/init.d/sendmail stop (to stop Sendmail)
mv /usr/lib/sendmail /usr/lib/sendmail.old
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old

postfix
rpm -qa | grep postfix
postfix-x.x-x
/etc/rc.d/init.d/postfix stop
rpm -e --nodeps postfix-x.x-x

建立假的连接
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
###########################################################
配置文件存在及权限检查
/downloads/qmailrocks/scripts/util/qmr_inst_check

安装spamassassin反垃圾邮件
安装和配置 SpamAssassin
      从 http://spamassassin.apache.org 网 站上下载最新安装源代码       :
      # tar xzf Mail-SpamAssassin-2.64.tar.gz
# cd Mail-SpamAssassin-2.64
# perl Makefile.PL
# make
# make install
3.4 安装 Chinese_rules.cf
      下载 Chinese_rules.cf(http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf),把该规则放在
SpamAssassin 存 放 规 则 的 目 录 ( 一 般 在 /usr/share/spamassassin 或 者
/usr/local/share/spamassassin)。
3.5 qmail 与 SpamAssassin 结合
      在 SpamAssassin 3.x 的 spamc 目录下编译 qmail-spamc
      # cc -O -o qmail-spamc qmail-spamc.c
      # install -m 755 qmail-spamc /var/qmail/bin
      确保 qmail-queue,spamc 和 spamd 在缺省路径中
      # ln -s /var/qmail/bin/qmail-queue /usr/bin/qmail-queue
                                                  11
                    
启动 spamd
/usr/bin/spamd --daemonize --pidfile /var/run/spamd.pid
每次更新 Chinese_rules.cf 需要重起 spamd 方法如下
# kill -HUP `cat /var/run/spamd.pid`
增加 qmail-smtpd 运行需要的内存空间
编辑/var/qmail/supervise/qmail-smtpd/run 中 softlimit 的-m 参数,一般 10M 就可以。
编辑 /etc/tcp.smtp 如下
127.:allow,RELAYCLIENT=""
:allow,QMAILQUEUE="/var/qmail/bin/qmail-spamc"
编辑[root@mail e]# vi /etc/mail/spamassassin/local.cf
添加required_score          5.0  这个设置太低会误删正常邮件,设7就差不多了
rewrite_header Subject ********SPAM********
report_safe            1
use_bayes              1
skip_rbl_checks         0
ok_languages            zh en
ok_locales              en ko

~                              
使所有的邮件都经过 SpamAssassin 处理
# qmailctl cdb
这样,所有的邮件都经过 SpamAssassin 处理,在邮件信头会加上一些扩展信头 X-Spam


测试反垃圾效果


标记为SPAM的就是垃圾邮件

这个邮件垃圾级别是12。3 高于设置的5所以他是垃圾邮件
 另一个方法就是在/var/qmail/control/目录下建立badmailfrom文件,在该文件中添加要拒  绝 的邮件地址,不用重启就可以实现拒绝发件人,可以将一些经常发送垃圾邮件的邮件地址加进来,实现垃圾邮件过滤的功能。
启动qmail
qmailctl stop
qmailctl start
/service/qmail-send: up (pid 29956) 2 seconds
/service/qmail-send/log: up (pid 29960) 2 seconds
/service/qmail-smtpd: up (pid 29963) 2 seconds
/service/qmail-smtpd/log: up (pid 29968) 2 seconds
/service/qmail-pop3d: up (pid 29971) 2 seconds
/service/qmail-pop3d/log: up (pid 29972) 2 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0

测试登录




发件测试
telnet localhost 25



如果你遇到问题,检查:
f you happen to get an error that states "454 TLS not available: missing RSA private key (#4.3.0)" after you issue the "starttls" command, you will want to check 2 things:
1) Verify that the cert actually exists at /var/qmail/control/servercert.pem. If it's not there, go back to step 2 and repeat the cert creation step.
2) Verify that the cert is owned by vpopmail:qmail. If it's not, then make it so like this:
chown vpopmail:qmail /var/qmail/control/servercert.pem