具体实践起来可以多看看QMAIL的帮助,做好思想准备,心脏不好者请慎重考虑现在许多做的FREEMAIL系统都是使用非系统用户帐号,有的甚至编写自己的FILE SYSTEM,效率更高。
环境
RedHat6.2(2.2.12-20)+mysql.3.22.30+qmail1.03+checkpassword0.81,测试过的PATCH为1.0和1.1。
数据库名设为QMAIL,QMAIL是按默认设置安装在/var/qmail下,下载的源文件都放在 /usr/local/src下。
下载
QMAIL
CHECKPASSWORD
PATCH
MYSQL
安装
建立数据库,结构如下:
CREATE TABLE alias (
username varchar(32) DEFAULT NOT NULL,
alias varchar(64) DEFAULT NOT NULL,
alias_username varchar(32) DEFAULT NOT NULL,
alias_host varchar(64) DEFAULT NOT NULL,
KEY username (username),
KEY alias (alias),
UNIQUE user_alias (username,alias,alias_username,alias_host)
);
CREATE TABLE mailbox (
username varchar(32) DEFAULT NOT NULL,
uid mediumint(9) DEFAULT 0 NOT NULL,
gid mediumint(9) DEFAULT 0 NOT NULL,
home varchar(64) DEFAULT NOT NULL,
password varchar(16) DEFAULT NOT NULL,
PRIMARY KEY (username),
UNIQUE home (home),
KEY password (password)
);
CREATE TABLE rcpthosts (
host varchar(64) DEFAULT NOT NULL,
PRIMARY KEY (host)
);
CREATE TABLE virtual (
username varchar(32) DEFAULT NOT NULL,
ext varchar(64) DEFAULT NOT NULL,
virtual_username varchar(32) DEFAULT NOT NULL,
virtual_host varchar(64) DEFAULT NOT NULL,
PRIMARY KEY (virtual_username,virtual_host),
KEY (virtual_username),
KEY (virtual_host),
UNIQUE virtual (username,ext,virtual_username,virtual_host)
);
安装QMAIL,CHECKPASSWORD
tar xzvf qmail-1.03.tar.gz
mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
make setup check
./config或者 ./config-fast your.full.host.name
注:config 根据DNS来确认主机名+域名,在config后,再config-fast 域名,不然收发邮件都有一个小问题。
建立系统别名
cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
将要设定的用户加入了别名中去
echo xxxx >>.qmail-postmaster ...
chmod 644 ~alias/.qmail*
cp /var/qmail/boot/home /var/qmail/rc
修改rc,将./Mailbox修改为./Maildir/
现在编译的QMAIL是让其支持Maildir格式,如要支持/var/spool/mail格式,只需
cp /var/qmail/boot/proc /var/qmail/rc
让QMAIL在系统启动时自动启动
echo "csh -cf /var/qmail/rc %26amp;" >> /etc/rc.d/rc.local
安装checkpassword
解压:tar -zxvf checkpassword-0.81.tar.gz。进入解压后的目录执行
make
make setup check就可以了。
现基本的QMAIL已经安装完成了,要增加一个系统用户如ABCD需以下步骤:
/usr/sbin/useradd abcd;/usr/bin/passwd abcd 设好口令
以此用户名登录,到此用户的HOME目录下:cd;
/var/qamil/bin/maildirmake Maildir
echo ./Maildir/ >.qmail 这样就好了。
以存在的用户使用Maildir:
以ROOT的话,可以直接su 用户名或直接以root身份在所需用户的HOME目录下
建立Maildir 及.qmail
然后再chown -R 该用户名.该用户组名 用户的HOME目录名。
如以后还建系统用户,可使用以下步骤:
在/etc/skel下建立echo ./Maildir/ >.qmail
/maildirmake Maildir
以后建一个用户就会自动建立Maildir .qmail了
使QMAIL支持数据库
建立一个MYSQL帐号,设帐号名为MAIL
GRANT ALL ON QMAIL.* TO MAIL@LOCALHOST IDENTIFIED BY "PASSWORD"
测试一下mysql -umail -p
建立一个sqlserver文件,包含以下内容
server localhost
login mail
password mail
db qmail
port xxx
socket xxx
只能以一空格键分开,或用等号连接.,将其复制到/VAR/QMAIL/CONTROL,属于
QMAILP.QMAIL-RW-R-R--
此文件的权限及设置都必须正确,不然会出现OUT OF MEMORY之类的出错信息。
PATCH qmail及checkpassword
gunzip qmamil及checkpassword的PATCH文件
进入 qmail-1.03及checkpassword-0.81目录,修改Makefile中的MYSQL_LIB及
MYSQL_INCLUDE指向正确的目录。
然后
QMAIL: patch -p1
checkpassword: patch -p1
make setp check
从Sendmail向Qmail迁移
在/etc/inetd.conf文件中修改或加入smtp ,pop-3(各一行)
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env
tcp-env /var/qmail/bin/qmail-smtpd
pop-3 stream tcp nowait root /var/qmail/bin/qmail-popup
qmail-popup host.domainname /bin/checkpassword /var/qmail/bin/
qmail-pop3d Maildir
具体内容在QMAIL的DOC目录,REMOVE.sendmail有详细介绍。将sendmail的启动语句注释掉,可以试一下
/usr/sbin/ntsyv
再杀掉Sendmail进程.
chmod 0 /usr/lib/sendmail
chmod 0 /usr/sbin/sendmail
chmod 0 /usr/lib/sendmail.mx
mv /usr/lib/sendmail /usr/lib/sendmail.bak
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
killall -HUP inetd
将现有的SENDMAIL邮件迁移到QMAIL下。可以在用户HOME目录Maildir/new下建立一个到/var/spool/mail/用户名的连接 。我是直接将/var/spool/mail/用户名 cp -p 至/home/用户名/Maildir/new下。 如用sendmail的alias需要fastforward,所以我另外建了qmail的alias
测试
启动mysql带--log选项,以便发生错误时查看mysql log找出原因, 启动QMAIL
(csh -cf /var/qmail/rc %26amp;)
查看一下QMAIL的进程:
ps -ax | grep qmail
检查一下
/var/log/maillog的信息
发给一个系统用户,看有没有收到信,如有错误检查home目录Maildir的权限设置虚拟用户:在MAILBOX表格中输入username,uid,gid,home,password信息然后再根据所指定的home建立相应的目录,Maildir .qmail 再chown -R uid.gid home目录。测试一下给此虚拟用户发信。 qmail+mysql安装成功的话在/var/log/maillog及mysql的log下都有查寻数据库的信息。
配制
为其它主机转信须在/var/qmail/control/rcpthosts添加域名,去到relay限制可将此文件删除或试一下加入0.0.0.0, 如使用tcpserver可建立/etc/tcp.smtp来限制relay限制。
设置主机多个域名:将名称加入
/var/qmail/control/local,
/var/qmail/control/rcpthosts
/var/qmail/control/me
别名:
echo "用户">/var/qmail/alias/.qmail-别名
mailist:跟别名一样,只不过在别名文件中键入多个用户,每个用户以回车隔开;但存在一个问题当mailist中包括发件人时,发件人发给mailist自己也能收到,以后我会试一下ezmlm。用户可以在自己的目录里建立Maillist,如用户名为abc,想建一个Maillist发给一组用户只需在abc的HOME目录下建立.qmail-test,将用户加入到此文件中,只后只要发给abc-test就行了。
抄送:
发信给 user1@ab.cd,同时抄送给user2,dd@jite.com。方法:编辑/home/user1/.qamil 内容如下
./Maildir/
|forward user2 dd@jite.com
转信:
user1@ab.cd转向dd@jite.com 。方法:编辑/home/user1/.qamil 内容如下
dd@jite.com
去掉转信和发信的限止:去掉/var/qmail/control/rcpthosts文件
masquerading:
在/var/qmail/control/defaulhost中加入要伪装的主机名,将此文件设为644。具体实践起来可以多看看QMAIL的帮助。现在许多做的FREEMAIL系统都是使用非系统用户帐号,有的甚至编写自己的FILE SYSTEM,效率更高
,
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




