22
qmail 全系统安装部署文档(for CentOS5.4)如影随形 ,原帖发自: http://bbs.linuxtone.org/thread-4330-1-1.html time: 9:28 2009-11-13 #前言: #预设的域名/主机名: #mail.gusitasi.com #IP 地址 192.168.118.143 #预设的目录、用户和组: groupadd mysql useradd -g mysql -s /bin/false -M mysql mkdir /var/qmail groupadd nofiles useradd alias -g nofiles -d /var/qmail/alias -s /sbin/nologin useradd qmaild -g nofiles -d /var/qmail -s /sbin/nologin useradd qmaill -g nofiles -d /var/qmail -s /sbin/nologin useradd qmailp -g nofiles -d /var/qmail -s /sbin/nologin groupadd qmail useradd qmailq -g qmail -d /var/qmail -s /sbin/nologin useradd qmailr -g qmail -d /var/qmail -s /sbin/nologin useradd qmails -g qmail -d /var/qmail -s /sbin/nologin groupadd vchkpw -g 89 useradd vpopmail -u 89 -g vchkpw mkdir -p /home/vpopmail/etc #预设的路径: #mysql 主目录:/usr/local/mysql #mysql unix 套接字文件:/tmp/mysql.sock #apache 的安装路径:/usr/local/apache2 #apache web 主目录:/www/html #apache CGI 目录: /www/cgi-bin #php application dir:/usr/local/php5 #bind9 conf dir/etc/bind9 #qmail 的主目录/var/qmail/ #vpopmail 的主目录 /home/vpopmail/etc #/home/netdisk #预设的用户名/密码: #mysql 数据库 root/#vpopmail mysql 中的用户:vpopmail/ryan098 #邮件域管理员:postmaster/jiadaliwansui #测试邮箱 1[email protected]/c1 #测试邮箱 2[email protected]/xiaojiahuo

古斯塔斯集团的Qmail邮件系统

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 古斯塔斯集团的Qmail邮件系统

qmail 全系统安装部署文档(for CentOS5.4)如影随形 ,原帖发自:

http://bbs.linuxtone.org/thread-4330-1-1.htmltime: 9:28 2009-11-13

#前言:

#预设的域名/主机名:

#mail.gusitasi.com#IP地址 192.168.118.143#预设的目录、用户和组:

groupadd mysqluseradd -g mysql -s /bin/false -M mysqlmkdir /var/qmailgroupadd nofilesuseradd alias -g nofiles -d /var/qmail/alias -s /sbin/nologinuseradd qmaild -g nofiles -d /var/qmail -s /sbin/nologinuseradd qmaill -g nofiles -d /var/qmail -s /sbin/nologinuseradd qmailp -g nofiles -d /var/qmail -s /sbin/nologingroupadd qmailuseradd qmailq -g qmail -d /var/qmail -s /sbin/nologinuseradd qmailr -g qmail -d /var/qmail -s /sbin/nologinuseradd qmails -g qmail -d /var/qmail -s /sbin/nologingroupadd vchkpw -g 89useradd vpopmail -u 89 -g vchkpwmkdir -p /home/vpopmail/etc

#预设的路径:

#mysql 主目录:/usr/local/mysql#mysql 的 unix套接字文件:/tmp/mysql.sock#apache的安装路径:/usr/local/apache2#apache的 web 主目录:/www/html#apache的 CGI目录: /www/cgi-bin#php application dir:/usr/local/php5#bind9 conf dir:/etc/bind9#qmail 的主目录/var/qmail/#vpopmail 的主目录 /home/vpopmail/etc#/home/netdisk

#预设的用户名/密码:

#mysql 数据库 root/空#vpopmail 在 mysql 中的用户:vpopmail/ryan098#邮件域管理员:postmaster/jiadaliwansui#测试邮箱 1:[email protected]/c1#测试邮箱 2:[email protected]/xiaojiahuo

Page 2: 古斯塔斯集团的Qmail邮件系统

#3防火墙已经关闭,selinux已经禁用

#安装中发现缺失、错误的组件:

#首先挂载 CentOS5.4到/mnt#1。安装mysql 时发现需要安装如下软件包

rpm -ivh ncurses-devel-5.5-24.20060715.i386.rpm#2。安装 PHP时发现需要安装的包:

rpm -ivh zlib-devel-1.2.3-3.i386.rpmrpm -ivh libxml2-devel-2.6.26-2.1.2.8.i386.rpm#3。安装 qmail 补丁过程中需要安装的包:

####错误原文:make: *** [qmail-remote.o] 错误 1rpm -ivh e2fsprogs-devel-1.39-23.el5.i386.rpmrpm -ivh keyutils-libs-devel-1.2-1.el5.i386.rpmrpm -ivh libselinux-devel-1.33.4-5.5.el5.i386.rpmrpm -ivh libsepol-devel-1.15.2-2.el5.i386.rpmrpm -ivh libselinux-devel-1.33.4-5.5.el5.i386.rpmrpm -ivh krb5-devel-1.6.1-36.el5.i386.rpmrpm -ivh openssl-devel-0.9.8e-12.el5.i386.rpm####make: *** [tls.o] 错误 1 。原因是 openssl 版本问题,CentOS5.4默认是 098,实际需要

