SlideShare a Scribd company logo
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:c1@gustasi.com/c1
#测试邮箱 2:xiaojiahuo@gusitasi.com/xiaojiahuo
#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.rpm
rpm -ivh libxml2-devel-2.6.26-2.1.2.8.i386.rpm
#3。安装 qmail 补丁过程中需要安装的包:
####错误原文:make: *** [qmail-remote.o] 错误 1
rpm -ivh e2fsprogs-devel-1.39-23.el5.i386.rpm
rpm -ivh keyutils-libs-devel-1.2-1.el5.i386.rpm
rpm -ivh libselinux-devel-1.33.4-5.5.el5.i386.rpm
rpm -ivh libsepol-devel-1.15.2-2.el5.i386.rpm
rpm -ivh libselinux-devel-1.33.4-5.5.el5.i386.rpm
rpm -ivh krb5-devel-1.6.1-36.el5.i386.rpm
rpm -ivh openssl-devel-0.9.8e-12.el5.i386.rpm
####make: *** [tls.o] 错误 1 。原因是 openssl 版本问题,CentOS5.4 默认是 098,实际需要
097
mv /usr/bin/openssl /usr/bin/openssl098
cd ~
tar xzfv openssl-0.9.7i.tar.gz
cd openssl-0.9.7i
./Configure
make
make install
find / -name openssl
cp /usr/local/ssl/bin/openssl /usr/bin/

#配置支持中文
echo "LANG="zh_CN.GB18030" ">/etc/sysconfig/i18n
echo "SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"">>/etc/sysconfig/i18n
echo "SYSFONT="latarcyrheb-sun16" ">>/etc/sysconfig/i18n
cat /etc/sysconfig/i18n
source /etc/sysconfig/i18n



