GoldStar Studio

Previous Index Next

qmail Vpopmail And sqwebmail HOWTO(4)

4:安装及测试

本系统的安装极为方便,如果你使用相关脚本安装,可以毫不夸张的说:和安装rpm包一样简单,基本可以达到 run-and-then-it-works。

4.1:基本系统

  • 1:

    rpm --rebuild ucspi-tcp-0.88-1.src.rpm

    rpm --rebuild daemontools-0.70-3.src.rpm

    rpm --rebuild supervise-scripts-2.4-1.src.rpm

    rpm --rebiuld ucspi-unix-0.34.src.rpm

  • 2:

    rpm -ivh /usr/src/redhat/RPMS/i386/ucspi-tcp-0.88-1.i386.rpm

    rpm -ivh /usr/src/redhat/RPMS/i386/ucspi-unix-0.34.i386.rpm

    rpm -ivh /usr/src/redhat/RPMS/i386/daemontools-0.70-3.i386.rpm

    rpm -ivh /usr/src/redhat/RPMS/noarch/supervise-scripts-2.4-1.noarch.rpm

  • 3:

    rpm -e --nodeps sendmail

  • 4:

    rpm --rebiuld qmail-1.03+patches-18.src.rpm

    rpm -ivh /usr/src/redhat/RPMS/i386/qmail-1.03+patches-18.i386.rpm

  • 5:config

    (replace 192.168.2 with your own IP,replace hleil with your own user name)

    echo "127.:allow" >> /etc/tcpcontrol/pop-3.rules

    echo "192.168.2.:allow" >> /etc/tcpcontrol/pop-3.rules

    echo '127.:allow,RELAYCLIENT=""' >> /etc/tcpcontrol/smtp.rules

    echo '192.168.2.:allow, RELAYCLIENT=""' >> /etc/tcpcontrol/smtp.rules

    (Bug Fix:这里漏掉了:,感谢王钊(wangzhao@kmnews.com.cn)捉虫)

    tcprules /etc/tcpcontrol/pop-3.cdb /etc/tcpcontrol/pop-3.tmp \

    < /etc/tcpcontrol/pop-3.rules

    tcprules /etc/tcpcontrol/smtp.cdb /etc/tcpcontrol/smtp.tmp \

    < /etc/tcpcontrol/smtp.rules

    echo hleil > /etc/qmail/alias/.qmail-root

  • 6:Start pop3 and smtp:

    killall -HUP init

    svc-add /var/qmail/service/pop3d

    svc-add /var/qmail/service/smtpd

    OK!基本的qamil系统已安装完毕,够简单吧!root的邮件将发往hleil。

    要是你还嫌麻烦,我编辑了一个脚本qmail-1.03-18,修改一下,执行:

    ./qmail-1.03-18 install

    就行了!

    安装脚本请到此下载

  • 7:说明

    本qmail没有auto-create-Maildir-when-a message arrived 功能,需手工为用户建立Maildir,或使用此脚本来转换mailbox->Maildir并为每个系统用户建立Maildir!

  • 8:测试

    OK!现在测试,给你自己发封邮件,看看能不能收到?当然,肯定没问题!

    打开Outlook,发送和接收都应该是正常的!

  • 9:其他问题

    使用中的问题参见FAQ!