097mv /usr/bin/openssl /usr/bin/openssl098cd ~tar xzfv openssl-0.9.7i.tar.gzcd openssl-0.9.7i./Configuremakemake installfind / -name opensslcp /usr/local/ssl/bin/openssl /usr/bin/

#配置支持中文

echo "LANG="zh_CN.GB18030" ">/etc/sysconfig/i18necho "SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"">>/etc/sysconfig/i18necho "SYSFONT="latarcyrheb-sun16" ">>/etc/sysconfig/i18ncat /etc/sysconfig/i18nsource /etc/sysconfig/i18n

LAMP 安装

第一步安装 mysql##################tar xzfv mysql*.tar.gzcd mysql*./configure --prefix=/usr/local/mysql --enable-thread-safe-client --enable-local-infile --with-extra-charset=all --with-tcp-port=3306 --with-unix-socket-path=/tmp/mysql.sock --enable-

Page 3: 古斯塔斯集团的Qmail邮件系统

assembler --with-mysqld-user=mysql --with-federated-storage-engine --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static#####编译时如报错参看附录 1。make &&make installcp support-files/my-medium.cnf /etc/my.cnf#####安装 dbcd /usr/local/mysqlchown -R mysql .chgrp -R mysql .bin/mysql_install_db --user=mysqlchown -R root .chown -R mysql varbin/mysqld_safe --user=mysql &#####设置启动项“cd -”是返回上一次所在的目录的意思

cd -cp support-files/mysql.server /etc/rc.d/init.d/mysqldchmod 700 /etc/rc.d/init.d/mysqldchkconfig --add mysqldchkconfig --level 345 mysqld onchkconfig --list mysqldecho "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf&&ldconfig -vexport PATH=$PATH:/usr/local/mysql/binln -s /usr/local/mysql/bin/* /usr/bin/测试 mysql是否正常

/usr/local/mysql/bin/mysqladmin ping/usr/local/mysql/bin/mysqladmin version添加 vpopmail/igenus 的数据库,以及用户、密码、权限;/usr/local/mysql/bin/mysql -uroot -p

mysql>show databases;CREATE DATABASE vpopmail;GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmail@localhost

IDENTIFIED BY 'ryan098';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 `admin` (

Page 4: 古斯塔斯集团的Qmail邮件系统

`id` int(10) unsigned NOT NULL auto_increment,`site_id` int(10) unsigned NOT NULL default '0',`domain` varchar(128) NOT NULL default '',`quota` smallint(5) unsigned NOT NULL default '0',`total` smallint(5) unsigned NOT NULL default '0',`createtime` timestamp(14) NOT NULL,`login` char(1) NOT NULL default '',`cur_total` smallint(5) NOT NULL default '0',`cur_quota` smallint(5) NOT NULL default '0',`gid` varchar(11) NOT NULL default '',`expiration_time` timestamp(14) NOT NULL,`flag` int(10) unsigned NOT NULL default '0',`maxmsg` int(10) unsigned NOT NULL default '0',PRIMARYKEY (`id`),UNIQUE KEY `domain` (`domain`)

) TYPE=MyISAM PACK_KEYS=1 ;

CREATE TABLE `card` (`id` int(5) unsigned NOT NULL auto_increment,`pw_id` int(5) unsigned NOT NULL default '0',`LinkMan` varchar(64) NOT NULL default '',`CompanyName` varchar(100) NOT NULL default '',`Address` varchar(255) NOT NULL default '',`Position` varchar(32) NOT NULL default '',`PhoneNumber` varchar(16) NOT NULL default '',`Mobile` varchar(12) NOT NULL default '',`Email` varchar(128) NOT NULL default '',`Partaker` varchar(32) NOT NULL default '',`Memo` varchar(255) NOT NULL default '',PRIMARYKEY (`id`)

) TYPE=MyISAM ;

CREATE TABLE `lastauth` (`user` char(32) NOT NULL default '',`domain` char(64) NOT NULL default '',`remote_ip` char(18) NOT NULL default '',`timestamp` bigint(20) NOT NULL default '0',PRIMARYKEY (`user`,`domain`)

) TYPE=MyISAM;

CREATE TABLE `logs` (`pw_id` int(5) default '0',`ip` varchar(15) NOT NULL default '',`action` varchar(15) NOT NULL default '',

Page 5: 古斯塔斯集团的Qmail邮件系统

`time` datetime default NULL,`content` varchar(64) NOT NULL default '',`email` varchar(128) NOT NULL default ''

) TYPE=MyISAM;

CREATE TABLE `message` (`id` int(5) unsigned NOT NULL auto_increment,`title` varchar(255) NOT NULL default '',`body` text NOT NULL,`createtime` datetime NOT NULL default '0000-00-00 00:00:00',`updatetime` datetime NOT NULL default '0000-00-00 00:00:00',`pw_domain` varchar(64) NOT NULL default '',UNIQUE KEY `id` (`id`)

) TYPE=MyISAM ;