LAMP 安装
第一步安装 mysql
##################
tar xzfv mysql*.tar.gz
cd 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-
assembler --with-mysqld-user=mysql --with-federated-storage-engine --with-client-ldflags=-all-
static --with-mysqld-ldflags=-all-static
#####编译时如报错参看附录 1。
make &&make install
cp support-files/my-medium.cnf /etc/my.cnf
#####安装 db
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
bin/mysqld_safe --user=mysql &
#####设置启动项“cd -”是返回上一次所在的目录的意思
cd -
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
chkconfig --list mysqld
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf&&ldconfig -v
export PATH=$PATH:/usr/local/mysql/bin
ln -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` (
`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',
   PRIMARY KEY (`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 '',
   PRIMARY KEY (`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',
   PRIMARY KEY (`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 '',
`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 '',
   PRIMARY KEY (`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',
   PRIMARY KEY (`id`)
) TYPE=MyISAM ;

CREATE TABLE `stow` (
`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 '',
   PRIMARY KEY (`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,
PRIMARY KEY (`pw_id`),
KEY `pw_name` (`pw_name`,`pw_domain`)
) TYPE=MyISAM PACK_KEYS=1 ;
      FLUSH PRIVILEGES;
      show databases;
      QUIT
###################
第二步,安装 apache
cd ~
tar -zxvf httpd*
cd httpd*
./configure --prefix=/usr/local/apache2 --enable-so
make &&make install
mkdir -p /www/cgi-bin/
mkdir /www/html/
vi /usr/local/apache2/conf/httpd.conf
#####设置 httpd.conf 文件,添加或修改如下的内容(尤其注意 ScriptAlias 和 DirectoryIndex
需要注意插入的位置)              :
#####!!!!!!!!!!!!!!!!
ServerName www.gusitasi.com:80
DocumentRoot "/www/html/"
AddType application/x-httpd-php .php
AddType applicatoin/x-httpd-php-source .phps
User vpopmail
Group vchkpw
<Directory /www>
      Options Indexes FollowSymLinks
            AllowOverride None
            Order allow,deny
            Allow from all
</Directory>
AddDefaultCharset GB2312
ScriptAlias /cgi-bin/ "/www/cgi-bin/"
DirectoryIndex index.html index.php
#####设置 apache 自启动:
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd,在第一行加上选文(注意保留#号 )                :
#!/bin/sh
# chkconfig: 35 70 30
# description: Apache is a World Wide Web server.
chmod 700 /etc/init.d/httpd
chkconfig --level 345 httpd on
chkconfig --list httpd

####################
####第三步,安装 php
cd ~
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 libxml2
installat”错误,可以参照上文安装 rpm 包
make&&make install
cp php.ini-dist /usr/local/php5/etc/php.ini
###LAMP 测试
################
echo "<? phpinfo(); ?>">/www/html/test.php
service httpd start
curl -I 127.0.0.1
####最后一步,用 curl 或图形化浏览器来访问 test.php
curl 127.0.0.1/test.php
####如果 shell/浏览器输入 N 多内容,代表 php 已经成功的处理了 test.php 那个文件。
####删除 amp 文件
cd ~
rm -rf httpd* mysql* php*
第四步,安装 bind9(可选,如有 DNS 服务器可忽略此步骤)
tar xzfv bind*
cd bind*
mkdir /etc/bind9
./configure --sysconfdir=/etc/bind9 --disable-openssl-version-check
make &&make install
############开始配置 bind9
cd /etc/bind9
首先挖掘根 dns 创建 ca 文件(详情见附录 3)                      ,也可以直接运行下面的命令:
cat>> named.ca <<EOF
A.ROOT-SERVERS.NET.               3600000 IN        A          198.41.0.4
A.ROOT-SERVERS.NET.               3600000 IN        AAAA         2001:503:ba3e::2:30
B.ROOT-SERVERS.NET.               3600000 IN        A          192.228.79.201
C.ROOT-SERVERS.NET.               3600000 IN        A          192.33.4.12
D.ROOT-SERVERS.NET.               3600000 IN        A          128.8.10.90
E.ROOT-SERVERS.NET.              3600000 IN         A          192.203.230.10
F.ROOT-SERVERS.NET.              3600000 IN         A         192.5.5.241
F.ROOT-SERVERS.NET.              3600000 IN         AAAA        2001:500:2f::f
G.ROOT-SERVERS.NET.               3600000 IN        A          192.112.36.4
H.ROOT-SERVERS.NET.               3600000 IN        A          128.63.2.53
H.ROOT-SERVERS.NET.               3600000 IN        AAAA         2001:500:1::803f:235
I.ROOT-SERVERS.NET.             3600000 IN         A          192.36.148.17
J.ROOT-SERVERS.NET.              3600000 IN        A          192.58.128.30
J.ROOT-SERVERS.NET.              3600000 IN        AAAA         2001:503:c27::2:30
EOF
#####rndc 是 bind 软件引进的远程控制通道,代替 unix 信号来控制 named 进程。                                  接下来
要设置 rndc 文件,并根据 rndc 文件来书写 bind9 自己的配置文件。

rndc-confgen > rndc.conf

#####创建 bind9 的主配置文件 named.conf,指定配置文件位置和根文件位置
cat >> named.conf <<EOF
     options{
     directory "/etc/bind9";
     };
     zone "."{
               type hint;
               file "named.ca";
     };
EOF
然后将 rndc.conf 中被 #号注释掉的部分(不含首行“# Use with the……”和尾行 “# End of
named.conf”)去掉#号注释追加到 named.conf

的尾部。下面命令中 tail、head 的数值可能会根据你的 rndc.conf 的内容而变换
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 server
if [ `id -u` -ne 0 ]
then
echo "ERROR:For bind to port 53,must run as root."
exit 1
fi
case "$1" in
start)
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 stop
sleep 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/named
chkconfig --add named
chkconfig --level 345 named on
####现在即可通过 service named start | stop | restart |reload |status 进行控制。
#####设置区域
#####现在 bind 的设置已经是一个合格的空壳,                         下面就要往壳里写入要解析的区域的内容了 。
#####在 named.conf 里添加区域:
cat >>/etc/bind9/named.conf<< EOF
     zone "gusitasi.com"{
               type master;
               file "gusitasi.com";
     };
EOF
#####书写区域配置文件
cat >>/etc/bind9/gusitasi.com<<EOF
@           1D         IN         SOA       gusitasi.com.         root (
                                                   2008030201
                                                   1H
                                                   15M
                                                   1W
                                                   1D )
           IN          NS        ns
ns        IN          A         192.168.118.143
mx1       IN         A          192.168.118.143
smtp       IN        A          192.168.118.143
pop3       IN        A          192.168.118.143
gusitasi.com.         IN         MX        10         mx1.gusitasi.com.
www         IN         A          192.168.118.143
news       IN         CNAME www
EOF
#####启动 bind,同时设置本机的 resolv.conf
service named start

cat /dev/null>/etc/resolv.conf
cat >>/etc/resolv.conf<< EOF
nameserver 127.0.0.1
search gusitasi.com
EOF
测试效果:
[root@mail bind9]# host -t mx gusitasi.com
gusitasi.com mail is handled by 10 mx1.gusitasi.com.
[root@mail bind9]# host www.gusitasi.com
www.gusitasi.com has address 192.168.118.143
[root@mail bind9]# host smtp
smtp.gusitasi.com has address 192.168.118.143
[root@mail bind9]# host mx1
mx1.gusitasi.com has address 192.168.118.143
清理:rm -rf bind9*
########################
前面是安装 LAMP 和 bind9,现在是正式安装 qmail 了。请注意,接下来安装的软件和补丁
的版本要求比较严格。
首先检查并卸掉自动安装上的 sendmail 和 mysql。
rpm -qa sendmail mysql
service sendmail stop
rpm -e --nodeps sendmail
rm -rf /usr/sbin/sendmail
rpm -qa sendmail mysql
rpm -e --nodeps mysql

#####解压缩 netqmail-1.05.tar.gz,但是不安装,只是做基础对照;
cd ~
tar xzfv netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh
#####打补丁并安装 daemontools 。daemontools 是一个收集管理 UNIX 进程的工具.用它来监
听 qmail-send,qmail-smtpd,qmail-pop3d
cd ~
tar xzfv daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < ../../daemontools-0.76.errno.patch
./package/install
ps ax | grep svscan
####################################################
# 验证 daemontools 已经正常运行:
[root@ora1 daemontools-0.76]# ps ax | grep svscan
28555 ?             Ss     0:00 /bin/sh /command/svscanboot
28557 ?             S       0:00 svscan /service
####################################################

#####补丁并安装 ucspi-tcp
说明:
ucspi-tcp 软件包由一组工具组成。它们用来简单的建立客户机-服务器 tcp 后台程序。
TcpServer 是一个比 inetd 安全性更好的选择。它内建有基于规则的连接控制,能完善地在达
到预定义的最大系统负载时将连接推迟,这点比 inetd 好。Tcpserver 也被推荐与 qmail 一同
使用,因为它们是同一个作者编的程序。 参考:http://cr.yp.to/ucspi-tcp.html
cd ~
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < ../ucspi-tcp-0.88.errno.patch
make
make setup check
#####准备安装 qmail
cd ~
tar xzfv toaster-scripts-0.7.tar.gz
cd netqmail-1.05/netqmail-1.05/
vi qmail-smtpd.c +50
-----------------------------------------
#####搜索函数 straynewline 中的 451 改为 553 第 50 行
#####当你的服务器收到无效格式的邮件时,会发送:"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.",告诉对方的服务器不

要再发这封无效的信件。
#####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 地址的邮件将会由定义的管理员邮箱接收。
#将如下的“admin@gusitasi.com"替换成你的管理员邮箱。

cd /var/qmail/alias
echo "xiaojiahuo@gusitasi.com" > .qmail-postmaster
echo "xiaojiahuo@gusitasi.com" > .qmail-mailer-daemon
echo "xiaojiahuo@gusitasi.com" > .qmail-root
chmod 644 /var/qmail/alias/.qmail*

#####开启 SPF 设置
echo ./Maildir/ >/var/qmail/control/defaultdelivery
echo 3 > /var/qmail/control/spfbehavior
#####添加 qmail 的帮助手册
echo MANPATH /var/qmail/man >> /etc/man.config

#####为 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
cd ~
cp toaster-scripts-0.7/send.run /var/qmail/supervise/qmail-send/run
cp toaster-scripts-0.7/send.log.run /var/qmail/supervise/qmail-send/log/run
cp toaster-scripts-0.7/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp toaster-scripts-0.7/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp toaster-scripts-0.7/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp toaster-scripts-0.7/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
cp toaster-scripts-0.7/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
cp toaster-scripts-0.7/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

#####设置启动脚本:
cd ~
cp toaster-scripts-0.7/rc /var/qmail/rc
chmod 755 /var/qmail/rc
cp toaster-scripts-0.7/qmailctl /var/qmail/bin/
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
rm -rf /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

# 用 daemontools 来启动 qmail-send 和 qmail-smtpd
ln -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 25
ps -ef | grep qmail
ps -efl | grep "service errors" | grep -v grep
ps -ef | grep qmail|grep -v grep |wc -l
[root@ora1 rhy]# ps -ef | grep qmail|grep -v grep |wc -l
9
[root@rhel qmail]# ps -efl | grep "service errors" | grep -v grep
4 S root         3729 3289 0 78             0-  619 pipe_w 16:03 ?                                                         00:00:00 readproctitle
service 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 relays
echo "gusitasi.com" > /home/vpopmail/etc/defaultdomain
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
#######设置 MySQL 信 息 ,localhost 是数据库服务的地址,第一个 vpopmail 是 帐 号,ryan098
为密码,第二个 vpopmail 是数据库的名字。

echo "localhost|0|vpopmail|ryan098|vpopmail" > /home/vpopmail/etc/vpopmail.mysql
chmod 640 /home/vpopmail/etc/vpopmail.mysql
chown -R vpopmail.vchkpw /home/vpopmail/etc
########开始安装:
cd ~
tar zxvf vpopmail-5.4.13.tar.gz
cd 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-passwords
make
make 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/profile
source /etc/profile
ln -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 里添加用户,格式为:
#####vadduser -q 10485760S(邮箱大小) ryan098@domain.com(邮箱帐号) 1234(密码)
#####vmoduser -c ryan(邮箱描述) ryan098@domain.com
#######################################
#####大大的注意:部署正确 以上不会有任何错误。
######################################

###### 设置邮箱容量达到 90%的警告信息
cat >>/home/vpopmail/domains/.quotawarn.msg<<EOF
From: 邮箱管理员
Reply-To: postmaster@gusitasi.com
To: 邮箱用户
Subject: 邮箱空间警告
Mime-Version: 1.0
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: base64
您的邮箱空间已经达到 90%.如果想继续使用,请删除一些信件.
如果需要帮助,请联系邮箱管理员:
Email : postmaster@gusitasi.com
EOF

######设置邮箱已满的警告信息
echo "邮件被拒绝,用户的邮箱空间已满." > /home/vpopmail/domains/.over-quota.msg
cat /home/vpopmail/domains/.over-quota.msg

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



#现在打上 qmail 的补丁:
cd ~/netqmail-1.05/netqmail-1.05
bunzip2 -c ~/qmail-toaster-0.7.2.patch.bz2 | patch -p0
make clean
make
qmailctl stop
make setup check
chown -R vpopmail:vchkpw /var/qmail/spam



#创建 SSL Key

make cert
#按提示输入公司信息
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[root@mail netqmail-1.05]# make cert
Country Name (2 letter code) [AU]:EF
State or Province Name (full name) [Some-State]:Duiwu
Locality Name (eg, city) []:Gusitasijituan
Organization Name (eg, company) [Internet Widgits Pty Ltd]:gusitasihaidao
Organizational Unit Name (eg, section) []:gstsjygcs
Common Name (eg, YOUR name) []:gusitasi.com
Email Address []:mingyun@gusitasi.com




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

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




#启动 qmail
qmailctl start

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

#Vpopmail 的命令:
# 启动,停止,重启,查看队列等
#vpopmailctl start|stop|restart|stat|pause|cont|help
vpopmailctl start
# 检查服务
netstat -an | grep 110
ps -ef | grep qmail |wc -l
#[root@rhel netqmail-1.05]# ps -ef | grep qmail |wc -l
#16
ps -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:00
readproctitle service errors:
#####安装 iGenus(可选) 用户看的的 web mail 界面.iGENUS 不是一套独立的邮件系统,只
是一个 Webmail 接口,需要配合 qmail+vpopmail+Mysql 使用。iGENUS 是由 PHP 写成,
采用直接对 qmail 的 Maildir 进行读写操作,因而比 IMAP/POP 方式更快一点。 参考:
http://www.igenus.org
#####安装:
cd ~
mkdir -p /www/html
tar zxvf igenus_2.0.2_20040901_release.tgz -C /www/
cd /www
rm -rf html/
mv igenus html

#####建 temp 文件夹
mkdir /tmp/temp
chmod -R 755 /tmp/temp
chown -R vpopmail:vchkpw /tmp/temp
mkdir /home/netdisk
chmod -R 0755 /home/netdisk
chown -R vpopmail:vchkpw /home/netdisk
chmod -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 jiadaliwansui
vadduser c1@gusitasi.com c1
vadduser c2@gusitasi.com c2
vadduser xiaojiahuo@gusitasi.com xiaojiahuo
vmoduser -c 毒蝎 c1@gusitasi.com
vmoduser -c 乌鸦 c2@gusitasi.com
vmoduser -c 小家伙 xiaojiahuo@gusitasi.com

最后打开浏览器,输入 http://domain.com/,就可以访问网站了
#######安装 Ezmlm 。ezmlm 是 qmail 的作者 Dan Bernstein 为 qmail 编写的邮件列表管理
器. 它依赖于 qmail 服务器的几个特点工作, 最显著的, 就是它使用 VERPs 来可靠的处理反
弹邮件. ezmlm 在众多邮件列表管理器(MLM)中显得有点独特 , 它不是处理传送到中央
MLM 地 址 的 命 令 , 而 是 将 命 令 附 加 在 列 表 名 字 后 面 . 例 如 , 发 送 邮 件 到 "foo-
subscribe@list.example.net" 来订阅 "foo@list.example.net" 的邮件列表, . 关于 ezmlm 的更多
信息, 参见 http://www.ezmlm.org/, 这是 ezmlm 的非正式 web 站点. ezmlm-idx 的正式站点,
介绍了这个非常棒的 add-on 插件 ezmlm-idx, 它包括了很多有用的特色、                    exmlm 是一个快速 ,
强大的邮件列表程序,可以通过 qmailadmin 对其进行配置

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

cd ezmlm-0.53
patch < idx.patch
chmod u+x makelang
make
make man
 #汉字 GB2312 支持
make ch_GB
make setup




###安装 qmailadmin TOP
#######qmailadmin 除了不能添加删除虚拟域外,几乎可以完成所有的虚拟域管理
#安装:
cd ~
tar -xvzf qmailadmin-1.2.13.tar.gz
cd qmailadmin-1.2.13
chmod -R 755 /www/cgi-bin
mkdir -p /var/qmail/bin/ezmlm
chmod -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
#./configure --enable-imagedi……这里可能要指定 ezmlm dir = /var/qmail/bin/ezmlm
根 据 上 面 的 configure 提 示 。 --enable-htmldir=//usr/local/apache/htdocs   和 --enable-
cgibindir=/usr/local/apache/cgi-bin
make
make install-strip
cd /usr/local/share/qmailadmin/lang
mv en en.bak
cp 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 并设置邮件最大为 4m
echo 4000000 >/var/qmail/control/databytes

#用 qmail 禁止指定地址发到到本邮件域(黑名单)
vi /var/qmail/control/badmailfrom
###这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起 qmail 就
能生效。例如:
#tskj@tianshejituan.com-----限制一个特定的用户
#@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.tar
cd qmail-remove-0.95
make
make install
#就把该软件安装到/usr/local/sbin 下了。

# 配置
mkdir /var/qmail/queue/yanked

# 使用
# 1 查看队列
qmail-remove -q /var/qmail/queue
# 2 删除队列
qmail-remove -r

#这步会把所有队列内容移动到/var/qmail/queue/yanked 目录下。接下来可以决定如何处理该
目录的内容了,垃圾邮件 一般就删掉。
#为了每天让服务器自动清理一下垃圾邮件,建立 qmail-remove.sh 文件
cat>>/root/qmail-remove.sh<< EOF
qmailctl stop
vpopmailctl stop
mkdir -p /var/qmail/queue/yanked
sleep 10
qmail-remove -r
qmailctl start
vpopmailctl start
rm /var/qmail/queue/yanked -rf
mkdir -p /var/qmail/queue/yanked
EOF
chmod 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

More Related Content

What's hot

Strace debug
Strace debugStrace debug
Strace debugluo jing
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redis
paitoubing
 
基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性
babyyellow li
 
Mongo db架构之优先方案
Mongo db架构之优先方案Mongo db架构之优先方案
Mongo db架构之优先方案
Lucien Li
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析
Guangyao Cheng
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newYiwei Ma
 
OpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQLOpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQLHung-yu Lin
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
xuebao_zx
 
Monitor is all for ops
Monitor is all for opsMonitor is all for ops
Monitor is all for ops
琛琳 饶
 
Mongo db部署架构之优先方案
Mongo db部署架构之优先方案Mongo db部署架构之优先方案
Mongo db部署架构之优先方案
Lucien Li
 

What's hot (11)

Strace debug
Strace debugStrace debug
Strace debug
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redis
 
基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性
 
Mongo db架构之优先方案
Mongo db架构之优先方案Mongo db架构之优先方案
Mongo db架构之优先方案
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
 
OpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQLOpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQL
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 
Monitor is all for ops
Monitor is all for opsMonitor is all for ops
Monitor is all for ops
 
Ooredis
OoredisOoredis
Ooredis
 
Mongo db部署架构之优先方案
Mongo db部署架构之优先方案Mongo db部署架构之优先方案
Mongo db部署架构之优先方案
 

Viewers also liked

CompactMINI catalogue EnglishBusiness
CompactMINI catalogue EnglishBusinessCompactMINI catalogue EnglishBusiness
CompactMINI catalogue EnglishBusiness
Cathy Molohan
 
3.架构设计篇2
3.架构设计篇23.架构设计篇2
3.架构设计篇2gavin shaw
 
Codreanu, dorin complaint
Codreanu, dorin complaintCodreanu, dorin complaint
Codreanu, dorin complaintosint
 
约会秘籍 高级篇
约会秘籍  高级篇约会秘籍  高级篇
约会秘籍 高级篇
gavin shaw
 
Architect 201002-by-info q
Architect 201002-by-info qArchitect 201002-by-info q
Architect 201002-by-info qgavin shaw
 
1.基础篇 修改by徐定翔2 去掉批注
1.基础篇 修改by徐定翔2 去掉批注1.基础篇 修改by徐定翔2 去掉批注
1.基础篇 修改by徐定翔2 去掉批注gavin shaw
 
About WowYups
About WowYupsAbout WowYups
About WowYups
wowyups
 
TRE: Steel has never been sexier.
TRE: Steel has never been sexier.TRE: Steel has never been sexier.
TRE: Steel has never been sexier.
Zinco Global
 
Designing.and.implementing.linux
Designing.and.implementing.linuxDesigning.and.implementing.linux
Designing.and.implementing.linux
gavin shaw
 
Dba日记(第一部)
Dba日记(第一部)Dba日记(第一部)
Dba日记(第一部)gavin shaw
 
Dba日记(第一部)
Dba日记(第一部)Dba日记(第一部)
Dba日记(第一部)
gavin shaw
 
Mike Taulty Beyond Silverlight With W P F
Mike Taulty  Beyond  Silverlight  With  W P FMike Taulty  Beyond  Silverlight  With  W P F
Mike Taulty Beyond Silverlight With W P Fukdpe
 
Presentatie IiP | sectie nasktec | flipping - rtti
Presentatie IiP | sectie nasktec | flipping - rttiPresentatie IiP | sectie nasktec | flipping - rtti
Presentatie IiP | sectie nasktec | flipping - rtti
Liemers College
 
Architect 201003-by-info q
Architect 201003-by-info qArchitect 201003-by-info q
Architect 201003-by-info qgavin shaw
 
Empresas sustentables
Empresas sustentablesEmpresas sustentables
Empresas sustentablesZEIDELACRUZ
 
Preachers of Grace, Witnesses to the Resurrection
Preachers of Grace, Witnesses to the ResurrectionPreachers of Grace, Witnesses to the Resurrection
Preachers of Grace, Witnesses to the Resurrection
Jing Cuerdo
 
II Congreso ADAP - Logrando Rendimiento con Display
II Congreso ADAP - Logrando Rendimiento con DisplayII Congreso ADAP - Logrando Rendimiento con Display
II Congreso ADAP - Logrando Rendimiento con Display
Digital Analytics Peru
 

Viewers also liked (20)

CompactMINI catalogue EnglishBusiness
CompactMINI catalogue EnglishBusinessCompactMINI catalogue EnglishBusiness
CompactMINI catalogue EnglishBusiness
 
3.架构设计篇2
3.架构设计篇23.架构设计篇2
3.架构设计篇2
 
Codreanu, dorin complaint
Codreanu, dorin complaintCodreanu, dorin complaint
Codreanu, dorin complaint
 
约会秘籍 高级篇
约会秘籍  高级篇约会秘籍  高级篇
约会秘籍 高级篇
 
Architect 201002-by-info q
Architect 201002-by-info qArchitect 201002-by-info q
Architect 201002-by-info q
 
Presentació Bloc Cs
Presentació Bloc CsPresentació Bloc Cs
Presentació Bloc Cs
 
1.基础篇 修改by徐定翔2 去掉批注
1.基础篇 修改by徐定翔2 去掉批注1.基础篇 修改by徐定翔2 去掉批注
1.基础篇 修改by徐定翔2 去掉批注
 
About WowYups
About WowYupsAbout WowYups
About WowYups
 
TRE: Steel has never been sexier.
TRE: Steel has never been sexier.TRE: Steel has never been sexier.
TRE: Steel has never been sexier.
 
Designing.and.implementing.linux
Designing.and.implementing.linuxDesigning.and.implementing.linux
Designing.and.implementing.linux
 
Dba日记(第一部)
Dba日记(第一部)Dba日记(第一部)
Dba日记(第一部)
 
Dba日记(第一部)
Dba日记(第一部)Dba日记(第一部)
Dba日记(第一部)
 
Mike Taulty Beyond Silverlight With W P F
Mike Taulty  Beyond  Silverlight  With  W P FMike Taulty  Beyond  Silverlight  With  W P F
Mike Taulty Beyond Silverlight With W P F
 
Presentatie IiP | sectie nasktec | flipping - rtti
Presentatie IiP | sectie nasktec | flipping - rttiPresentatie IiP | sectie nasktec | flipping - rtti
Presentatie IiP | sectie nasktec | flipping - rtti
 
Architect 201003-by-info q
Architect 201003-by-info qArchitect 201003-by-info q
Architect 201003-by-info q
 
Empresas sustentables
Empresas sustentablesEmpresas sustentables
Empresas sustentables
 
Parizek
ParizekParizek
Parizek
 
Preachers of Grace, Witnesses to the Resurrection
Preachers of Grace, Witnesses to the ResurrectionPreachers of Grace, Witnesses to the Resurrection
Preachers of Grace, Witnesses to the Resurrection
 
II Congreso ADAP - Logrando Rendimiento con Display
II Congreso ADAP - Logrando Rendimiento con DisplayII Congreso ADAP - Logrando Rendimiento con Display
II Congreso ADAP - Logrando Rendimiento con Display
 
Planner 2.0 e Blog PR
Planner 2.0 e Blog PRPlanner 2.0 e Blog PR
Planner 2.0 e Blog PR
 

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

Mongodb
MongodbMongodb
Mongodbbj
 
nodejs开发web站点
nodejs开发web站点nodejs开发web站点
nodejs开发web站点
xiaojueqq12345
 
0118 Windows Server 2008 的伺服器核心 (Server Core)
0118 Windows Server 2008 的伺服器核心 (Server Core)0118 Windows Server 2008 的伺服器核心 (Server Core)
0118 Windows Server 2008 的伺服器核心 (Server Core)Timothy Chen
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化isnull
 
Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程
manateew
 
8, lamp
8, lamp8, lamp
8, lamp
ted-xu
 
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析
CC
 
南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告
Bo-Yi Wu
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and Design
Ho Kim
 
Glider
GliderGlider
Glider
windyrobin
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
Shengyou Fan
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學
Bo-Yi Wu
 
Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)
旻琦 潘
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
Nand get type
Nand get typeNand get type
Nand get typecri fan
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案
cao jincheng
 

Similar to 古斯塔斯集团的Qmail邮件系统 (20)

Asm+aix
Asm+aixAsm+aix
Asm+aix
 
Mongodb
MongodbMongodb
Mongodb
 
nodejs开发web站点
nodejs开发web站点nodejs开发web站点
nodejs开发web站点
 
0118 Windows Server 2008 的伺服器核心 (Server Core)
0118 Windows Server 2008 的伺服器核心 (Server Core)0118 Windows Server 2008 的伺服器核心 (Server Core)
0118 Windows Server 2008 的伺服器核心 (Server Core)
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
 
Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程
 
8, lamp
8, lamp8, lamp
8, lamp
 
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析
 
南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and Design
 
Glider
GliderGlider
Glider
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
 
Optimzing mysql
Optimzing mysqlOptimzing mysql
Optimzing mysql
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學
 
Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)Rails 快速上手攻略(Rails Getting Started)
Rails 快速上手攻略(Rails Getting Started)
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
Nand get type
Nand get typeNand get type
Nand get type
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案
 

More from gavin shaw

Architect 201001-by-info q
Architect 201001-by-info qArchitect 201001-by-info q
Architect 201001-by-info qgavin shaw
 
Architect 200912-by-info q
Architect 200912-by-info qArchitect 200912-by-info q
Architect 200912-by-info qgavin shaw
 
Architect 200911-by-info q
Architect 200911-by-info qArchitect 200911-by-info q
Architect 200911-by-info qgavin shaw
 
Architect 200910-by-info q
Architect 200910-by-info qArchitect 200910-by-info q
Architect 200910-by-info qgavin shaw
 
O Reilly Learning Python 3rd Edition
 O Reilly Learning Python 3rd Edition O Reilly Learning Python 3rd Edition
O Reilly Learning Python 3rd Edition
gavin shaw
 
[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版
[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版
[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版gavin shaw
 
Python学习手册(第3版)
Python学习手册(第3版)Python学习手册(第3版)
Python学习手册(第3版)gavin shaw
 
[高性能MySQL(第2版)中文版].施瓦茨.扫描版
[高性能MySQL(第2版)中文版].施瓦茨.扫描版[高性能MySQL(第2版)中文版].施瓦茨.扫描版
[高性能MySQL(第2版)中文版].施瓦茨.扫描版gavin shaw
 
Perl语言入门(第五版)
Perl语言入门(第五版)Perl语言入门(第五版)
Perl语言入门(第五版)gavin shaw
 
[精通Perl.中文版].(美)福瓦.扫描版
[精通Perl.中文版].(美)福瓦.扫描版[精通Perl.中文版].(美)福瓦.扫描版
[精通Perl.中文版].(美)福瓦.扫描版gavin shaw
 
[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版
[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版
[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版gavin shaw
 
[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guide
[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guide[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guide
[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guidegavin shaw
 
Workshop ii ed 3.1 (student guide vol 2)
Workshop ii ed 3.1 (student guide vol 2)Workshop ii ed 3.1 (student guide vol 2)
Workshop ii ed 3.1 (student guide vol 2)gavin shaw
 
Workshop ii ed 3.1 (student guide vol 1)
Workshop ii ed 3.1 (student guide vol 1)Workshop ii ed 3.1 (student guide vol 1)
Workshop ii ed 3.1 (student guide vol 1)gavin shaw
 
Workshop i ed 3.1 (student guide vol 2)
Workshop i ed 3.1 (student guide vol 2)Workshop i ed 3.1 (student guide vol 2)
Workshop i ed 3.1 (student guide vol 2)gavin shaw
 
Workshop i ed 3.1 (student guide vol 1)
Workshop i ed 3.1 (student guide vol 1)Workshop i ed 3.1 (student guide vol 1)
Workshop i ed 3.1 (student guide vol 1)gavin shaw
 
Vim user manual_603.0
Vim user manual_603.0Vim user manual_603.0
Vim user manual_603.0gavin shaw
 
Unix.shell范例精解(第4版)
Unix.shell范例精解(第4版)Unix.shell范例精解(第4版)
Unix.shell范例精解(第4版)gavin shaw
 

More from gavin shaw (19)

Architect 201001-by-info q
Architect 201001-by-info qArchitect 201001-by-info q
Architect 201001-by-info q
 
Architect 200912-by-info q
Architect 200912-by-info qArchitect 200912-by-info q
Architect 200912-by-info q
 
Architect 200911-by-info q
Architect 200911-by-info qArchitect 200911-by-info q
Architect 200911-by-info q
 
Architect 200910-by-info q
Architect 200910-by-info qArchitect 200910-by-info q
Architect 200910-by-info q
 
O Reilly Learning Python 3rd Edition
 O Reilly Learning Python 3rd Edition O Reilly Learning Python 3rd Edition
O Reilly Learning Python 3rd Edition
 
[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版
[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版
[Python入门指南].(Python.Tutorial).Guido.Van.Rossum.文字版
 
Python学习手册(第3版)
Python学习手册(第3版)Python学习手册(第3版)
Python学习手册(第3版)
 
[高性能MySQL(第2版)中文版].施瓦茨.扫描版
[高性能MySQL(第2版)中文版].施瓦茨.扫描版[高性能MySQL(第2版)中文版].施瓦茨.扫描版
[高性能MySQL(第2版)中文版].施瓦茨.扫描版
 
Perl语言入门(第五版)
Perl语言入门(第五版)Perl语言入门(第五版)
Perl语言入门(第五版)
 
[精通Perl.中文版].(美)福瓦.扫描版
[精通Perl.中文版].(美)福瓦.扫描版[精通Perl.中文版].(美)福瓦.扫描版
[精通Perl.中文版].(美)福瓦.扫描版
 
[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版
[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版
[MySQL.Cookbook(第2版)].(美)迪布瓦.中文版.扫描版
 
Abs guide
Abs guideAbs guide
Abs guide
 
[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guide
[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guide[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guide
[Oracle数据库11 g初学者指南].oracle.database.11g,.a.beginner's.guide
 
Workshop ii ed 3.1 (student guide vol 2)
Workshop ii ed 3.1 (student guide vol 2)Workshop ii ed 3.1 (student guide vol 2)
Workshop ii ed 3.1 (student guide vol 2)
 
Workshop ii ed 3.1 (student guide vol 1)
Workshop ii ed 3.1 (student guide vol 1)Workshop ii ed 3.1 (student guide vol 1)
Workshop ii ed 3.1 (student guide vol 1)
 
Workshop i ed 3.1 (student guide vol 2)
Workshop i ed 3.1 (student guide vol 2)Workshop i ed 3.1 (student guide vol 2)
Workshop i ed 3.1 (student guide vol 2)
 
Workshop i ed 3.1 (student guide vol 1)
Workshop i ed 3.1 (student guide vol 1)Workshop i ed 3.1 (student guide vol 1)
Workshop i ed 3.1 (student guide vol 1)
 
Vim user manual_603.0
Vim user manual_603.0Vim user manual_603.0
Vim user manual_603.0
 
Unix.shell范例精解(第4版)
Unix.shell范例精解(第4版)Unix.shell范例精解(第4版)
Unix.shell范例精解(第4版)
 

Recently uploaded

一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
h0wovd5
 
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
Koong Lin
 
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
h0wovd5
 
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
h0wovd5
 
VS2022入門................................
VS2022入門................................VS2022入門................................
VS2022入門................................
Rico Chen
 
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
微信 tytyqqww业务接单
 
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
微信 tytyqqww业务接单
 
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
微信 tytyqqww业务接单
 
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
微信 tytyqqww业务接单
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
ictglzse
 
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
h0wovd5
 
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
微信 tytyqqww业务接单
 

Recently uploaded (12)

一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
 
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
 
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
 
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
 
VS2022入門................................
VS2022入門................................VS2022入門................................
VS2022入門................................
 
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
 
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
 
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
 
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
 
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
 
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
 

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

  • 1. 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:c1@gustasi.com/c1 #测试邮箱 2:xiaojiahuo@gusitasi.com/xiaojiahuo
  • 2. #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.rpm rpm -ivh libxml2-devel-2.6.26-2.1.2.8.i386.rpm #3。安装 qmail 补丁过程中需要安装的包: ####错误原文:make: *** [qmail-remote.o] 错误 1 rpm -ivh e2fsprogs-devel-1.39-23.el5.i386.rpm rpm -ivh keyutils-libs-devel-1.2-1.el5.i386.rpm rpm -ivh libselinux-devel-1.33.4-5.5.el5.i386.rpm rpm -ivh libsepol-devel-1.15.2-2.el5.i386.rpm rpm -ivh libselinux-devel-1.33.4-5.5.el5.i386.rpm rpm -ivh krb5-devel-1.6.1-36.el5.i386.rpm rpm -ivh openssl-devel-0.9.8e-12.el5.i386.rpm ####make: *** [tls.o] 错误 1 。原因是 openssl 版本问题,CentOS5.4 默认是 098,实际需要 097 mv /usr/bin/openssl /usr/bin/openssl098 cd ~ tar xzfv openssl-0.9.7i.tar.gz cd openssl-0.9.7i ./Configure make make install find / -name openssl cp /usr/local/ssl/bin/openssl /usr/bin/ #配置支持中文 echo "LANG="zh_CN.GB18030" ">/etc/sysconfig/i18n echo "SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"">>/etc/sysconfig/i18n echo "SYSFONT="latarcyrheb-sun16" ">>/etc/sysconfig/i18n cat /etc/sysconfig/i18n source /etc/sysconfig/i18n LAMP 安装 第一步安装 mysql ################## tar xzfv mysql*.tar.gz cd 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-
  • 3. assembler --with-mysqld-user=mysql --with-federated-storage-engine --with-client-ldflags=-all- static --with-mysqld-ldflags=-all-static #####编译时如报错参看附录 1。 make &&make install cp support-files/my-medium.cnf /etc/my.cnf #####安装 db cd /usr/local/mysql chown -R mysql . chgrp -R mysql . bin/mysql_install_db --user=mysql chown -R root . chown -R mysql var bin/mysqld_safe --user=mysql & #####设置启动项“cd -”是返回上一次所在的目录的意思 cd - cp support-files/mysql.server /etc/rc.d/init.d/mysqld chmod 700 /etc/rc.d/init.d/mysqld chkconfig --add mysqld chkconfig --level 345 mysqld on chkconfig --list mysqld echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf&&ldconfig -v export PATH=$PATH:/usr/local/mysql/bin ln -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` (
  • 4. `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', PRIMARY KEY (`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 '', PRIMARY KEY (`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', PRIMARY KEY (`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 '',
  • 5. `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 '', PRIMARY KEY (`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', PRIMARY KEY (`id`) ) TYPE=MyISAM ; CREATE TABLE `stow` (
  • 6. `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 '', PRIMARY KEY (`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, PRIMARY KEY (`pw_id`), KEY `pw_name` (`pw_name`,`pw_domain`) ) TYPE=MyISAM PACK_KEYS=1 ; FLUSH PRIVILEGES; show databases; QUIT ################### 第二步,安装 apache cd ~ tar -zxvf httpd* cd httpd* ./configure --prefix=/usr/local/apache2 --enable-so make &&make install mkdir -p /www/cgi-bin/ mkdir /www/html/ vi /usr/local/apache2/conf/httpd.conf #####设置 httpd.conf 文件,添加或修改如下的内容(尤其注意 ScriptAlias 和 DirectoryIndex 需要注意插入的位置) : #####!!!!!!!!!!!!!!!! ServerName www.gusitasi.com:80 DocumentRoot "/www/html/" AddType application/x-httpd-php .php AddType applicatoin/x-httpd-php-source .phps User vpopmail
  • 7. Group vchkpw <Directory /www> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> AddDefaultCharset GB2312 ScriptAlias /cgi-bin/ "/www/cgi-bin/" DirectoryIndex index.html index.php #####设置 apache 自启动: cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd vi /etc/init.d/httpd,在第一行加上选文(注意保留#号 ) : #!/bin/sh # chkconfig: 35 70 30 # description: Apache is a World Wide Web server. chmod 700 /etc/init.d/httpd chkconfig --level 345 httpd on chkconfig --list httpd #################### ####第三步,安装 php cd ~ 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 libxml2 installat”错误,可以参照上文安装 rpm 包 make&&make install cp php.ini-dist /usr/local/php5/etc/php.ini ###LAMP 测试 ################ echo "<? phpinfo(); ?>">/www/html/test.php service httpd start curl -I 127.0.0.1 ####最后一步,用 curl 或图形化浏览器来访问 test.php curl 127.0.0.1/test.php ####如果 shell/浏览器输入 N 多内容,代表 php 已经成功的处理了 test.php 那个文件。 ####删除 amp 文件 cd ~ rm -rf httpd* mysql* php*
  • 8. 第四步,安装 bind9(可选,如有 DNS 服务器可忽略此步骤) tar xzfv bind* cd bind* mkdir /etc/bind9 ./configure --sysconfdir=/etc/bind9 --disable-openssl-version-check make &&make install ############开始配置 bind9 cd /etc/bind9 首先挖掘根 dns 创建 ca 文件(详情见附录 3) ,也可以直接运行下面的命令: cat>> named.ca <<EOF A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:ba3e::2:30 B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201 C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12 D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10 F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2f::f G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4 H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:1::803f:235 I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17 J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:c27::2:30 EOF #####rndc 是 bind 软件引进的远程控制通道,代替 unix 信号来控制 named 进程。 接下来 要设置 rndc 文件,并根据 rndc 文件来书写 bind9 自己的配置文件。 rndc-confgen > rndc.conf #####创建 bind9 的主配置文件 named.conf,指定配置文件位置和根文件位置 cat >> named.conf <<EOF options{ directory "/etc/bind9"; }; zone "."{ type hint; file "named.ca"; }; EOF 然后将 rndc.conf 中被 #号注释掉的部分(不含首行“# Use with the……”和尾行 “# End of named.conf”)去掉#号注释追加到 named.conf 的尾部。下面命令中 tail、head 的数值可能会根据你的 rndc.conf 的内容而变换
  • 9. 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 server if [ `id -u` -ne 0 ] then echo "ERROR:For bind to port 53,must run as root." exit 1 fi case "$1" in start) 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 stop sleep 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/named chkconfig --add named chkconfig --level 345 named on
  • 10. ####现在即可通过 service named start | stop | restart |reload |status 进行控制。 #####设置区域 #####现在 bind 的设置已经是一个合格的空壳, 下面就要往壳里写入要解析的区域的内容了 。 #####在 named.conf 里添加区域: cat >>/etc/bind9/named.conf<< EOF zone "gusitasi.com"{ type master; file "gusitasi.com"; }; EOF #####书写区域配置文件 cat >>/etc/bind9/gusitasi.com<<EOF @ 1D IN SOA gusitasi.com. root ( 2008030201 1H 15M 1W 1D ) IN NS ns ns IN A 192.168.118.143 mx1 IN A 192.168.118.143 smtp IN A 192.168.118.143 pop3 IN A 192.168.118.143 gusitasi.com. IN MX 10 mx1.gusitasi.com. www IN A 192.168.118.143 news IN CNAME www EOF #####启动 bind,同时设置本机的 resolv.conf service named start cat /dev/null>/etc/resolv.conf cat >>/etc/resolv.conf<< EOF nameserver 127.0.0.1 search gusitasi.com EOF 测试效果: [root@mail bind9]# host -t mx gusitasi.com gusitasi.com mail is handled by 10 mx1.gusitasi.com. [root@mail bind9]# host www.gusitasi.com www.gusitasi.com has address 192.168.118.143 [root@mail bind9]# host smtp smtp.gusitasi.com has address 192.168.118.143 [root@mail bind9]# host mx1 mx1.gusitasi.com has address 192.168.118.143
  • 11. 清理:rm -rf bind9* ######################## 前面是安装 LAMP 和 bind9,现在是正式安装 qmail 了。请注意,接下来安装的软件和补丁 的版本要求比较严格。 首先检查并卸掉自动安装上的 sendmail 和 mysql。 rpm -qa sendmail mysql service sendmail stop rpm -e --nodeps sendmail rm -rf /usr/sbin/sendmail rpm -qa sendmail mysql rpm -e --nodeps mysql #####解压缩 netqmail-1.05.tar.gz,但是不安装,只是做基础对照; cd ~ tar xzfv netqmail-1.05.tar.gz cd netqmail-1.05 ./collate.sh #####打补丁并安装 daemontools 。daemontools 是一个收集管理 UNIX 进程的工具.用它来监 听 qmail-send,qmail-smtpd,qmail-pop3d cd ~ tar xzfv daemontools-0.76.tar.gz cd admin/daemontools-0.76 patch -p1 < ../../daemontools-0.76.errno.patch ./package/install ps ax | grep svscan #################################################### # 验证 daemontools 已经正常运行: [root@ora1 daemontools-0.76]# ps ax | grep svscan 28555 ? Ss 0:00 /bin/sh /command/svscanboot 28557 ? S 0:00 svscan /service #################################################### #####补丁并安装 ucspi-tcp 说明: ucspi-tcp 软件包由一组工具组成。它们用来简单的建立客户机-服务器 tcp 后台程序。 TcpServer 是一个比 inetd 安全性更好的选择。它内建有基于规则的连接控制,能完善地在达 到预定义的最大系统负载时将连接推迟,这点比 inetd 好。Tcpserver 也被推荐与 qmail 一同 使用,因为它们是同一个作者编的程序。 参考:http://cr.yp.to/ucspi-tcp.html cd ~ tar zxvf ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 patch -p1 < ../ucspi-tcp-0.88.errno.patch make make setup check
  • 12. #####准备安装 qmail cd ~ tar xzfv toaster-scripts-0.7.tar.gz cd netqmail-1.05/netqmail-1.05/ vi qmail-smtpd.c +50 ----------------------------------------- #####搜索函数 straynewline 中的 451 改为 553 第 50 行 #####当你的服务器收到无效格式的邮件时,会发送:"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.",告诉对方的服务器不 要再发这封无效的信件。 #####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 地址的邮件将会由定义的管理员邮箱接收。 #将如下的“admin@gusitasi.com"替换成你的管理员邮箱。 cd /var/qmail/alias echo "xiaojiahuo@gusitasi.com" > .qmail-postmaster echo "xiaojiahuo@gusitasi.com" > .qmail-mailer-daemon echo "xiaojiahuo@gusitasi.com" > .qmail-root chmod 644 /var/qmail/alias/.qmail* #####开启 SPF 设置 echo ./Maildir/ >/var/qmail/control/defaultdelivery echo 3 > /var/qmail/control/spfbehavior
  • 13. #####添加 qmail 的帮助手册 echo MANPATH /var/qmail/man >> /etc/man.config #####为 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 cd ~ cp toaster-scripts-0.7/send.run /var/qmail/supervise/qmail-send/run cp toaster-scripts-0.7/send.log.run /var/qmail/supervise/qmail-send/log/run cp toaster-scripts-0.7/smtpd.run /var/qmail/supervise/qmail-smtpd/run cp toaster-scripts-0.7/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run cp toaster-scripts-0.7/pop3d.run /var/qmail/supervise/qmail-pop3d/run cp toaster-scripts-0.7/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run cp toaster-scripts-0.7/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run cp toaster-scripts-0.7/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 #####设置启动脚本: cd ~ cp toaster-scripts-0.7/rc /var/qmail/rc chmod 755 /var/qmail/rc cp toaster-scripts-0.7/qmailctl /var/qmail/bin/ chmod 755 /var/qmail/bin/qmailctl ln -s /var/qmail/bin/qmailctl /usr/bin ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
  • 14. rm -rf /usr/lib/sendmail ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # 用 daemontools 来启动 qmail-send 和 qmail-smtpd ln -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 25 ps -ef | grep qmail ps -efl | grep "service errors" | grep -v grep ps -ef | grep qmail|grep -v grep |wc -l [root@ora1 rhy]# ps -ef | grep qmail|grep -v grep |wc -l 9 [root@rhel qmail]# ps -efl | grep "service errors" | grep -v grep 4 S root 3729 3289 0 78 0- 619 pipe_w 16:03 ? 00:00:00 readproctitle service 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 relays echo "gusitasi.com" > /home/vpopmail/etc/defaultdomain 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
  • 15. #######设置 MySQL 信 息 ,localhost 是数据库服务的地址,第一个 vpopmail 是 帐 号,ryan098 为密码,第二个 vpopmail 是数据库的名字。 echo "localhost|0|vpopmail|ryan098|vpopmail" > /home/vpopmail/etc/vpopmail.mysql chmod 640 /home/vpopmail/etc/vpopmail.mysql chown -R vpopmail.vchkpw /home/vpopmail/etc ########开始安装: cd ~ tar zxvf vpopmail-5.4.13.tar.gz cd 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-passwords make make 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/profile source /etc/profile ln -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 里添加用户,格式为:
  • 16. #####vadduser -q 10485760S(邮箱大小) ryan098@domain.com(邮箱帐号) 1234(密码) #####vmoduser -c ryan(邮箱描述) ryan098@domain.com ####################################### #####大大的注意:部署正确 以上不会有任何错误。 ###################################### ###### 设置邮箱容量达到 90%的警告信息 cat >>/home/vpopmail/domains/.quotawarn.msg<<EOF From: 邮箱管理员 Reply-To: postmaster@gusitasi.com To: 邮箱用户 Subject: 邮箱空间警告 Mime-Version: 1.0 Content-Type: text/html; charset=gb2312 Content-Transfer-Encoding: base64 您的邮箱空间已经达到 90%.如果想继续使用,请删除一些信件. 如果需要帮助,请联系邮箱管理员: Email : postmaster@gusitasi.com EOF ######设置邮箱已满的警告信息 echo "邮件被拒绝,用户的邮箱空间已满." > /home/vpopmail/domains/.over-quota.msg cat /home/vpopmail/domains/.over-quota.msg #启动脚本: cp ~/toaster-scripts-0.7/vpopmailctl /var/qmail/bin ln -s /var/qmail/bin/vpopmailctl /usr/bin chmod 700 /var/qmail/bin/vpopmailctl #现在打上 qmail 的补丁: cd ~/netqmail-1.05/netqmail-1.05 bunzip2 -c ~/qmail-toaster-0.7.2.patch.bz2 | patch -p0 make clean make qmailctl stop make setup check chown -R vpopmail:vchkpw /var/qmail/spam #创建 SSL Key make cert
  • 17. #按提示输入公司信息 #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [root@mail netqmail-1.05]# make cert Country Name (2 letter code) [AU]:EF State or Province Name (full name) [Some-State]:Duiwu Locality Name (eg, city) []:Gusitasijituan Organization Name (eg, company) [Internet Widgits Pty Ltd]:gusitasihaidao Organizational Unit Name (eg, section) []:gstsjygcs Common Name (eg, YOUR name) []:gusitasi.com Email Address []:mingyun@gusitasi.com #注:这里可能要多等一会,创建证书 make tmprsadh chown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem #启动 qmail qmailctl start # 用 daemontools 来启动 qmail-pop3d 和 qmail-pop3ds ln -s /var/qmail/supervise/qmail-pop3d /service ln -s /var/qmail/supervise/qmail-pop3ds /service #Vpopmail 的命令: # 启动,停止,重启,查看队列等 #vpopmailctl start|stop|restart|stat|pause|cont|help vpopmailctl start # 检查服务 netstat -an | grep 110 ps -ef | grep qmail |wc -l #[root@rhel netqmail-1.05]# ps -ef | grep qmail |wc -l #16 ps -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:00 readproctitle service errors:
  • 18. #####安装 iGenus(可选) 用户看的的 web mail 界面.iGENUS 不是一套独立的邮件系统,只 是一个 Webmail 接口,需要配合 qmail+vpopmail+Mysql 使用。iGENUS 是由 PHP 写成, 采用直接对 qmail 的 Maildir 进行读写操作,因而比 IMAP/POP 方式更快一点。 参考: http://www.igenus.org #####安装: cd ~ mkdir -p /www/html tar zxvf igenus_2.0.2_20040901_release.tgz -C /www/ cd /www rm -rf html/ mv igenus html #####建 temp 文件夹 mkdir /tmp/temp chmod -R 755 /tmp/temp chown -R vpopmail:vchkpw /tmp/temp mkdir /home/netdisk chmod -R 0755 /home/netdisk chown -R vpopmail:vchkpw /home/netdisk chmod -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 jiadaliwansui vadduser c1@gusitasi.com c1 vadduser c2@gusitasi.com c2 vadduser xiaojiahuo@gusitasi.com xiaojiahuo
  • 19. vmoduser -c 毒蝎 c1@gusitasi.com vmoduser -c 乌鸦 c2@gusitasi.com vmoduser -c 小家伙 xiaojiahuo@gusitasi.com 最后打开浏览器,输入 http://domain.com/,就可以访问网站了 #######安装 Ezmlm 。ezmlm 是 qmail 的作者 Dan Bernstein 为 qmail 编写的邮件列表管理 器. 它依赖于 qmail 服务器的几个特点工作, 最显著的, 就是它使用 VERPs 来可靠的处理反 弹邮件. ezmlm 在众多邮件列表管理器(MLM)中显得有点独特 , 它不是处理传送到中央 MLM 地 址 的 命 令 , 而 是 将 命 令 附 加 在 列 表 名 字 后 面 . 例 如 , 发 送 邮 件 到 "foo- subscribe@list.example.net" 来订阅 "foo@list.example.net" 的邮件列表, . 关于 ezmlm 的更多 信息, 参见 http://www.ezmlm.org/, 这是 ezmlm 的非正式 web 站点. ezmlm-idx 的正式站点, 介绍了这个非常棒的 add-on 插件 ezmlm-idx, 它包括了很多有用的特色、 exmlm 是一个快速 , 强大的邮件列表程序,可以通过 qmailadmin 对其进行配置 #安装: cd ~ tar -xvzf ezmlm-0.53.tar.gz tar -xvzf ezmlm-idx-0.42.tar.gz /bin/cp -rf ezmlm-idx-0.42/* ezmlm-0.53/ cd ezmlm-0.53 patch < idx.patch chmod u+x makelang make make man #汉字 GB2312 支持 make ch_GB make setup ###安装 qmailadmin TOP #######qmailadmin 除了不能添加删除虚拟域外,几乎可以完成所有的虚拟域管理 #安装: cd ~ tar -xvzf qmailadmin-1.2.13.tar.gz cd qmailadmin-1.2.13 chmod -R 755 /www/cgi-bin mkdir -p /var/qmail/bin/ezmlm chmod -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
  • 20. #./configure --enable-imagedi……这里可能要指定 ezmlm dir = /var/qmail/bin/ezmlm 根 据 上 面 的 configure 提 示 。 --enable-htmldir=//usr/local/apache/htdocs 和 --enable- cgibindir=/usr/local/apache/cgi-bin make make install-strip cd /usr/local/share/qmailadmin/lang mv en en.bak cp 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 并设置邮件最大为 4m echo 4000000 >/var/qmail/control/databytes #用 qmail 禁止指定地址发到到本邮件域(黑名单) vi /var/qmail/control/badmailfrom ###这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起 qmail 就 能生效。例如: #tskj@tianshejituan.com-----限制一个特定的用户
  • 21. #@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.tar cd qmail-remove-0.95 make make install #就把该软件安装到/usr/local/sbin 下了。 # 配置 mkdir /var/qmail/queue/yanked # 使用 # 1 查看队列 qmail-remove -q /var/qmail/queue
  • 22. # 2 删除队列 qmail-remove -r #这步会把所有队列内容移动到/var/qmail/queue/yanked 目录下。接下来可以决定如何处理该 目录的内容了,垃圾邮件 一般就删掉。 #为了每天让服务器自动清理一下垃圾邮件,建立 qmail-remove.sh 文件 cat>>/root/qmail-remove.sh<< EOF qmailctl stop vpopmailctl stop mkdir -p /var/qmail/queue/yanked sleep 10 qmail-remove -r qmailctl start vpopmailctl start rm /var/qmail/queue/yanked -rf mkdir -p /var/qmail/queue/yanked EOF chmod 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