4.2:vpopmail

  • 1:

    确保mysql运行正常,添加用户vpopmail,vpopmailread,vpopmail拥有全部权限,用于创建及管理 ,vpopmailread只可select,用于vpopmail的日常运行。不要为vpopmail设定default-domain。实在无此必要。并可能带来不必要的麻烦。

  • 2:

    tar- zxvf vpopmail-4.10.24.tar.gz

  • 3:

    cd vpopmail-4.10.24

    echo '#define MYSQL_UPDATE_SERVER "localhost"' >> vmysql.h

    echo '#define MYSQL_UPDATE_USER "vpopmail"' >> vmysql.h

    echo '#define MYSQL_UPDATE_PASSWD "vpopmailadmin"' >> vmysql.h

    echo '#define MYSQL_READ_SERVER "localhost"' >> vmysql.h

    echo '#define MYSQL_READ_USER "vpopmailread"' >> vmysql.h

    echo '#define MYSQL_READ_PASSWD "vpopmailread"' >> vmysql.h

    创建vchkpw组及vpopmail用户

    ./configure --enable-auth-logging=y --enable-logging=v \

    --enable-log-name=vpopmail \

    --enable-mysql=y --enable-roaming-users=y \

    --enable-harkdquota=20000000 --enable-sqwebmail-pass=n \

    --enable-many-domains=n --enable-passwd=y \

    --enable-tcpserver-file=/etc/tcpcontrol/smtp \

    --enable-sqlincdir=/usr/include/mysql --enable-sqllibdir=/usr/lib/mysql \

    --enable-sqllibs=mysqlclient \

    --enable-ip-alias-domains=y --enable-qmail-ext=y \

    --enable-hardquota=20000000 --enable-mysql-replication=n \

    --enable-valias=y

    make clean

    make

    make install-strip

    (replace "$vpopmailhome" with your realy path)

    echo "$vpopmailhome"/bin/vchkpw > /etc/qmail/control/checkpassword

    svc-stop /service/pop3d

    svc-start /service/pop3d

    edit /etc/crontab,add this line(of course replace home-dir-of-vpopmail with realy path):

    40 * * * * /home-dir-of-vpopmail/bin/clearopensmtp 2>&1 > /dev/null

    then(非常重要!否则你的vpopmail设置会在下一个整点之后消失):

    rm -f /etc/cron.hourly/qmail

    OK!

    安装脚本请到此下载

  • 4:系统说明:

    pop3:用vchkpw代替checkpasswd,本域用户查找/etc/passwd,虚拟域用户查找mysql; smtp:由于启用了roaming-user,远程用户pop之后,ip自动保存40分钟,此阶段内,用户可用此IP发信。 由于qmail-1.03+patches-18.src.rpm默认安装了一个自动更新/etc/qmail/users/assign及 /etc/qmail/users/cdb的/etc/cron.hourly/qmail,每小时更新/etc/passwd到 /etc/qmail/users/cdb,更新过程简单覆盖/etc/qmail/users/assign,若不删除,将导致 vpopmail丢失在/etc/qmail/users/assign及/etc/qmail/users/cdb中的配置。其实对于很少系统 用户的系统来说,直接查询/etc/passwd并不会导致系统性能下降,因此删除此文件!不必找替代方案 (否则要写个脚本代替了)。

  • 5:测试

    cd ~vpopmail/bin

    ./vadddomain test.com

    输入密码(本域的postmaster的口令,随便设置啦),你就可以建立一个test.com的虚拟域了,然后

    早就存在的错误,好在大家都知道啦:)

    ./vadduser user1@test.com

    然后根据提示,设定user1@test.com的口令,OK,你已经有了一个基于虚拟域test.com的用户账号user1,此账号和系统本身是毫不相关的!

    在Outlook中设定一个新账号,注意用户名应该填user1%test.com!然后测试收发,OK!

4.3:qmailadmin

4.3.1:autorespond

tar -zxvf autorespond-1.0.0.tar.gz

cd autorespond-1.0.0

gcc -Wall -o autorespond autorespond.c #不必理会编译警告

cp autorespond /usr/local/bin/

OK!

4.3.2:ezmlm and ezmlm-idx with MySQL support!

ezmlm-idx包含有对ezmlm的修正和补充,他们是一个整体。

tar -zxvf ezmlm-0.53.tar.gz

tar -zxvf ezmlm-idx.0.40.tar.gz