CREATE TABLE `personal` (`id` int(11) unsigned NOT NULL auto_increment,`pw_id` int(5) NOT NULL default '0',`truename` varchar(10) NOT NULL default '',`fax` varchar(20) NOT NULL default '',`telephone` varchar(15) NOT NULL default '',`sex` int(1) NOT NULL default '0',`year` int(4) NOT NULL default '0',`MONTH` int(2) NOT NULL default '0',`DAY` int(2) NOT NULL default '0',`education` varchar(4) NOT NULL default '',`marital` int(1) NOT NULL default '0',`occupation` varchar(15) NOT NULL default '',`companyname` varchar(30) NOT NULL default '',`province` varchar(6) NOT NULL default '',PRIMARYKEY (`id`)

) TYPE=MyISAM PACK_KEYS=1 ;

CREATE TABLE `scheduler` (`id` int(11) unsigned NOT NULL auto_increment,`begin_time` int(11) unsigned default NULL,`end_time` int(11) unsigned default NULL,`title` varchar(255) NOT NULL default '',`body` varchar(255) NOT NULL default '',`pw_id` int(11) unsigned NOT NULL default '0',PRIMARYKEY (`id`)

) TYPE=MyISAM ;

CREATE TABLE `stow` (

Page 6: 古斯塔斯集团的Qmail邮件系统

`id` int(5) unsigned NOT NULL auto_increment,`pw_id` int(5) unsigned NOT NULL default '0',`Name` varchar(128) NOT NULL default '',`http` varchar(255) NOT NULL default 'http://',`memo` varchar(255) NOT NULL default '',PRIMARYKEY (`id`)

) TYPE=MyISAM ;

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,PRIMARYKEY (`pw_id`),KEY `pw_name` (`pw_name`,`pw_domain`)) TYPE=MyISAM PACK_KEYS=1 ;

FLUSH PRIVILEGES;show databases;QUIT

###################第二步,安装 apachecd ~tar -zxvf httpd*cd httpd*./configure --prefix=/usr/local/apache2 --enable-somake &&make installmkdir -p /www/cgi-bin/mkdir /www/html/vi /usr/local/apache2/conf/httpd.conf#####设置 httpd.conf文件,添加或修改如下的内容(尤其注意 ScriptAlias 和 DirectoryIndex需要注意插入的位置):

#####!!!!!!!!!!!!!!!!

ServerName www.gusitasi.com:80DocumentRoot "/www/html/"AddType application/x-httpd-php .phpAddType applicatoin/x-httpd-php-source .phpsUser vpopmail

Page 7: 古斯塔斯集团的Qmail邮件系统

Group vchkpw<Directory /www>

Options Indexes FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all

</Directory>AddDefaultCharset GB2312ScriptAlias /cgi-bin/ "/www/cgi-bin/"DirectoryIndex index.html index.php#####设置 apache自启动:

