|
|
| FreeBSD4.7 Qmail Mysql Vpopmail QmailAdmin Sq | | 发布日期:2005-3-28 浏览:371次 | | 关键字: | 本人刚开始考虑使用的是postfix mysql sasl courier-map sqwebmail(详见我发的《中小规模POSTFIX邮件系统》),但是在配置SMTP认证方面没有成功,而且公司的邮件系统又要求使用邮件列表功能,没有找到解决方案,公司的领导又拿着鞭子在后面催赶,所以就使用Qmail了,因为Qmail的资料和软件比较丰富,而且高人也比较多,有问题也有高人帮忙,所以就使用了它。 网上Qmail安装设置的资料很多,我也是参考这些资料完成各项设置的,我写这篇档案的目的是为了避免我忘记设置过程(年纪轻轻的就有了健忘症,痛苦……..),再者我发到网上也让各位高人看看还有什么地方存在问题,那些需要改进,废话少说,言归正传!
一.本文档所需软件 1.ucspi-tcp-0.88.tar.gz http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz 2.checkpassword-0.90.tar.gz(可选) http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz 3.cmd5checkpw-0.22.tar.gzhttp://members.elysium.pl/brush/...checkpw-0.22.tar.gz 4.qmail-1.03.tar.gz http://cr.yp.to/software/qmail-1.03.tar.gz 5.qmail-1.03.patch(Qmail补丁,这个补丁主要是处理有些DNS响应不完全遵从RFC标准,返回大于512字节的DNS应答包时可能出现的问题。) http://www.ckdhr.com/ckd/qmail-103.patch 6.qmail-smtpd-auth-0.31.tar.gz(Qmail补丁)http://members.elysium.pl/brush/...pd-auth-0.30.tar.gz 7.vpopmail-5.3.16.tar.gz http://www.inter7.com/devel/vpopmail-5.3.16.tar.gz 8.Vpopmail汉化文件 http://www.cw-isquare.com/en-us 9.autorespond.tar.gz http://www.netmeridian.com/e-huss/autorespond.tar.gz 10.ezmlm-0.53.tar.gz http://cr.yp.to/software/ezmlm-0.53.tar.gz 11.sqwebmail-3.5.0-CN.tar.gzsqwbmail中文软件包 http://www.cw-isquare.com/sqwebmail-3.5.0-CN.tar.gz 12.Qmail-smtpd.c http://www.cw-isquare.com/qmail-smtpd.c 13.Qmail-smtpd.path(修正Qmailauthsmtp中电子邮件地址任意的patch) http://www.cw-isquare.com/qmail-smtpd.patch.txt 14.Mysql 我是用/usr/ports进行安装的mysql
注意: 1.所有程序下载后放在/down目录下。 2.在安装FreeBSD4.7时请把/home和/var尽量分的大一些,因为/home目录是作为所有用户的邮件存放目录,/var是日志存放目录。 3.一下所有操作都是在root权限下进行的,因为root用户对系统拥有全部的权限,所以操作时请进了小心,不要由于误操作带来不必要的麻烦。
二.DNS设定 我自己没有DNS服务器,负责解析的是我们母公司的DNS服务器,我使用nslooks–q=mxmail.localhost.com命令可以查看到已经绑定到我们公司的IP地址上。 注:mail.localhost.com为我们公司域名,以下相同。
三.Mysql的安装 #cd/usr/ports/database/mysql323-server #makeinstall #cdwork/mysql-3.23.52 #scripts/mysql_install_db #cpsupport-files/my-medium.cnf/etc/my.cnf #/usr/local/bin/safe_mysqld&启动mysql服务 #echo“/usr/local/bin/safe_mysqld&”>>/etc/rc.local使mysql能随系统启动时一起启动 #/usr/local/bin/mysqladmin–uroot–password‘123456’修改mysql用户root密码
添加与root用户相同权限的用户vpopmail,在安装vpopmail时要用到 #cd/usr/local/bin #./mysql-uroot–p #Mysql>usemysql; #Mysql>grantselect,insert,update,delete,create,droponvpopmail.*tovpopmail@localhostidentifiedby'12345678'; 或者安装webmin对数据库进行管理,如果使用以上命令不能使vpopmail用户拥有所有权限,请到webmin的mysql项进行修改。
四.安装TCPSERVER 1.安装ucspi-tcp #cd/down #tarzxvfucspi-tcp-0.88.tar.gz #cducspi-tcp-0.88 #makesetupcheck 2.生成tcp.smtp.cdb #cd/etc #touchtcp.smtp #eetcp.smtp加入一下内容 127.0.0.1:allow,RELAYCLIENT="" #cd/usr/local/bin #./tcprules/etc/tcp.smtp.cdb/etc/tcp.smtp.tmp 五.安装cmd5checkpw #cd/down #mkdir/usr/man #mkdir/usr/man/man8 #tarzxvfcmd5checkpw-0.22.tar.gz #cdcmd5chedkpw-0.22 #make #makeinstall
如果你不需要对/etc/passwd中的用户开放mail,则不需要安装checkpassword,因为我不需要,所以我没有安装。如果你要使用参考一下方法: #cd/down #tarzxvfcheckpassword-0.90.tar.gz #cdcheckpassword-0.90 #makesetupcheck
六.安装Qmail 1.建立Qmail目录 #mkdir/var/qmail #mkdir/var/qmail/alias 2.添加组和用户 #pwgroupaddnofiles #pwgroupaddqmail #pwuseraddalias-gnofiles-d/var/qmail/alias-s/nonexistent #pwuseraddqmaild-gnofiles-d/var/qmail-s/nonexistent #pwuseraddqmaill-gnofiles-d/var/qmail-s/nonexistent #pwuseraddqmailp-gnofiles-d/var/qmail-s/nonexistent #pwuseraddqmailq-gqmail-d/var/qmail-s/nonexistent #pwuseraddqmailr-gqmail-d/var/qmail-s/nonexistent #pwuseraddqmails-gqmail-d/var/qmail-s/nonexistent 在添加一个系统用户admin作为邮件管理用户 #pwuseraddadmin–gwheel 3.给Qmail打补丁 #cd/down #tarzxvfqmail-1.03.tar.gz #patch–d./qmail-1.03#tarzxvfqmail-smtpd-auth-0.30.tar.gz #cdqmail-smtpd-auth-1.30 #cpbase*README.auth../qmail-1.03 #patch-d../qmail-1.034.编译Qmail #makesetupcheck 5../config-fastmail.localhost.com 6.修正SMTP认证信息任意输入和任意更改电子邮件发件人地址的补丁 #cd/down #cpqmail-smtpd.c./qmail-1.03 #cpqmail-smtpd.patch.txt./qmail-1.03 #cdqmail-1.03 #patch#makeqmail-smtpd #cpqmail-smtpd/var/qmail/bin 7.设置投递方式 #cp/var/qmail/boot/home/var/qmail/rc #ee/var/qmail/rc修改以下内容 execenv-PATH="/var/qmail/bin:$PATH"\ qmail-start./Maildir/sploggerqmail 8.添加别名用户 #touch/var/qmail/alias/.qmail-root #touch/var/qmail/alias/.qmail-postmaster #touch/var/qmail/alias/.qmail-mailer-daemon #echopostmaster/var/qmail/control/bouncefrom 注意:/var/qmail/control/locals中必须有缺省域名,否则投递失败的邮件将不知锁踪。 9.停止Sendmail服务 #chmod0/usr/sbin/sendmail #mv/usr/sbin/sendmail/usr/sbin/sendmail.bak #cp/var/qmail/bin/sendmail/usr/sbin/sendmail #vi/etc/rc.conf #ee/etc/rc.conf修改如下选项 sendmail_enable="NO"
七.安装vpopmail 1.建立目录 #mkdir/home/vpopmail #mkdir/home/vpopmail/etc 2.建立组及用户 #pwgroupaddvchkpw #pwuseraddvpopmail–gvchkpw 3.安装vpopmail #tarzxvf-5.3.12.tar.gz #eevmysql.h修改一下内容 #defineMYSQL_UPDATE_SERVER"localhost"(mysql服务器名) #defineMYSQL_UPDATE_USER"vpopmail"(用户名) #defineMYSQL_UPDATE_PASSWD"123456"(改成你设置的密码) #defineMYSQL_READ_SERVER"localhost"(mysql服务器名) #defineMYSQL_READ_USER"vpopmail"(用户名) #defineMYSQL_READ_PASSWD"123456"(改成你设置的密码) 4.创建tcp.smtp文件(或者使用/etc/tcp.smtp) #ee/home/vpopmail/etc/tcp.smtp 127.0.0.1:allow,RELAYCLIENT="" 5.进行编译: #./configure --prefix=/home/vpopmail\\指定安装路径 --enable-mysql=y\\是否应用Mysql数据库 --enable-incdir=/usr/local/include/mysql\\Mysql数据库include文件所在目录 --enable-libdir=/usr/local/lib/mysql\\Mysql数据库lib文件所在目录 --enable-default-domain=localhost.com\\定义虚拟域名 --enable-passwd=n\\是否使用系统密码验证方式 --enable-defaultquota=52428800\\定义缺省邮箱大小,10485760为10MB,20971520为20MB,52428800为50MB --enable-tcprules-prog=/usr/local/bin/tcprules\\指定tcprules目录 --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp\\指定tcprules应用规则文件 --enable-vpopuser=vpopmail\\vpopmail的用户 --enable-vpopgroup=vchkpw\\vpopmail的组 --enable-ip-alias-domains=n\\在虚拟域中允许通过反向IP地址查找虚拟域名 --enable-roaming-users=y\\是否支持外地用户的SMTP的RELAY --enable-sqwebmail-pass=y\\sqwebmail的密码支持 #make #makeinstall-strip
#chmod s/home/vpopmail/bin/vhckpw
八.编辑pop3和smtp的启动脚本 1.#cd/etc #eerc.local添加一下内容
#!bin=bash csh-cf'/var/qmail/rc&' /usr/local/bin/tcpserver-c100-v–lmail.localhost.com-H-U-R0pop3\/var/qmail/bin/qmail-popuptest.mydomain.com\ /home/vpopmail/bin/vchkpw/var/qmail/bin/qmail-pop3dMaildir&
LOG_AUTH=1 exportLOG_AUTH #1003为用户qmaild的id号,1002为组nofiles的id号 /usr/local/bin/tcpserver-H-R-lmail.localhost.com-t1-c100-v-p–x\/etc/tcp.smtp.cdb-u1003-g10020smtp/var/qmail/bin/qmail-smtpd\/home/vpopmail/bin/vchkpw/usr/bin/true/bin/cmd5checkpw/usr/bin/true& 2.reboot 3.检查是否能够添加虚拟域 #cd/home/vpopmail/bin #./vadddomainmail.localhost.com 如果添加失败一定要删除虚拟域,然后查看mysql数据库是否有安装vpopmail时自动添加的数据库,如果没有请检查mysql用户vpopmail是否拥有对数据库拥有全部权限,然后重新安装vpopmail程序。 #./vdeldomainmail.localhost.com
九.重新编译mysql数据库 #/home/vpopmail/bin/vdeldomainmail.localhost.com
#/usr/local/bin/mysql–uroot–p usevpopmail; droptablevpopmail; createtablevpopmail( pw_idint(5)unsignedNOTNULLauto_increment, pw_namevarchar(32)NOTNULLdefault'', pw_domainvarchar(64)NOTNULLdefault'', pw_passwdvarchar(40)NOTNULLdefault'', pw_uidint(11)defaultNULL, pw_gidint(11)defaultNULL, pw_gecosvarchar(64)defaultNULL, pw_dirvarchar(160)defaultNULL, pw_shellvarchar(20)defaultNULL, pw_clear_passwdvarchar(16)defaultNULL, PRIMARYKEY(pw_id), KEYpw_name(pw_name,pw_domain) )TYPE=MyISAM;
退去数据库:quit
重新添加虚拟域和用户 #cd/home/vpopmail/bin #./vadddomainmail.localhost.com输入postmaster密码,这是以后使用qmailadmin管理虚拟域mail.localhost.com的密码 #./vaddusertest输入密码test
检查数据库vpopmail的vpopmail表是否有你添加的用户。
使用客户端foxmail或者outlook测试用户test@localhost.com,用户名test(或者test@localhost.com,因为localhost.com作为默认域名,所以不用输入test后面的@localhost.com),密码test,选择smtp需要认证看能不能使用该帐户进行收发邮件。
十.安装apache 下载apache_1.3.26.tar.gz到/down目录 #tarzxvfapache_1.3.26.tar.gz #cdapache_1.3.26 #./configure--prefix=/usr/local/apache--with-mysql=/usr/local/bin--enable-shared=max #make #makeinstall #/usr/local/apache/bin/apachectlstart #echo“/usr/local/apache/bin/apachectlstart”>>/etc/rc.local
十一.安装qmailadmin
1.安装ezmlm #cd/down #tarzxvfezmlm-0.53.tar.gz #cdezmlm-0.53 #make #makeman #makesetup
或者加入ezmlm的mysql支持 或者加入ezmlm的mysql支持 (ezmlm-idx包含有对ezmlm的修正和补充,他们是一个整体。 tar-zxvfezmlm-0.53.tar.gz tar-zxvfezmlm-idx.0.40.tar.gz mvezmlm-idx-0.40/*ezmlm/ cdezmlm-0.53 patchmakemysql#MySQL支持 makeclean makeman makech_GB#汉字GB2312支持 makesetup)
以上只是一个方法,我没有安装成功,出现一个小小的问题,由于我得邮件列表不算太大,所以我就没有尝试在此安装,如果你需要mysql支持,你可以试一试!
2.安装autorespond #cd/down #tarzxvfautorespond.tar.gz #cd/autorespond #gcc-Wall-oautorespondautorespond.c #cpautorespond/usr/local/bin/autorespond
3.安装qmailadmin #cd/down #tarzxvfqmailadmin-1.0.6.tar.gz #cdqmailadmin-1.0.6 #./configure #make #makeinstall-strip
4.汉化qmailadmin的管理页面 #cd/down #cpen-us/usr/local/share/qmailadmin/html/en
5.测试qmailamdin http://mail.localhost.com/cgi-bin/qmailadmin 输入域:mail.localhost.com 输入postmaster的密码,也就是你添加虚拟域mail.localhost.com是的密码
十二.安装sqwebmail 1.安装sqwebmail #cd/down #tarzxvfsqwebmail-3.5.0-cn.tar.gz #cdsqwebmail-3.5.0 #./configure--without-authpam--with-db=db--enable-webpass=yes--without-authpwd--without-authshadow--without-authmysql--with-authldap--with-authuserdb--with-authpwd--with-authvchkpw--without-authdaemon #makeconfigure-check #make #makeinstall-strip #makeinstall-configure
如果你要同时使用系统用户和虚拟用户: #系统用户采用shadow验证,虚拟域采用vchkpw验证,禁止其他验证方式 echo“authvchkpwauthshadow”>/usr/local/share/sqwebmail/authmodulelist
2.测试sqwebmail http://mail.localhost.com/cgi-bin/sqwebmail 使用用户test,密码test,看看时候能够登录进取和收发邮件!
3.修改apache #cd/usr/local/apache/htdocs #touchindex.html #eeindex.html输入一下内容:
MAILSYSTEM
此时你就可以通过: http://mail.localhost.com 直接来访问sqwebmail了。
十三.结束语 至此,一个支持web收发邮件和smtp认证、mailfromauth的邮件系统已经建立起来了,该系统支持用户漫游功能,支持web页面管理虚拟域。 由于本人技术有限,而且没有任何写作功底,错误之处在所难免,如有发现请批评指正,谢谢!
十四.鸣谢: 感谢网上的很多网友发表的Qmail方面的文档,我的这个安装笔记就是借鉴他们的文档完成的,感谢gadfly对smtp认证和mailfromauth方面的帮助。
十五.附录
1.Qmail的主要配置文件 badmailfromnoneqmail-smtpd黑名单地址 bouncefromMAILER-DAEMONqmail-send退回邮件 bouncehostmeqmail-send退回邮件 concurrencylocal10qmail-send本地同时投递邮件的数目 concurrencyremote20qmail-send同时投递至远程主机的数目 defaultdomainmeqmail-inject默认域名 defaulthostmeqmail-inject默认主机名 databytes0qmail-smtpd邮件的最大容量(0=无限制) doublebouncehostmeqmail-send doublebouncetopostmasterqmail-send envnoathostmeqmail-send没有"@"的默认域名 helohostmeqmail-remote主机名 idhostmeqmail-injectMessage-ID的主机名 localiphostmeqmail-smtpd本地IP的替代名 localsmeqmail-send传递至本地的域名 me系统正式域名various morercpthostsnoneqmail-smtpd第二个rcpthosts percenthacknoneqmail-send使用""格式的域名 plusdomainmeqmail-inject qmqpserversnoneqmail-qmqpcQMQP服务器的IP地址 queuelifetime604800qmail-send在队列中邮件保存的时间(秒) rcpthostsnoneqmail-smtpd接收邮件的域名 smtpgreetingmeqmail-smtpd smtproutesnoneqmail-remote timeoutconnect60qmail-remoteSMTP连接超时时间 timeoutremote1200qmail-remote等待远程主机的时间 timeoutsmtpd1200qmail-smtpdSMTP客户连接超时的时间 virtualdomainsnoneqmail-send虚拟域名
2.vpopmail参数附录: --enable-roaming-users=n|y 当pop3认证通过后,是否打开对该用户的邮件转发(mailrelay),缺省是关闭的。若设置该选项为y,当某个用户通过了pop3认证,则将其IP地址加入许可通过该邮件服务器进行relay的列表中。一个名为clearopensmtp的cronjob程序可以用来实现在这一段时间以后从允许转发邮件地址列表中将该IP地址清除。这个选项要求以-x/etc/tcp.smtp.cdb选项来使用tcpserver运行smtp服务器。 --enable-hardquota=size|nsize为具体的数字 设置或打开磁盘限额功能,NOQUOTA缺省为50M,这里=后面的数字单位为字节,如果要限制磁盘限额为10M就需要使用下面这个配置参数: --enable-hardquota=10000000 若磁盘限额超出,将拒绝接受该用户的新邮件,并返回一封拒绝信息邮件,其中的信息可以定制。 --enable-default-domain=name 该选项为设定缺省域名,推荐将所有的域都设置为虚拟域,并选中一个作为缺省域。对于缺省域的用户,其通过接受邮件时,只需要在用户名中设置其邮件用户名即可,对于其他非缺省域的用户,则需要将用户名设置为@的格式才能通过pop3接受信件。 --enable-ip-alias-domains=y|n 允许通过反向解析来查看虚拟域。缺省情况下,每个域使用基于虚拟域的名字,也就是用户必须在pop3用户名中提供相应的域信息,也就是@.当然也可以使用enable-default-domain配置选项来覆盖该要求。Vpopmail同样支持基于IP地址的虚拟域,若该选项打开则用户不需要在pop3用户名中提供@,vpopmail自动对该用户连接的服务器IP地址进行反向解析,若解析得到一个域名,则vpopmail使用该名字作为域,例如:IP:x.x.x.x对应域名test.com,用户设置pop3服务器的IP地址进行反向DNS查询,得到test.com域名,用户使用test作为用户名,vpopmail使用test.com。 --enable-relay-clear-minutes=360 允许漫游用户通过邮件服务器的转发邮件的时间段。若--enable-roamin-users=y,则该选项设置clearopensmtp应该保持该IP在允许列表中的时间,缺省是3小时。
Mysqloptions --enable-mysql=n|y 使用mysql,缺省是no.允许通过将账号存放在mysql数据库中来认证用户。 意:在配置和编译以前需要修改文件vmysql.h,正确的设置mysql服务器的name/ip,mysql用户和mysql用户密码。该用户必需要拥有创建数据库和在其中创建表格的权限。 --enable-sqlincdir= sql头文件的目录,缺省为/usr/local/mysql. --enable-sqllibdir=/usr/lib/mysql 库文件libmysqlclient.a的目录,缺省为/usr/lib/mysql --enable-sqllibs=mysqlclient mysql库名,缺省为libmysqlclient.a. --enable-large-site=n|y 缺省值为no,使用该选项是为了适应大量用户的情况。缺省的vpopmail将所有的域信息存放在同一个table-vpopmail中,这对于一般情况下具有很好的效率。但是对于大量用户的系统,则需要将该选项设置为yes。这时候,vpoomail将为每个域创建一个table。最主要的区别是域名不存放在数据库中,因为表格包含了域名。对于大于500,000 的用户,这可以节省大量的磁盘空间。但是对于有大量虚拟域的系统可能会影响mysql的性能。
Vpasswd/cdboptions --enable-ucspi-dir=dir 编译好ucspi包的目录位置,使用该目录来设定ucspi-tcp软件包的路径,缺省为../ucspi-tcp-0.84。vpopmail需要使用该目录中的头文件和两个.a文件。
Loggingoptions --enable-logging=e|y|n 打开(y)或关闭(n)使用syslog进行log,或e仅仅log错误信息。设置log级别,缺省仅仅记录pop认证错误信息。 --enable-log-name=vpopmail 设置log名
User/groupoptions --enable-vpopuser=vpopmail 若使用其他的用户来安装该软件包,则在该选项中指定组名。 --enable-vpopgroup=vchkpw 若使用其他的组来安装该软件包,则在该选项中指定组名。 --enable-admin-email=email-address 系统管理员的电子邮件地址。
Directoryandfilelocationoptions --enable-tcpserver-file=/etc/tcp.smtptcpserver–x 使用的邮件转发配置文件的存放目录,缺省为/etc --enable-qmaildir=dir qmail的安装目录指定,缺省为/var/qmail。 --enable-tcprules-prog=/usr/local/bin/tcprules tcprules程序的安装位置,缺省为/usr/local/bin --enable-apop-file=/etc/apop-secrets apop密钥存放目录
Otheroptions --enable-apop=y|n 允许或禁止apop认证,缺省是yes --enable-passwd=y|n 允许或禁止/etc/passwd(或shadow)认证。覆盖自动配置,缺省的配置程序将自动检测系统是使用passwd或shadow密码,通过设置该选项为no,可以禁止所有的/etc/passwd账号认证。
| | 关键字: |
|
|