mv ezmlm-idx-0.40/* ezmlm/

cd ezmlm-0.53

patch < idx.patch

make mysql #MySQL 支持

make clean

make man

make ch_GB #汉字GB2312支持

make setup

4.3.3:qmailadmin

tar -zxvf qmailadmin-0.54.tar.gz

cd qmailadmin-0.54

(RedHat 7.1的http主目录有所改变)

mkdir /var/www/qmailadmin

./configure --enable-cgibindir=/var/www/cgi-bin \

--with-htmllibdir=/var/www/qmailadmin --enable-htmldir=/var/www

make clean

make

make install-strip

OK!

4.3.4:测试

qmailadmin的测试very easy,打开浏览器,http://xx.xx.xx.xx/cgi-bin/qmailadmin

输入虚拟域名及postmaster口令,Ok,可以管理本域的用户了。

注意:为了启用maillist的MySQL支持,你必须首先:

  • 建用户:(Ex:user:ezmlm,pass:ezmlm)

    mysql -u root -pXXXXX

    >use mysql;

    >insert into user values('localhost','ezmlm','','y','y','y','y','y','y','y','y','y','y','y','y','y','y');

    >update user set password=password('ezmlm') where user='ezmlm';

    >FLUSH PRIVILEGES;

    >exit;

  • 建库:(Ex:database:ezmlm)

mysqladmin -u root -pXXXXX create ezmlm

在你建立一个基于MySQL的maillist之前,你必须保证ezmlm库中已存在一个对应的表:

Ex:你想建一个基于MySQL的maillist:testlist

/usr/local/bin/ezmlm/ezmlm-mktab -d testlist | mysql -uezmlm -pezmlm -f ezmlm

这样就在ezmlm库中为testlist建立了一系列相关表格:

| testlist |

| testlist_allow |

| testlist_allow_slog |

| testlist_cookie |

| testlist_deny |

| testlist_deny_slog |

| testlist_digest |

| testlist_digest_cookie |

| testlist_digest_mlog |

| testlist_digest_name |

| testlist_digest_slog |

| testlist_mlog |

| testlist_mod |

| testlist_mod_slog |

| testlist_name |

| testlist_slog

你可以用mysqlshow -u root -pXXXX ezmlm 察看!

OK!现在已可以通过qmailadmin建一个支持MySQL的maillist:testlist,选择Enable SQL support,

SQL setting:

host:localhost,port:3306,user:ezmlm,password:ezmlm,database:ezmlm,table:testlist

Click Add,OK!Congratulate yourself!

如果你不需要MySQL支持,就不用这么麻烦了!

安装脚本请到此下载!已经建好了缺省的数据库:ezmlm,用户:ezmlm;测试表:list。

另外请大家探讨一下如何使qmailadmin在建支持MySQL的maillist时自动建表。欢迎发信至hleil@163.com

4.4:vqsignup

vqsignup的安装文档说“This program is not easy to install, so good luck ;]”,据我的经验, vqsignup的安装相当简单,由于涉及比较多的文件编辑工作,同时比较简单,所以,vqsignup不提供安装脚本。以下 是安装过程:

  • 1:tar -zxvf vqsignup-0.5.tar.gz
  • 2:编译

    cd vqsignup-0.5

    ./configure

    make

  • 3:执行部分

    cp vqsignup /var/www/cgi-bin/vqsignup.cgi

    chown vpopmail /var/www/cgi-bin/vqsignup.cgi

    chgrp vchkpw /var/www/cgi-bin/vqsignup.cgi

    chmod ug+s /var/www/cgi-bin/vqsignup.cgi

    cp vqsignup.conf /var/www/cgi-bin/

    chmod ugo+r /var/www/cgi-bin/vqsignup.conf

  • 4:html界面

    mkdir /var/www/cgi-bin/vqsignup

    mkdir /var/www/cgi-bin/vqsignup/html

    cp html/* /var/www/cgi-bin/vqsignup/html/

    cp vqsignup.html /var/www/html

  • 5:修改

    修改 /var/www/html/vqsignup.html 的下拉列表项以符合你的虚拟域;

    修改 /var/www/cgi-bin/vqsignup.conf 的add_domain项以符合你的虚拟域;

    /var/www/html/vqsignup.html和/var/www/cgi-bin/vqsignup.conf的虚拟域必须一一对应。

  • 6:测试

    打开浏览器,http://xxx.xxx.xxx.xxx/vqsignup.html

    输入用户名、密码,Click Submit,OK!

    你可以使用qmailadmin察看,对应的虚拟域中已经多了一个用户!

4.5:sqwebmail

伴随1.0发布的sqwebmail安装脚本不可用,请大家注意!

在脚本中设定的环境变量好像不起作用,如果用手工方式设定环境变量,然后执行 ./configure ...... 就一切OK!我不知道是什么原因,如果你解决了这个问题,请不吝赐教

OK,现在让我们手工编译sqwebmail吧,好在比较简单。

  • 1:

    确保已经下载了最新的preauthvchkpw.c(if use vpopmail4.10.X)

    tar -zxvf sqwebmail-2.1.1.tar.gz

    cp -f preauthvchkpw.c sqwebmail-2.1.1/authlib

  • 2:编译

    cd sqwebmail-2.1.1

    #设定环境

    INCS=-I/usr/include/mysql

    export INCS

    LIBS="-L/usr/lib/mysql -lmysqlclient -lz"

    export LIBS

    CPPFLAGS=-I/usr/include/mysql

    LDFLAGS=-L/usr/lib/mysql

    export CPPFLAGS

    export LDFLAGS

    ./configure --with-cachedir --without-gzip --enable-webpass=yes \

    --enable-softtimeout=300 --enable-autopurge=180 --enable-maxpurge=180 \

    --with-htmllibdir=/var/www/sqwebmail --enable-cgibindir=/var/www/cgi-bin \

    --enable-imagedir=/var/www/images/sqwebmail \

    --enableimageurl=/images/sqwebmail/ \

    --enable-mimecharset=gb2312 --with-maxargsize=5000000 \

    --with-maxformargsize=5000000 --with-maxmsgsize=5000000 --without-ispell \

    --with-authshadow --without-authmysql --with-authldap --with-authuserdb \

    --with-authpwd --without-authpam --with-authvchkpw --without-authdaemon

    make configure-check;make;make check;make install-strip;make install-configure

    #系统用户采用shadow验证,虚拟域采用vchkpw验证,禁止其他验证方式

    echo "authvchkpw authshadow" > /var/www/sqwebmail/authmodulelist

  • 3:关于gb2312的说明:

    按照“SqWebMail Language translations”的说明,似乎设定其他语言是一件很复杂的事,由于 “SqWebMail Language translations”没有随版本更新,不清楚对于sqwebmail-2.1.1来说有没有变动, 但我没有按照它说的去做,而是这样:

    cd /var/www/sqwebmail/html

    mkdir zh_CN

    cp en_us/* zh_CN/

    rm -f en

    ln -s zh_CN en

    #设定

    cd en

    echo zh_CN > LANGUAGE

    echo zh_CN zh_CN >LANGUAGE_PREF

    echo zh_CN > LOCALE

    echo gb2312 > CHARSET

    然后编辑所有.html文件,换成汉字。使用中没有发现问题。

  • 4:测试

    打开浏览器,http://xxx.xxx.xxx.xxx/cgi-bin/sqwebmail

    输入用户名、口令,OK!(系统用户直接输入用户名、虚拟域用户输入Email地址:user@domain.com)

  • 5:更多问题请看FAQ!

Valid XHTML 1.0 StrictCopyright © 2001-2006 GoldStar Studio. All rights reserved.

鲁ICP备11008313号