cp /usr/local/apache2/bin/apachectl /etc/init.d/httpdvi /etc/init.d/httpd,在第一行加上选文(注意保留#号):

#!/bin/sh# chkconfig: 35 70 30# description: Apache is a WorldWideWeb server.chmod 700 /etc/init.d/httpdchkconfig --level 345 httpd onchkconfig --list httpd

########################第三步,安装 phpcd ~tar -zxvf php*cd php*./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5/etc#####编译过程中出现 “configure: error: xml2-config not found. Please check your libxml2installat”错误,可以参照上文安装 rpm 包

make&&make installcp php.ini-dist /usr/local/php5/etc/php.ini###LAMP测试

################echo "<? phpinfo(); ?>">/www/html/test.phpservice httpd startcurl -I 127.0.0.1####最后一步,用 curl 或图形化浏览器来访问 test.phpcurl 127.0.0.1/test.php####如果 shell/浏览器输入 N多内容,代表 php已经成功的处理了 test.php那个文件。

####删除 amp文件

cd ~rm -rf httpd* mysql* php*

Page 8: 古斯塔斯集团的Qmail邮件系统

第四步,安装 bind9(可选,如有 DNS服务器可忽略此步骤)

tar xzfv bind*cd bind*mkdir /etc/bind9./configure --sysconfdir=/etc/bind9 --disable-openssl-version-checkmake &&make install############开始配置 bind9cd /etc/bind9首先挖掘根 dns创建 ca文件(详情见附录 3),也可以直接运行下面的命令:

cat>> named.ca <<EOFA.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:ba3e::2:30B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2f::fG.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53H.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:1::803f:235I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30J.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:c27::2:30EOF#####rndc 是 bind 软件引进的远程控制通道,代替 unix 信号来控制 named 进程。接下来

要设置 rndc 文件,并根据 rndc 文件来书写 bind9 自己的配置文件。

rndc-confgen > rndc.conf

#####创建 bind9 的主配置文件 named.conf,指定配置文件位置和根文件位置

cat >> named.conf <<EOFoptions{directory "/etc/bind9";};zone "."{

type hint;file "named.ca";

};EOF然后将 rndc.conf 中被#号注释掉的部分(不含首行“# Use with the……”和尾行 “# End ofnamed.conf”)去掉#号注释追加到 named.conf

的尾部。下面命令中 tail、head 的数值可能会根据你的 rndc.conf 的内容而变换

Page 9: 古斯塔斯集团的Qmail邮件系统

cat rndc.conf |tail -10|head -9|cut -c 2->>named.conf#####现在 BIND9的基础设置就完成了下面就是添加启动项:

根据下文增加启动脚本文件

[root@mail bind9]# cat /etc/init.d/named#!/bin/bash# named a network name service.# chkconfig: 345 35 75# description: a name serverif [ `id -u` -ne 0 ]thenecho "ERROR:For bind to port 53,must run as root."exit 1ficase "$1" instart)if [ -x /usr/local/sbin/named ]; then/usr/local/sbin/named -c /etc/bind9/named.conf && echo . && echo 'BIND9 server started'fi/usr/local/sbin/rndc status && echo . && echo 'rndc status';;stop)kill `cat /var/run/named/named.pid` && echo . && echo 'BIND9 server stopped';;restart)echo .echo "Restart BIND9 server"$0 stopsleep 7$0 start;;reload)test -e /var/run/named/named.pid &&/usr/local/sbin/rndc reload||echo 'Bind is no working';;status)test -e /var/run/named/named.pid &&/usr/local/sbin/rndc status||echo 'Bind is no working';;*)echo "$0 start | stop | restart |reload |status";;esac#####然后设置下脚本权限

chmod 700 /etc/rc.d/init.d/namedchkconfig --add namedchkconfig --level 345 named on

Page 10: 古斯塔斯集团的Qmail邮件系统

####现在即可通过 service named start | stop | restart |reload |status 进行控制。

#####设置区域

#####现在bind的设置已经是一个合格的空壳,下面就要往壳里写入要解析的区域的内容了 。

#####在 named.conf里添加区域:

cat >>/etc/bind9/named.conf<< EOFzone "gusitasi.com"{

type master;file "gusitasi.com";

};EOF#####书写区域配置文件

cat >>/etc/bind9/gusitasi.com<<EOF@ 1D IN SOA gusitasi.com. root (

20080302011H15M1W1D )

IN NS nsns IN A 192.168.118.143mx1 IN A 192.168.118.143smtp IN A 192.168.118.143pop3 IN A 192.168.118.143gusitasi.com. IN MX 10 mx1.gusitasi.com.www IN A 192.168.118.143news IN CNAME wwwEOF#####启动 bind,同时设置本机的 resolv.confservice named start

cat /dev/null>/etc/resolv.confcat >>/etc/resolv.conf<< EOFnameserver 127.0.0.1search gusitasi.comEOF测试效果:

[root@mail bind9]# host -t mx gusitasi.comgusitasi.com mail is handled by 10 mx1.gusitasi.com.[root@mail bind9]# host www.gusitasi.comwww.gusitasi.com has address 192.168.118.143[root@mail bind9]# host smtpsmtp.gusitasi.com has address 192.168.118.143[root@mail bind9]# host mx1mx1.gusitasi.com has address 192.168.118.143

Page 11: 古斯塔斯集团的Qmail邮件系统

清理:rm -rf bind9*########################前面是安装 LAMP和 bind9,现在是正式安装 qmail 了。请注意,接下来安装的软件和补丁

的版本要求比较严格。

首先检查并卸掉自动安装上的 sendmail 和mysql。rpm -qa sendmail mysqlservice sendmail stoprpm -e --nodeps sendmailrm -rf /usr/sbin/sendmailrpm -qa sendmail mysqlrpm -e --nodeps mysql

#####解压缩 netqmail-1.05.tar.gz,但是不安装,只是做基础对照;

cd ~tar xzfv netqmail-1.05.tar.gzcd netqmail-1.05./collate.sh#####打补丁并安装 daemontools 。daemontools是一个收集管理 UNIX 进程的工具.用它来监

听 qmail-send,qmail-smtpd,qmail-pop3dcd ~tar xzfv daemontools-0.76.tar.gzcd admin/daemontools-0.76patch -p1 < ../../daemontools-0.76.errno.patch./package/installps ax | grep svscan##################################################### 验证 daemontools 已经正常运行:

[root@ora1 daemontools-0.76]# ps ax | grep svscan28555 ? Ss 0:00 /bin/sh /command/svscanboot28557 ? S 0:00 svscan /service####################################################

#####补丁并安装 ucspi-tcp说明:

ucspi-tcp 软件包由一组工具组成。它们用来简单的建立客户机-服务器 tcp 后台程序。

TcpServer是一个比 inetd 安全性更好的选择。它内建有基于规则的连接控制,能完善地在达

到预定义的最大系统负载时将连接推迟,这点比 inetd 好。Tcpserver 也被推荐与 qmail 一同

使用,因为它们是同一个作者编的程序。 参考:http://cr.yp.to/ucspi-tcp.htmlcd ~tar zxvf ucspi-tcp-0.88.tar.gzcd ucspi-tcp-0.88patch -p1 < ../ucspi-tcp-0.88.errno.patchmakemake setup check

Page 12: 古斯塔斯集团的Qmail邮件系统

#####准备安装 qmailcd ~tar xzfv toaster-scripts-0.7.tar.gzcd netqmail-1.05/netqmail-1.05/vi qmail-smtpd.c +50-----------------------------------------#####搜索函数 straynewline 中的 451改为 553 第 50行#####当你的服务器收到无效格式的邮件时,会发送:"I am not going to accept that message atthe moment,you can try again later",

对方服务器收到后,几秒钟后又会发送同样的邮件给你,造成多次的重复。

#####改为 553 后,你的服务器将直接发送:"I am not going to accept that message,don't trysending it again.",告诉对方的服务器不

要再发这封无效的信件。

#####RedHat/Fedora 用户可能需要为 TLS补丁链接一个 include 文件

#####输入如下命令:

ln -s /usr/kerberos/include/com_err.h /usr/include/

-----------------------------------------#####qmail 编译安装

make &&make setup check

#####安装过程中可能会出现警告:“main”的返回类型不是“int”,这些警告来自 GCC,一般

不用理会。

#####注:qmail 的补丁在 vpopmail 安装之后再打。

#####用你自己的主机名代替下面的mx1.gusitasi.com

./config-fast mx1.gusitasi.com

#设置管理员的邮箱地址。

#发往 root/postmaster/mailer-daemon 地址的邮件将会由定义的管理员邮箱接收。

#将如下的“[email protected]"替换成你的管理员邮箱。

cd /var/qmail/aliasecho "[email protected]" > .qmail-postmasterecho "[email protected]" > .qmail-mailer-daemonecho "[email protected]" > .qmail-rootchmod 644 /var/qmail/alias/.qmail*

#####开启 SPF设置

echo ./Maildir/ >/var/qmail/control/defaultdeliveryecho 3 > /var/qmail/control/spfbehavior

Page 13: 古斯塔斯集团的Qmail邮件系统

#####添加 qmail 的帮助手册

echo MANPATH /var/qmail/man >> /etc/man.config

#####为 qmail 服务建立监控目录和日志文件:mkdir -p /var/qmail/supervise/qmail-send/logmkdir -p /var/qmail/supervise/qmail-smtpd/logmkdir -p /var/qmail/supervise/qmail-pop3d/logmkdir -p /var/qmail/supervise/qmail-pop3ds/logcd ~cp toaster-scripts-0.7/send.run /var/qmail/supervise/qmail-send/runcp toaster-scripts-0.7/send.log.run /var/qmail/supervise/qmail-send/log/runcp toaster-scripts-0.7/smtpd.run /var/qmail/supervise/qmail-smtpd/runcp toaster-scripts-0.7/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/runcp toaster-scripts-0.7/pop3d.run /var/qmail/supervise/qmail-pop3d/runcp toaster-scripts-0.7/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/runcp toaster-scripts-0.7/pop3ds.run /var/qmail/supervise/qmail-pop3ds/runcp toaster-scripts-0.7/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run

echo 20 > /var/qmail/control/concurrencyincomingchmod 644 /var/qmail/control/concurrencyincomingchmod 755 /var/qmail/supervise/qmail-send/runchmod 755 /var/qmail/supervise/qmail-send/log/runchmod 755 /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-smtpd/log/runchmod 755 /var/qmail/supervise/qmail-pop3d/runchmod 755 /var/qmail/supervise/qmail-pop3d/log/runchmod 755 /var/qmail/supervise/qmail-pop3ds/runchmod 755 /var/qmail/supervise/qmail-pop3ds/log/run

mkdir -p /var/log/qmail/smtpdmkdir -p /var/log/qmail/pop3dmkdir -p /var/log/qmail/pop3dschown -R qmaill /var/log/qmail

#####设置启动脚本:cd ~cp toaster-scripts-0.7/rc /var/qmail/rcchmod 755 /var/qmail/rccp toaster-scripts-0.7/qmailctl /var/qmail/bin/chmod 755 /var/qmail/bin/qmailctlln -s /var/qmail/bin/qmailctl /usr/binln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

Page 14: 古斯塔斯集团的Qmail邮件系统

rm -rf /usr/lib/sendmailln -s /var/qmail/bin/sendmail /usr/lib/sendmail

# 用 daemontools来启动 qmail-send 和 qmail-smtpdln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

#命令:# 启动,停止,重启,查看队列等

#qmailctl start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help

# 检查服务

netstat -an | grep 25ps -ef | grep qmailps -efl | grep "service errors" | grep -v grepps -ef | grep qmail|grep -v grep |wc -l[root@ora1 rhy]# ps -ef | grep qmail|grep -v grep |wc -l9[root@rhel qmail]# ps -efl | grep "service errors" | grep -v grep4 S root 3729 3289 0 78 0 - 619 pipe_w 16:03 ? 00:00:00 readproctitleservice errors:

.............................................................................................................................

.............................................................................................................................

.............................................................................................................................

.........................##########下面的路径是 qmail 的日志:

#/var/log/maillog#/var/log/qmail/current#/var/log/qmail/pop3d/current#/var/log/qmail/pop3ds/current#/var/log/qmail/smtpd/current

#####安装 vpopmail 。vpopmail 是一个以 qmail 为基础的虚拟域管理包;其允许在一个 IP地址添加多个虚拟域;并且可以不需要使用系统帐号做邮件帐号。http://vpopmail.sf.net##### 设置默认域,设置 smtp规则,关闭 open relaysecho "gusitasi.com" > /home/vpopmail/etc/defaultdomainecho '127.0.0.1:allow,RELAYCLIENT=""' > /home/vpopmail/etc/tcp.smtpcd /home/vpopmail/etctcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

Page 15: 古斯塔斯集团的Qmail邮件系统

#######设置MySQL 信息,localhost 是数据库服务的地址,第一个 vpopmail 是帐号,ryan098为密码,第二个 vpopmail 是数据库的名字。

echo "localhost|0|vpopmail|ryan098|vpopmail" > /home/vpopmail/etc/vpopmail.mysqlchmod 640 /home/vpopmail/etc/vpopmail.mysqlchown -R vpopmail.vchkpw /home/vpopmail/etc########开始安装:cd ~tar zxvf vpopmail-5.4.13.tar.gzcd vpopmail-5.4.13#######带数据库支持,需要注意--enable-incdir 和 --enable-libdir的路径是否正确。

./configure --enable-incdir=/usr/local/mysql/include/mysql --enable-libdir=/usr/local/mysql/lib/mysql --disable-roaming-users --enable-logging=p --disable-passwd --enable-clear-passwd --disable-domain-quotas --enable-auth-module=mysql --enable-auth-logging--enable-sql-logging --disable-valias --disable-mysql-limits --enable-learn-passwordsmakemake install-strip#######编译时出现如下 gcc 警告可以忽略:

###vchkpw.c:439: 警告:传递参数 2 (属于 ‘authcram’) 给指针时目标与指针有/无符号不一

###vchkpw.c:439: 警告:传递参数 3 (属于 ‘authcram’) 给指针时目标与指针有/无符号不一

###vchkpw.c:445: 警告:传递参数 1 (属于 ‘authapop’) 给指针时目标与指针有/无符号不一

###vchkpw.c:445: 警告:传递参数 2 (属于 ‘authapop’) 给指针时目标与指针有/无符号不一

#####将 vpopmail 管理命令加入 path:echo 'export PATH=$PATH:/home/vpopmail/bin' >> /etc/profilesource /etc/profileln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.15 /lib/libmysqlclient.so.15# 添加域的命令,前面是域名,后面的“jiadaliwansui”是管理员(用户名:postmaster)的密码

#vadddomain gusitasi.com jiadaliwansui

######可能出现类似“MySQL server has gone away”的错误 ,一般原因是没有正确的使用

mysql 对应的 vpopmail 的密码,解决方法就是修改/home/vpopmail/etc/vpopmail.mysql 这个文

件中对应的 vpopmail 的密码还有就是把以前mysql 的 rpm包文件卸载掉。

###### rpm -e --nodeps mysql###### rpm -e --nodeps mysqlclient10-3.23.58-4.RHEL4.1###### rpm -qa|grep mysql######并且执行

######ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.14 /usr/lib/libmysqlclient.so.14

#####在 vpopmail 里添加用户,格式为:

Page 16: 古斯塔斯集团的Qmail邮件系统

#####vadduser -q 10485760S(邮箱大小) [email protected](邮箱帐号) 1234(密码)#####vmoduser -c ryan(邮箱描述) [email protected]############################################大大的注意:部署正确 以上不会有任何错误。

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

###### 设置邮箱容量达到 90%的警告信息

cat >>/home/vpopmail/domains/.quotawarn.msg<<EOFFrom: 邮箱管理员

Reply-To: [email protected]: 邮箱用户

Subject: 邮箱空间警告

Mime-Version: 1.0Content-Type: text/html; charset=gb2312Content-Transfer-Encoding: base64您的邮箱空间已经达到 90%.如果想继续使用,请删除一些信件.如果需要帮助,请联系邮箱管理员:Email : [email protected]

######设置邮箱已满的警告信息

echo "邮件被拒绝,用户的邮箱空间已满." > /home/vpopmail/domains/.over-quota.msgcat /home/vpopmail/domains/.over-quota.msg

#启动脚本:cp ~/toaster-scripts-0.7/vpopmailctl /var/qmail/binln -s /var/qmail/bin/vpopmailctl /usr/binchmod 700 /var/qmail/bin/vpopmailctl

#现在打上 qmail 的补丁:cd ~/netqmail-1.05/netqmail-1.05bunzip2 -c ~/qmail-toaster-0.7.2.patch.bz2 | patch -p0make cleanmakeqmailctl stopmake setup checkchown -R vpopmail:vchkpw /var/qmail/spam

#创建 SSL Key

make cert

Page 17: 古斯塔斯集团的Qmail邮件系统

#按提示输入公司信息

#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![root@mail netqmail-1.05]# make certCountry Name (2 letter code) [AU]:EFState or Province Name (full name) [Some-State]:DuiwuLocality Name (eg, city) []:GusitasijituanOrganization Name (eg, company) [Internet Widgits Pty Ltd]:gusitasihaidaoOrganizational Unit Name (eg, section) []:gstsjygcsCommon Name (eg, YOUR name) []:gusitasi.comEmail Address []:[email protected]

#注:这里可能要多等一会,创建证书

make tmprsadhchown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem

#启动 qmailqmailctl start

# 用 daemontools来启动 qmail-pop3d 和 qmail-pop3dsln -s /var/qmail/supervise/qmail-pop3d /serviceln -s /var/qmail/supervise/qmail-pop3ds /service

#Vpopmail 的命令:# 启动,停止,重启,查看队列等

#vpopmailctl start|stop|restart|stat|pause|cont|helpvpopmailctl start# 检查服务

netstat -an | grep 110ps -ef | grep qmail |wc -l#[root@rhel netqmail-1.05]# ps -ef | grep qmail |wc -l#16ps -efl | grep "service errors" | grep -v grep

#[root@rhel netqmail-1.05]# ps -efl | grep "service errors" | grep -v grep#4 S root 3729 3289 0 78 0 - 619 pipe_w 16:03 ? 00:00:00readproctitle service errors:

Page 18: 古斯塔斯集团的Qmail邮件系统

#####安装 iGenus(可选) 用户看的的 web mail 界面.iGENUS 不是一套独立的邮件系统,只

是一个 Webmail 接口,需要配合 qmail+vpopmail+Mysql 使用。iGENUS 是由 PHP 写成,

采用直接对 qmail 的 Maildir 进行读写操作,因而比 IMAP/POP 方式更快一点。 参考:

http://www.igenus.org#####安装:

cd ~mkdir -p /www/htmltar zxvf igenus_2.0.2_20040901_release.tgz -C /www/cd /wwwrm -rf html/mv igenus html

#####建 temp 文件夹

mkdir /tmp/tempchmod -R 755 /tmp/tempchown -R vpopmail:vchkpw /tmp/tempmkdir /home/netdiskchmod -R 0755 /home/netdiskchown -R vpopmail:vchkpw /home/netdiskchmod -R 0755 /www/html/chown -R vpopmail:vchkpw /www/html/

#修改 config_inc.php 文件

vi /www/html/config/config_inc.php

$CFG_BASEPATH = "/www/html/";$CFG_MYSQL_HOST = 'localhost';$CFG_MYSQL_USER = 'vpopmail';$CFG_MYSQL_PASS = 'ryan098';$CFG_MYSQL_DB = 'vpopmail';$CFG_TEMP = "/tmp/temp";

########用 vadddomain 和 vadduser添加新域名和新用户。

vadddomain gusitasi.com jiadaliwansuivadduser [email protected] c1vadduser [email protected] c2vadduser [email protected] xiaojiahuo

Page 19: 古斯塔斯集团的Qmail邮件系统

vmoduser -c 毒蝎 [email protected] -c 乌鸦 [email protected] -c 小家伙 [email protected]

最后打开浏览器,输入 http://domain.com/,就可以访问网站了

#######安装 Ezmlm 。ezmlm 是 qmail 的作者 Dan Bernstein 为 qmail 编写的邮件列表管理

器. 它依赖于 qmail服务器的几个特点工作, 最显著的, 就是它使用 VERPs 来可靠的处理反

弹邮件 . ezmlm 在众多邮件列表管理器(MLM)中显得有点独特 , 它不是处理传送到中央

MLM 地址的命令 , 而是将命令附加在列表名字后面 . 例如 , 发送邮件到 "[email protected]" 来订阅 "[email protected]" 的邮件列表, . 关于 ezmlm的更多

信息, 参见 http://www.ezmlm.org/, 这是 ezmlm 的非正式 web 站点. ezmlm-idx的正式站点,介绍了这个非常棒的 add-on 插件 ezmlm-idx, 它包括了很多有用的特色、exmlm是一个快速 ,

强大的邮件列表程序,可以通过 qmailadmin对其进行配置

#安装:cd ~tar -xvzf ezmlm-0.53.tar.gztar -xvzf ezmlm-idx-0.42.tar.gz/bin/cp -rf ezmlm-idx-0.42/* ezmlm-0.53/

cd ezmlm-0.53patch < idx.patchchmod u+x makelangmakemake man#汉字 GB2312支持

make ch_GBmake setup

###安装 qmailadmin TOP#######qmailadmin 除了不能添加删除虚拟域外,几乎可以完成所有的虚拟域管理

#安装:cd ~tar -xvzf qmailadmin-1.2.13.tar.gzcd qmailadmin-1.2.13chmod -R 755 /www/cgi-binmkdir -p /var/qmail/bin/ezmlmchmod -R 777 /var/qmail/bin/ezmlm./configure --enable-htmldir=/www --enable-cgibindir=/www/cgi-bin --enable-autoresponder-bin=/usr/bin --enable-vpopuser=vpopmail --disable-ezmlm-mysql --enable-maxusersperpage=20--enable-maxaliasesperpage=20 --enable-modify-quota --enable-domain-autofill -enable-autoresponder-path

Page 20: 古斯塔斯集团的Qmail邮件系统

#./configure --enable-imagedi……这里可能要指定 ezmlm dir = /var/qmail/bin/ezmlm根 据 上 面 的 configure 提 示 。 --enable-htmldir=//usr/local/apache/htdocs 和 --enable-cgibindir=/usr/local/apache/cgi-binmakemake install-stripcd /usr/local/share/qmailadmin/langmv en en.bakcp zh-cn en###接下来要将图标文件上传到/www/html/目录下,并解压为 image 文件夹:这样才有图片

可以显示;

#访问时,用 http://mx1.gusitasi.com/cgi-bin/qmailadmin#通过 qmailadmin 可以添加、删除、修改用户、自定义邮件列表。“新建邮件列表”,建完后

可以“添加订户”指定该列表内的收件人。

#上面刚设置了 smtpd pop3d ,igenus(webmail),虚拟域和虚拟用户(vpopmail),qmailadmin(邮件

帐号的管理),smtpd 的加密认证 另外需要增加的功能有 imap 收信,邮件列表。发邮件的 ssl加密,垃圾邮件黑名单,对某个用户的邮件过滤,邮件杀毒。自动投递。

#删除 A用户给 gusitasi.com 中的所有成员发送的邮件方法:

####一封邮件的格式 1213338634.10526.fbi5_mail,S=6548 其中 S=xxx 是唯一的,可以理解

成邮件的 ID,下文假设邮件的 ID为 52265。###cd /home/vpopmail/domains/gusitasi.com###find . -name "*S=52265*"####有些在/home/vpopmail/domains/fbi5.cn/liuxingguang/Maildir/cur 已收到的邮件中(用户

已接收)

####有些在/home/vpopmail/domains/fbi5.cn/liuxingguang/Maildir/new 未收到的邮件中(用户

尚未接收)

####可以看到这些文件几乎是同一时刻的。

####然后 find . -name "*S=52265*" |xargs rm -rf

# qmail 限制附件大小

#在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对 qmail附件大小的限制,

一般安装完成后,这个文件是没有的,你可以自己创建。

#smtp方式是以 qmail 的 databytes 作限制的

#创建 databytes 并设置邮件最大为 4mecho 4000000 >/var/qmail/control/databytes

#用 qmail 禁止指定地址发到到本邮件域(黑名单)

vi /var/qmail/control/badmailfrom###这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起 qmail 就能生效。例如:

#[email protected]限制一个特定的用户

Page 21: 古斯塔斯集团的Qmail邮件系统

#@xuexizhe.com -----限制整个域中的邮件

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

#qmail 邮件队列目录/var/qmail/queue# QMAIL队列目录及其作用:

# 邮件进入队列的处理过程被分割为不同的部分

# bounce 存储投递永久失败的邮件

# info 存储邮件的发送者的地址

# intd 存储邮 queue 重建的邮件头

# local 存储将要投递到本地的邮件接受者的地址

# lock 存储供 qmail-send 读取邮件状态的标识文件

# mess 存储要投递的邮件

# pid 存储输入邮件队列前的邮件

# remote 存储将要投递到远端主机的目标地址

# todo 存储完整的邮件头包括发送者与接受者的地址

# 过程:

# (邮件接受) qmail-smtpd /qmail-inject ->qmail-queue ,将邮件存储转变成

文件于 pid 中,---->以 PID内的文件节点为名 CP pid 文件到 mess(邮件存储)---》(提取邮

件头 ) qmail-queue 扫描mess 并撮邮件头将其拷贝到 intd(发送者与接受者的地址)---》( 邮

件队列生成与处理)link intd todo queue工作结束,以下由 qmail-send 负责: qmail-send 不断扫

描 todo 的新文件,若有则认为是新邮件,qmail-send 将发送者的地址-info,将目标地址 ->local/remote------>邮件投递:qmail-send 读取 info ,remote 文件,将相应的 mess即邮件内

容,激活投递程序 qmail-remote/local

####邮件队列的处理。qmail 的快速高效让人称道,但他对邮件往往是不管有没有该用户先

把邮件接收过来。而且现在不少人利用它作垃圾邮件转发,造成队列拥堵。现在针对这个问

题,国外有人开发了邮件队列的清除软件。该软件可到 www.linuxts.net(国内),

http://www.linuxmagic.com/opensource/qmail/qmail-remove/(国外)下载。 下面简述一下该

软件的用法:

#简要的安装过程:

cd ~tar zxvf qmail-remove-0.95.tar.tarcd qmail-remove-0.95makemake install#就把该软件安装到/usr/local/sbin 下了。

# 配置

mkdir /var/qmail/queue/yanked

# 使用

# 1查看队列

qmail-remove -q /var/qmail/queue

Page 22: 古斯塔斯集团的Qmail邮件系统

# 2删除队列

qmail-remove -r

#这步会把所有队列内容移动到/var/qmail/queue/yanked 目录下。接下来可以决定如何处理该

目录的内容了,垃圾邮件 一般就删掉。

#为了每天让服务器自动清理一下垃圾邮件,建立 qmail-remove.sh 文件

cat>>/root/qmail-remove.sh<< EOFqmailctl stopvpopmailctl stopmkdir -p /var/qmail/queue/yankedsleep 10qmail-remove -rqmailctl startvpopmailctl startrm /var/qmail/queue/yanked -rfmkdir -p /var/qmail/queue/yankedEOFchmod 755 /root/qmail-remove.sh#用”crontab -e”在 crontab里增加下面这条,定时清除 cache#crontab -e增加

#0 4 * * * /root/qmail-remove.sh > /dev/null 2>&1 #del spam mail

## qmail 内存溢出问题解决:

#!!!!!!!!!!!!vi /var/qmail/supervise/qmail-smtpd/run###把其中的 8000000 改为下面。

exec /usr/local/bin/softlimit -m 40000000 \