CSDN博客

img gbopeng

Redhat9.0下Qmail完全安装笔记(比较齐全的哦)

发表于2004/9/21 15:53:00  1127人阅读

分类: Liunx

Redhat9.0下Qmail完全安装笔记(比较齐全的哦)
http://www.chinaunix.net 作者:cloudxx  发表于:2003-10-23 21:55:20

 

Redhat9.0+Qmail+smtp-auth+Vpopmail+MySQL+Igenus+ezmlm+autorespond+qmailadmin+sqwebmail+antivir-mailgate安装笔记
 
cloud/2003.10.23
mail:flashc@21cn.com
声明:这个文档不是我原创的,甚至还有抄袭的哦(不要告我亲权哟^~^),只是我在学习qmail时做的一些整理,基本上齐全的收集了安装时常见的一些问题和解决方法。个人水平有限,不能保证其完全可用。(基本上没什么问题,就缺最后测试一次了,因我装了sqwebmail后我的验证坏掉了,一直没法搞定,有时间需要重新安装系统测试,测试后我会重新编辑此笔记的,文中有错误的地方希望大家指出,共同学习,谢谢

 首先,如果你的mysql是自己编译安装,并指定了安装目录的话,那么先复制mysql的库文件和include文件到/usr/lib和/usr/include目录下,否者安装后,如果能发信,不能收信,一般也是由于找不到mysql的库文件造成的。apache请使用vpopmail和vchpkw的用户/组运行。主要讲下如何安装mail服务器,其他的apache,php,mysql就不多说了,不懂的朋友请查下我以前的帖子。
 # cp /web/mysql/lib/mysql/* /usr/lib/ 
 # cp /web/mysql/include/mysql/* /usr/include/ 
 
 ●安装ucspi-tcp-0.88 
 1.下载相应软件及补丁,由于redhat9.0的glibc的版本问题,必须打补丁才能正常编译。 
 2.安装ucspi-tcp-0.88 
 #tar zxvf ucspi-tcp-0.88.tar.gz 
 #cd ucspi-tcp-0.88 
 #patch -p1 < ../ucspi-tcp-0.88.a_record.patch 
 #patch -p1 < ../ucspi-tcp-0.88.errno.patch 
 #patch -p1 < ../ucspi-tcp-0.88.nobase.patch 
 #make 
 #make setup check 
 
 ●安装qmail 
 1.下载软件及补丁: 
 2.建立目录: 
 # mkdir /var/qmail 
 # mkdir /var/qmail/alias 
 3.建组及用户: 
嫌麻烦也可以在qmail源码目录找到一个INSTALL.ids的文件,用sed或者其他什么编辑器提取出适合你系统的命令,保存为一个新文件,source filename就ok了。
 # groupadd nofiles 
 # groupadd qmail 
 # useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent 
 # useradd qmaild -g nofiles -d /var/qmail -s /nonexistent 
 # useradd qmaill -g nofiles -d /var/qmail -s /nonexistent 
 # useradd qmailp -g nofiles -d /var/qmail -s /nonexistent 
 # useradd qmailq -g qmail -d /var/qmail -s /nonexistent 
 # useradd qmailr -g qmail -d /var/qmail -s /nonexistent 
 # useradd qmails -g qmail -d /var/qmail -s /nonexistent 
 4.打补丁及编绎安装qmail 
 #tar zxvf qmail-1.03.tar.gz 
 #tar zxvf qmail-smtpd-auth-0.31.tar.gz 
 #cp qmail-smtpd-auth-0.31/base64.* qmail-1.03 //安装smtp-auth补丁,支持smtp认证 
 #patch -d qmail-1.03 < qmail-smtpd-auth-0.31/auth.patch 
 #cd qmail-1.03 
 #patch -p1 < ../qmail-103.patch 
 #patch -p1 < ../qmailqueue-patch 
 #patch -p1 < ../qmail-maildir++.patch 
 #patch -p1 < ../qmail-1.03.errno.patch 
 #patch -p1 < ../qmail-1.03.qmail_local.patch 
 #vi qmail-smtpd.c //将函数straynewline中的451改为553 
//将451改为553是为避免当其它服务器给你发来无效格式的邮件时,你的服务器陷入循环应答。当你的服务器收到无效格式的邮件时,一般会发送:"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.",告诉对方的服务器不要再发这封无效的信件。 
 
 # make setup check 
 # ./config-fast mail.cloud.com 
 
 
 5.添加别名用户: 
 # touch /var/qmail/alias/.qmail-root 
 # touch /var/qmail/alias/.qmail-postmaster 
 # touch /var/qmail/alias/.qmail-mailer-daemon 
 # chmod 644 /var/qmail/alias/.qmail*
 # echo postmaster > /var/qmail/control/bouncefrom  //退回邮件
 # echo mail.cloud.com > /var/qmail/control/helohost  //主机名(解决新浪拒收邮件问题)
 # echo 10485760 > /var/qmail/control/databytes     //接收邮件的最大容量 (0=无限制)??
 # echo 40 > /var/qmail/control/concurrencylocal    //本地同时投递邮件的数目
 # echo 40 > /var/qmail/control/concurrencyremote    、、同时投递至远程主机的数目
 注意:
 /var/qmail/control/locals中必须有缺省域名,否则投递失败的邮件将不知所踪。

 6.如果存在postfix和sendmail,停用现在的mail服务 
 #/etc/rc.d/init.d/sendmail stop 
 #cp /var/qmail/bin/sendmail /usr/sbin/qmail.sendmail 
 #rm -f /etc/alternatives/mta 
 #ln -s /usr/sbin/qmail.sendmail /etc/alternatives/mta 
 
 # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail 
 # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 
 #chmod 777 /usr/sbin/sendmail  //这里特别要注意检查/usr/sbin/sendmail的属性.不然会导致装完后用igenus在web界面发信不成功
 
 
 ●安装vpopmail 
 1.下载vpopmail的稳定版 
 2.建立目录: 
 #mkdir /home/vpopmail 
 #mkdir /home/vpopmail/etc 
 3.添加用户和组: 
 #groupadd vchkpw 
 #useradd -g vchkpw vpopmail 
 4.添加mysql的vpopmail用户,用于操作vpopmail数据库 
 #mysql -u root -pwangxu //进入mysql命令行 
 mysql>create database vpopmail; 
 mysql>grant all on vpopmail.* to vpopmail@localhost identified by "密码"; 
 5.编译安装vpopmail 
 #tar zxvf vpopmail-5.2.1.tar.gz 
 #cd vpopmail-5.2.1 
 #vi vmysql.h 
 
 #define MYSQL_UPDATE_SERVER "localhost" (mysql服务器名) 
 #define MYSQL_UPDATE_USER "vpopmail" (用户名) 
 #define MYSQL_UPDATE_PASSWD "wangxu" (改成你设置的密码) 
 
 #define MYSQL_READ_SERVER "localhost" (mysql服务器名) 
 #define MYSQL_READ_USER "vpopmail" (用户名) 
 #define MYSQL_READ_PASSWD "wangxu" (改成你设置的密码) 
 
 6.创建tcp.smtp文件(或者使用/etc/tcp.smtp) 
 # vi /home/vpopmail/etc/tcp.smtp 
 
  127.0.0.1:allow,RELAYCLIENT="" 
 :allow 
 
 #cd /home/vpopmail/etc 
 #tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp 
 7.进行编译: 
 # ./configure  --prefix=/home/vpopmail //指定安装路径 
                --enable-mysql=y //是否应用Mysql数据库 
                --enable-incdir=/usr/include/mysql //Mysql数据库include文件所在目录 
                --enable-libdir=/usr/lib/mysql //Mysql数据库lib文件所在目录 
                --enable-default-domain=mydomain.com //定义虚拟域名 
                --enable-passwd=n //是否使用系统密码验证方式 
                --enable-defaultquota=10485760 //定义缺省邮箱大小,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-sqwebmail-pass=y //sqwebmail密码验证支持
                --enable-hardquota=10000000 //限制磁盘限额为10M就需要使用下面这个配置参数,若磁盘限额超出,将拒绝接受该用户的新邮件,并返回一封拒绝信息邮件,其中的信息可以定制
 # make 
 # make install-strip 
 8.创建虚拟域 
 # cd /home/vpopmail/bin 
 # ./vadddomain 域名 (密码) (在mysql数据库vpopmail中自动生成vpopmail表单,生成的密码是postmaster@域名帐户的密码,以后登陆qmailadmin就是使用postmaster登陆的) 
 # ./vadduser 用户名 密码 (会自动往表vpopmail中添加用户数据,用户添加到默认的域里面。如果要添加到其他的虚拟域,用户名要带域名,如demo@demo.com) 
 如果不成功的话,则必须先删除创建的域,./vdeldomain 域名 不要使用手工操作mysql删除域和用户帐号,否则会引起系统帐户的紊乱)
 
 ●smtp-auth的设置 
 1.修改vchkpw的属性 
 #chmod 4755 vchkpw 
 #chown root.root vchkpw 
 如果使用带验证的smtp,smtp进程要调用密码验证程序,则必须要使用 setuid 和setgid。提高vchkpw的权限,才能完成setgid操作。 
 2.下载安装cmd5checkpw 
 #tar zxvf cmd5checkpw-0.22.tar.gz 
 #cd cmd5checkpw-0.22 
 #make 
 #mkdir /usr/man 
 #mkdir /usr/man/man8 
 #make install 
  
 注意,因为使用vpopmail,所以checkpassword不用安装。 
 
 ●生成qmail的启动脚本 
 #cp /var/qmail/boot/home /var/qmail/rc 
 # vi /var/qmail/rc //对rc文件进行修改,以决定投送方式: 
 
 #!/bin/sh 
 
 # Using splogger to send the log through syslog. 
 # Using dot-forward to support sendmail-style ~/.forward files. 
 # Using qmail-local to deliver messages to ~/Mailbox by default. 
 
 exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ splogger qmail & 
 
 
 #vi /var/qmail/smtp //编辑smtp服务的启动脚本 
 
 #!/bin/sh
 # -c 100指同时并行连接数为100
 QMAILDUID=qmaild
 NOFILESGID=nofiles

 /usr/local/bin/tcpserver -H -R -c 100 -l 0 -t 1 -v -p -x /home/vpopmail/etc/tcp.smtp.cdb -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd mail.cloud.com /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &
 
 
 #vi /var/qmail/pop3 //编辑pop3服务的启动脚本 
 
 #!/bin/sh

 /usr/local/bin/tcpserver -l mail.cloud.com -U -c 100 -H -R 0 pop3 /var/qmail/bin/qmail-popup mail.cloud.com  /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
 
 
 //这里要注意,这三个文件中的命令在一行,最好直接复制,绝对可用,我自己的启动脚本copy过来的。 
 #chmod 755 /var/qmail/rc 
 #chmod 755 /var/qmail/smtp 
 #chmod 755 /var/qmail/pop3 
 
 运行qmail并测试 
 #/var/qmail/rc 
 #/var/qmail/smtp 
 #/var/qmail/pop3 
 #ps aux | grep "qmail" //查看qmail的服务进程是否已完全正常启动 
 如果qmail已正常启动,用outlook测试qmail的smtp和pop3是否正常,注意由于vpopmail支持虚拟域名,所以在outlook中设置邮件帐号时,用户名后要加上域名,如demo@demo.com。smtp是带认证的,在outlook中也要作相应设置。建议先将qmail测试正常后再安装igenus。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录,这样容易很快找出问题。 
需要注意的是:
如果你在X下用X的kmail客户端测试,smtp的验证要选择LOGIN,POP的验证选择纯文本(APOP是错的,虽然有时候mail客户端会自动检测条到APOP上面),如果有好几个验证方式给你选择的话。
如果能发信,但收不到,这个时候看一下/var/log/maillog会找到答案的,一般是由于找不到libmysqlclient.so.12这个mysql库文件造成的,前面我之所以要copy到/usr/lib下就是因为这个问题经常卡我(因我都是编译安装程序的,所以程序的位置都指定了的)
 
 ●安装并运行igenus 
 1.到http://www.igenus.org下载最新的安装包 
 #tar zxvf igenus_2_20030516_snap.tgz -C /www/htdocs/  
 2.建temp文件夹 
 cd /www/htdocs/igenus 
 mkdir temp 
 chmod -R 0755 temp 
 chown -R vpopmail:vchkpw temp 
 3.修改httpd.conf 
 #vi /web/httpd/conf/httpd.conf 
 Group Apache 
 User Apache 
 修改为: 
 Group vchkpw 
 User vpopmail 
 
 AddDefaultCharset ISO-8859-1 
 修改为 
 AddDefaultCharset GB2312 //使默认页面为中文,2.x的apache需要修改
 
 #/etc/rc.d/init.d/httpd restart //重启apache,使修改生效 
 4.修改config_inc.php文件 
 # cd /www/htdocs/igenus/config 
 # vi config_inc.php 
 
 $CFG_BASEPATH = "/www/htdocs/html/igenus"; 
 
 $CFG_MYSQL_HOST = 'localhost'; 
 $CFG_MYSQL_USER = 'vpopmail'; 
 $CFG_MYSQL_PASS = '12345678'; //改成你的密码 
 $CFG_MYSQL_DB = 'vpopmail'; 
 
 $CFG_TEMP = $CFG_BASEPATh."/temp"; 
 
 5.重新编制Mysql数据库表格 
 #mysql -u root -p 
 mysql>use vpopmail; 
 mysql>alter table vpopmail drop primary key; 
 mysql>alter table vpopmail add column pw_id int(5) NOT NULL primary key auto_increment; 
 mysql>create table address ( 
 id int(11) unsigned NOT NULL auto_increment, 
 pw_id int(5) unsigned 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; 
 
 mysql>CREATE TABLE stow ( 
 id int(11) unsigned NOT NULL auto_increment, 
 pw_id int(5) NOT NULL default '0', 
 name varchar(64) NOT NULL default '', 
 http varchar(128) NOT NULL default '', 
 memo varchar(255) NOT NULL default '', 
 PRIMARY KEY (id) 
 ) TYPE=MyISAM PACK_KEYS=1; //收藏夹的表 
 
 mysql>quit; 
 
 ●编辑qmail自启动脚本 
 
 #vi /etc/rc.d/init.d/qmail //编辑自动运行脚本 
 
 #! /bin/sh 
 # chkconfig: 2345 90 90 
 # description: qmail (include smtp and pop3) auto start/stop scripts. 
 
 . /etc/rc.d/init.d/functions 
 
 case "$1" in 
 
 start) 
 echo -n "start qmail:" 
 /var/qmail/rc & 
 echo "." 
 
 echo -n "start smtp service:" 
 /var/qmail/smtp 
 echo "." 
 
 echo -n "start pop3 service:" 
 /var/qmail/pop3 
 echo "." 
 ;; 
 
 stop) 
 echo "stop qmail:" 
 killproc qmail-send 
 killproc qmail-clean 
 killproc qmail-rspawn 
 killproc qmail-lspawn 
 killproc splogger 
 killproc tcpserver 
 ;; 
 
 *) 
 exit 1 
 ;; 
 esac 
 
 exit 0 
 
 #chmod 755 /etc/rc.d/init.d/qmail 
 #chkconfig --add qmail 
 OK,行了,现在只要你启动系统就会自动运行了。 
 
 
●igenus在安装和使用过程中出现错误的解决方法。 
 1.登录时出现的错误。 
 编辑/usr/loal/lib/php.ini,修改: 
 register_globals = On 
   2.发邮件时出现528错误,其实这是php在编译过程中找不到/usr/sbin/sendmail文件造成的,qmail使用/var/qmail/bin/sendmail发信。解决如下: 
 a.添加链接 
 # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 
 b.停止apache运行 
 c.重新编译php即可 
 
 
 ●安装ezmlm and ezmlm-idx使qmail支持邮件列表功能
 1.注意:为了启用maillist的MySQL支持,你必须首先: 
 建立mysql管理用户:(Ex:user:ezmlm,pass:ezmlm) 
 # mysql -u root -pwangxu 
 >use mysql; 
 >create database ezmlm;
 >grant all on ezmlm.* to ezmlm@localhost identified by "ezmlmpassword";
 >flush privileges; 
 >exit; 
  # mysqladmin -u root -pwangxu create ezmlm 
 2.ezmlm-idx包含有对ezmlm的修正和补充,他们是一个整体。 
 #cd /home/software 
 # tar -zxvf ezmlm-0.53.tar.gz 
 # tar -zxvf ezmlm-idx-0.40.tar.gz 
 # mv  -Rf ezmlm-idx-0.40/* ezmlm-0.53/ //将ezmlm-idx-0.40下的文件覆盖到ezmlm-0.53下 
 # cd ezmlm-0.53 
 # patch < idx.patch 
 # patch < ../ezmlm-idx-0.53.400.unified_41.patch 
 # make mysql #MySQL 支持 
 # make clean 
 # make man 
 # make ch_GB #汉字GB2312支持 
 修改conf-sqlcc文件 
 内容为:-I/usr/include/mysql 
 
 修改conf-sqlld 
 内容为: -L/usr/lib/mysql -lmysqlclient -lnsl -lm -lz 
 -lz是增加zip压缩支持
 
 修改conf-bin 
 第一行:/var/qmail/bin/ezmlm 
 
 修改conf-man 
 第一行:/var/qmail/man 
 
 修改conf-qmail 
 第一行:/var/qmail 
 
 # make setup 
 
 修改/usr/local/qmail/bin/ezmlm/ezmlmrc将"To:##L@##H"修改为"To:<#L#>@<#H#>",主要是修改用邮件客户端收到信之后,收件人地址显示格式错误。
 邮件列表收到的信息乱码解决方法:
 在/home/vpopmail/domains/cloud.com/maillistname/下建立一个charset的文件
 #touch charset
 #chown vpopmail:vchkpw charset
 #chmod go-r charset
 #vi charset 添加一行gb2312 
这样你发一份邮件到maillistname@xxx.xxx 你收到的信息将可以正确的显示中文了!
 
 3.在你建立一个基于MySQL的maillist之前,你必须保证ezmlm库中已存在一个对应的表(其实我发现没有表,ezmlm会自动建立,只是会提示错误): 
 Ex:你想建一个基于MySQL的maillist:testlist 
 # /var/qmail/bin/ezmlm/ezmlm-mktab -d testlist | mysql -uezmlm -pezmlm -f ezmlm 
 这样就在ezmlm库中为testlist建立了一系列相关表格: 
 +------------------------+ 
 | Tables | 
 +------------------------+ 
 | testlist | 
 | testlist_allow | 
 | testlist_allow_slog | 
 | testlist_cookie | 
 | testlist_deny | 
 | testlist_deny_slog | 
 | testlist_digest | 
 | testlist_digest_cookie | 
 | testlist_digest_mlog | 
 | testlist_digest_slog | 
 | testlist_mlog | 
 | testlist_mod | 
 | testlist_mod_slog | 
 | testlist_slog | 
 +------------------------+ 
 
 你可以用一下命令察看! (也不需要这样麻烦的,安装了qmailadmin后可以使用qmailadmin管理邮件列表了)
 # mysqlshow -uezmlm -pezmlm ezmlm 
 
 ●安装autorespond  (自动回信机器人) 
 # tar zxvf autorespond-2.0.2.tar.gz 
 # cd autorespond-2.0.2 
 修改Makefile文件 
 将其中的INSTALL_DIR =修改为 /var/qmail/bin 
 # make 
 # make install 
 # cp autorespond /usr/local/bin 
 
 
 ●安装qmailadmin 
 在安装之前先确认: 
 你是否已经安装了vpopmail,并使用vchkpw 。 
 是否已经安装ezmlm。 
 是否已经安装autorespond。 
 确认以上的工作已完成,可以开始安装qmailadmin。 
 # cd /home/software 
 # tar zxvf qmailadmin-1.0.6.tar.gz 
 # cp en-us qmailadmin-1.0.6/html/en 
 # cp en-us qmailadmin-1.0.6/html/en-us 
 (注:以上两步,是为了汉化qmailadmin。en-us取自iceblood的qmail安装包) 
 # cd qmailadmin-1.0.6 
 # cd qmailadmin-1.0.6 
 #./configure --enable-cgibindir=/www/cgi-bin --enable-htmldir=/www/htdocs/igenus --enable-ezmlmdir=/var/qmail/bin/ezmlm (确保你的ezmlm程序文件在此目录下)
 # make 
 # make install-strip 
 # mkdir -p /www/htdocs/images/qmailadmin 
 # mv images/*.* /www/htdocs/images/qmailadmin/ //复制images下的图片到/www/htdocs/images/qmailadmin下 
 
 
 ●安装sqwebmail
 1、 安装sqwebmail
 
 #cd /down
 #tar zxvf sqwebmail-3.5.0-cn.tar.gz
 #cd sqwebmail-3.5.0
 #./configure  --with-db=db(如果你没有安装GDBM库,那么请加上这个,默认系统如果找到了GDBM库会使用GDBM库的)
           --enable-webpass=yes
       --without-authpam 
       --without-authpwd 
       --without-authshadow 
       --without-authldap 
       --without-authuserdb 
       --without-authpwd 
       --with-authvchkpw 
       --with-authdaemon //激活web页面修改密码功能模块
       --enable-cgibindir=/www/cgi-bin/sqwebmail
       --enable-imagedir=/www/htdocs/sqwebmail
       --disable-utf7-folder-encoding  // 去掉IMAP文件夹编码支持
           --with-cachedir=/tmp/sqwebmail        //缓存目录
           --with-cacheowner=bin     //缓存目录所有者 (default: bin)
           --enable-mimetypes=/www/htdocs/
       --enalbe-mimecharset=gb2312
       --enable-unicode=gb2312
 #make configure-check
 #make 
 #make install-strip
 #make install-configure
 #/usr/local/share/sqwebmail/libexec/authlib/authdaemond start 
 注意,以后必须启动这个进程进行身份验证,我发现安装sqwebmail后,这个进程不启动那么我的邮件系统就没法登陆,总是说密码验证错误,qmailadmin倒可以登陆。
 su -c "/usr/local/share/sqwebmail/cleancache.pl" bin

 
 
 现在,重起你主机系统,你可以设置一下你的outlook或者foxmail.接受邮件了。也可以通过webmail访问你的mail系统了。 
 http://localhost 
http://localhost/cgi-bin/sqwebmail/sqwebmail
通过webmail接受你的邮件信息,sqwebmail我只是装上测试一下,看看效果,不过它对中文支持比较差,也没有比较好的中文版本,所以我觉得还是用igenus比较好。
 http://localhost/cgi-bin/qmailadmin 通过web方式管理和添加用户了 
 
 

补充:在/home/vpopmail/domains/xxx.com下面建立一个.qmailadmin-limits文件(这个文件本身没有在里面写 
maxpopaccounts 100
default_quota 10485760 
这样用qmailadmin添加账号的最大数目就是100,每个邮箱的配额就是10485760,10M。。
变量: 数值型. 
maxaliases,maxforwards,maxautoresponder,maxmailinglists 
变量:bool型 
disable_pop,disable_imap,disable_dialup,disable_password_changing,disable_webmail,disable_external_relay 
 以上的变量只要在文件中存在就起作用,不用设值。 
 
 
●Qmail下的免费防病毒网关antivir-mailgate简易安装
现在病毒猖狂啊,做网管的,网络出了乱子,麻烦就大了,病毒一扩散就比较麻烦了,以下介绍一个适合于unix/linux下的病毒邮件网关。
1.先去该公司网址注册一下,获得一个一年期限的license
www.antivir.de/order/privreg/linux.htm
2.开始安装
# tar zxf avlxmgt.tgz
# cd antivir-mailgate-2.0.1.16
# ./avinstall.pl

这里程序会询问你的一些安装路径这类问题,很easy的,一路回车吧!  
默认情况下,antivir-mailgate是通过监听25端口,收到mail后杀毒处理在通过unix管道调用传递给qmail的。因此,首先需要建立以下链接,因为安装qmail的时候已经做过了。所以这里就可以省略了。
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
修改工作目录的权限和所有者,注意必须是0700的权限模式,否则无法启动,会报错误的
# chown uucp.uucp /var/spool/avmailgate -R
# chmod 0700 /var/spool/avmailgate -R
编辑配置文件,以下是几个有用的配置选项,其他的就不多说了,配置文件里面都有说明的,很easy的,如果你想测试一下,看杀毒后的输出,可以修改里面的选项,追加附加的头部到mail里面去。另外,安装脚本会在rc.d目录下建立相应的启动连接,请确保你的qmail的启动脚本在病毒网关之后启动。INSTALL.qmail文件中提到了3种工作模式,默认的是通过监听25端口,收到邮件后进行杀毒处理后在直接通过unix管道传递给qmail进程处理,还有一种模式是让qmail监听825端口,病毒网关收到邮件后直接转发给825端口上的进程,这种模式下效率可能没有默认的工作模式的效率好,这两种模式下都有个弊病,就是25端口上的病毒网关进程没有验证功能了,INSTALL.qmail文件还有一个方法就是使用两个qmail进程和一个病毒网关协同工作,一个做前台监听25端口,这样就可以验证了,这个前台进程收到邮件后在转发到病毒网关进程,病毒网关进行杀毒处理后在转发到后台的qmail进程上,这个进程在进行本地投送处理,文件里描述的比较详细了,我就不多说了,有兴趣的朋友可以照着做。
# vi /etc/avmailgate.conf
User uucp (默认以uucp用户和uucp组工作,请保证你的系统是否存在这两个帐号)
Group uucp
SpoolDir                        /var/spool/avmailgate  (工作目录)
ForwardTo /usr/lib/sendmail -oem -oi(默认的工作模式) 

# vi /etc/avmailgate.acl #这个文件控制允许接收mail的域,一般不需要修改
# /usr/sbin/rcavgate start (启动mail防毒网关)
检查启动输出

# cat /var/log/maillog
# vi /etc/crontab
#每天的0:25分自动更新病毒库
25 0 * * * /usr/lib/AntiVir/antivir –update -q

发表回复】【查看论坛原帖】【添加到收藏夹】【关闭

 noress 回复于:2003-10-23 22:12:25
很不错,支持一下!我donw了,
楼主能不能给我发一份sqwebmail的软件包,我上不了国外的站点(用代理也不行).


 noress 回复于:2003-10-23 22:13:01
我的Email: noress@126.com
谢谢!


 cloudxx 回复于:2003-10-23 23:26:44
www.linuxts.com他做过一个汉化的,还有wmail也可以,不过vsqwebmail的原版对中文支持布好,还是用igenus号了


 wjger 回复于:2003-10-24 12:05:15
我在安装到# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 时,它提示“文件已经存在”  对以后的安装和运行,要不要紧哪?


 snowseya 回复于:2003-10-24 12:56:20
我在RH8下一直没有编译成功过
用igenus收发都没有问题,说明前边的东东做的没错,就是sqwebmail做不出来,请您指点一二.


 peng 回复于:2003-10-24 13:58:34
[quote:055715190f="wjger"]我在安装到# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 时,它提示“文件已经存在”  对以后的安装和运行,要不要紧哪?[/quote:055715190f]

应该没有关系,默认的系统中/usr/sbin/sendmail是系统调用sendmail的。

这一步的作用是用qmail中的sendmail模块替换系统中调用的sendmail命令。

无论他有没有这个文件,只要你ln成功就行。


 peng 回复于:2003-10-24 14:00:56
[quote:7d95993eee="snowseya"]我在RH8下一直没有编译成功过
用igenus收发都没有问题,说明前边的东东做的没错,就是sqwebmail做不出来,请您指点一二.[/quote:7d95993eee]

不知道你报的是什么错误。
sqwebmail有一个非常讨厌的bug,就是他的有些版本和vpopmail兼容不好,认证有错误。你要多用几个sqwebmail and vpopmail尝试一下。


 cloudxx 回复于:2003-10-24 14:33:53
我的就是,安装sqwebmail后只能从sqwebmail收发邮件了,其他的一切不行了,把之前编译的vpopmail重新install后,还是不行,好象接着sqwebmail也罢工了,头大,这两天忙着玩盟军,懒的测试了


 数码熊 回复于:2003-10-24 14:37:41
不错,顶一下。
如果把防垃圾邮件的详细方法都加上去就更加好了


 peng 回复于:2003-10-24 14:44:59
防止垃圾邮件,可以用很多软件完成,常用的和sqwebmail+qmail结合的是maildrop(好象是这样拼写,好久没有看mail了)。
方法好象以前gadfly写过,我替他发的文章。看看精华吧。
有时间我在看看。。


 千禧龙哥 回复于:2003-10-24 19:02:00
请教:
#cp /var/qmail/bin/sendmail /usr/sbin/qmail.sendmail 
#rm -f /etc/alternatives/mta 
#ln -s /usr/sbin/qmail.sendmail /etc/alternatives/mta 

cp /var/qmail/bin/sendmail /usr/sbin/qmail.sendmail 
cp: stat‘/var/qmail/bin/sendmail’失败: 没有那个文件或目录

ln -s /usr/sbin/qmail.sendmail /etc/alternative/mta 
ln: 正在创建连至‘/usr/sbin/qmail.sendmail’的符号链接‘/etc/alternative/mta’: 没有那个文件或目录

在/var/qmail/bin/下面没有sendmail呀
这段话是不是有点问题呢?


 千禧龙哥 回复于:2003-10-24 19:06:07
求救!!!我在安照大侠的步骤,执行到这一步的时候怎么出现这个错误是什么原因?我是用REDHAT9+HTTPD2.0.47+PHP4.33RC1
./configure --prefix=/home/vpopmail --enable-mysql=y --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --enable-default-domain=s-ec.com --enable-passwd=n --enable-defaultquota=n --enable-tcprules-prog=/usr/local/bin/tcprules --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-vpopuser=vpopmail --enable-vpopgroup=vchkpw --enable-ip-alias-domains=n 
creating cache ./config.cache
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... found
checking host system type... i686-unknown-linux
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for ranlib... ranlib
checking for POSIXized ISC... no
checking how to run the C preprocessor... gcc -E
checking for AIX... no
configure: error: Unable to find your qmail-newu file, specify --enable-qmail-newu.


 cloudxx 回复于:2003-10-24 20:39:07
configure: error: Unable to find your qmail-newu file, specify --enable-qmail-newu

找不不到qmail-newu文件 我没碰到这个 ,你前面qmail的安装目录是对的吗
你./configure --help | grep qmail 找找-qmail-newu这个选项看看 指定一个加载目录


 千禧龙哥 回复于:2003-10-24 21:52:44
我这里出错不会对邮件有影响吧
# patch -d qmail-1.03 < qmail-smtpd-auth-0.31/auth.patch 
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
Hunk #1 succeeded at 25 with fuzz 2 (offset 2 lines).
Hunk #2 succeeded at 63 with fuzz 1 (offset 1 line).
Hunk #3 FAILED at 242.
Hunk #4 FAILED at 415.
Hunk #5 FAILED at 645.
3 out of 5 hunks FAILED -- saving rejects to file qmail-smtpd.c.rej


 千禧龙哥 回复于:2003-10-24 22:46:08
[quote:e902761f60="cloudxx"]configure: error: Unable to find your qmail-newu file, specify --enable-qmail-newu

找不不到qmail-newu文件 我没碰到这个 ,你前面qmail的安装目录是对的吗
你./configure --help | grep qmail 找找-qmail-..........[/quote:e902761f60]

我一直都是按你上面做的。但是就前面报过几次错,不知道和那有关没有?
用./configure --help | grep qmail 查看提示如下:
--enable-qmail-newu=path Full path to qmail-newu program

我重装了一次系统还是有这个提示是什么原因呢?


 cloudxx 回复于:2003-10-24 23:04:52
你的qmail-smtp-0.31/base64.*文件复制到qmail-1.03目录下了吗?


 千禧龙哥 回复于:2003-10-25 09:42:13
[quote:d74235207a="cloudxx"]你的qmail-smtp-0.31/base64.*文件复制到qmail-1.03目录下了吗?[/quote:d74235207a]

复制了。这步肯定作过了。


 cloudxx 回复于:2003-10-25 10:54:00
打补丁很简单的阿,不会有问题啊,你是在LINUX平台下吗?
我听说如果是商用unix系统需要下载一个GNU的patch才行的


 千禧龙哥 回复于:2003-10-25 11:01:26
[quote:399ccc1d72="cloudxx"]打补丁很简单的阿,不会有问题啊,你是在LINUX平台下吗?
我听说如果是商用unix系统需要下载一个GNU的patch才行的[/quote:399ccc1d72]

我用的是redhat 9 安装的,在redhat7.3下也装过。我安装qmail时怎么只有/var/qmal/这个目录?
下面的/bin/sendmail是从那里来的?


 wjger 回复于:2003-10-27 17:18:43
我在安装vpopmail时发生编译通不过,要在这一句下面#cd /home/vpopmail/etc 
#tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp 

加上
退到#cd vpopmail-5.2.1 这个目录才能编译  是不是啊?

还有我编译时发生错误vauth.c: In function 'vset_lastauth': 
vauth.c:939:warning:implicit declaration of function 'vset_lastauth_time' 
vauth.c: In function 'vset_lastauth_time'; 
vauth.c:971:warning:control reaches end of non-void function 
make[2]:***[vauth.o] Error 1 
make[2]:Leaving directory '/usr/local/src/vpopmail-5.2.1' 
make[1]:***[all-recursive] Error 1 
make[1]: Leaving directory '/usr/local/src/vpopmail-5.2.1' 
make:***[all-recursive-am] Error 2


 wjger 回复于:2003-11-04 16:22:28
up


 lightwiter 回复于:2003-11-04 19:20:20
建议打gadfly的补丁.


 wjger 回复于:2003-11-06 17:04:26
请教cloudxx老大我的能发信但不能收信,我的日志如下:
libmysqlclient.so.12    好像不能共享打开, 如何更改属性
Nov  6 16:45:40 localhost qmail: 1068108340.254144 delivery 13: deferral: /home/vpopmail/bin/vdelivermail:_error_while_loading_shared_libraries:_libmysqlclient.so.12:_cannot_open_shared_object_file:_Permission_denied/
Nov  6 16:45:40 localhost qmail: 1068108340.254178 status: local 0/40 remote 0/40


 zhaozy67 回复于:2003-11-08 10:55:31
老大:
    有一些补丁找不到,请问再哪儿有下载?如:ucspi-tcp-0.88.a_record.patch、/ucspi-tcp-0.88.nobase.patch、qmail-maildir++.patch等等。


 artxing 回复于:2003-11-08 11:02:29
http://www.chinaunix.net/jh/14/124879.html

这里有.我都打成包了


 aftersf 回复于:2003-11-19 15:35:45
mast you see it.
why

[root@mail vpopmail-5.2.1]# ./configure --prefix=/home/vpopmail  --enable-mysql=y  --enable-incdir=/usr/include/mysql  --enable-libdir=/usr/lib/mysql  --enable-default-domain=mail.mails.dipdns.net
--enable-passwd=n  --enable-defaultquota=10485760  --enable-tcprules-prog=/usr/local/bin/tcprules
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp  --enable-vpopuser=vpopmail  --enable-vpopgroup=vchkpw  --enable-ip-alias-domains=n  --enable-sqwebmail-pass=y  --enable-hardquota=10000000
creating cache ./config.cache
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... found
checking host system type... i686-unknown-linux
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for ranlib... ranlib
checking for POSIXized ISC... no
checking how to run the C preprocessor... gcc -E
checking for AIX... no
yes
checking for floor in -lm... yes
checking for compress in -lz... yes
checking for crypt in -lcrypt... yes
checking for gethostbyaddr in -lnsl... yes
checking for getsockname in -lsocket... no
configure: error: use --enable-defaultquota instead of --enable-hardquota


 zengting 回复于:2003-12-18 09:05:14
那个病毒防火墙怎么注册啊?干吗那些词我都不懂的?好像是丹麦语吧?那个PLZ我都不懂填什么上去,老是说出错。请高手指点一下吧。


 Frank_zhichen 回复于:2003-12-18 23:17:05
问一个问题: 
1. 装ezmlm时,运行/var/qmail/bin/ezmlm/ezmlm-mktab -d testlist | mysql -uezmlm -pezmlm -f ezmlm 报错,但mysqlshow -u root -pwangxu ezmlm时表都正常,why?

2. 我原先用tsmail时,qmailadmin中可以设每一个用户的邮箱大小,但现在没有了? 请问怎么样才能设用户的邮箱大小?


 nibo 回复于:2003-12-19 09:01:16
在VPOPMAIL/BIN有个命令可以..具体我忘了..那个命令名称很直观的.一看就知道!


 yuehuiw 回复于:2004-02-25 10:50:32
老大的文章果然很好,很好,但是美中不足的是其中有一些小bug,
呵....
另外,那个防病毒的邮件网关地址也可以到以下地址去注册(是英文的哦)
http://www.hbedv.com/private/


 zengting 回复于:2004-07-26 11:09:57
EZMLM make setup......
./compile case_lowerb.c
./compile case_startb.c
./makelib case.a case_diffb.o case_lowerb.o case_startb.o /
case_diffs.o case_starts.o
./compile fmt_str.c
./compile fmt_uint.c
./compile fmt_uint0.c
./compile fmt_ulong.c
./compile scan_ulong.c
./compile scan_8long.c
./makelib fs.a fmt_str.o fmt_uint.o fmt_uint0.o /
fmt_ulong.o scan_ulong.o scan_8long.o
./compile getconf.c
./compile makehash.c
./compile surf.c
./load ezmlm-idx /
mime.a slurp.o slurpclose.o wait.a getln.a strerr.a sig.a open.a /
lock.a mime.a substdio.a stralloc.a alloc.a error.a str.a fd.a /
getopt.a case.a fs.a getconf.o makehash.o surf.o
(cat warn-auto.sh; /
echo EZPATH=/'`head -1 conf-bin`/'; /
cat ezmlm-accept.sh ) > ezmlm-accept
./compile ezmlm-archive.c
./compile idxthread.c
./compile date2yyyymm.c
./compile dateline.c
./makelib yyyymm.a date2yyyymm.o dateline.o
./load ezmlm-archive getconf.o slurpclose.o slurp.o getln.a sig.a /
idxthread.o yyyymm.a strerr.a substdio.a stralloc.a alloc.a /
error.a str.a fs.a open.a lock.a fd.a getopt.a
(cat warn-auto.sh; /
echo EZPATH=/'`head -1 conf-bin`/'; /
echo QMPATH=/'`head -1 conf-qmail`/'; /
cat ezmlm-check.sh ) > ezmlm-check
( ( ./compile tryvfork.c && ./load tryvfork ) >/dev/null /
2>&1 /
&& cat fork.h2 || cat fork.h1 ) > fork.h
rm -f tryvfork.o tryvfork
./compile ezmlm-gate.c
ezmlm-gate.c: In function `main':
ezmlm-gate.c:84: warning: return type of `main' is not `int'
./compile checktag.c `head -1 conf-sqlcc`
./compile issub.c `head -1 conf-sqlcc`
./compile logmsg.c `head -1 conf-sqlcc`
./compile subscribe.c `head -1 conf-sqlcc`
./compile opensql.c `head -1 conf-sqlcc`
./compile putsubs.c `head -1 conf-sqlcc`
./compile tagmsg.c `head -1 conf-sqlcc`
./compile searchlog.c `head -1 conf-sqlcc`
./makelib subdb.a checktag.o issub.o logmsg.o subscribe.o /
opensql.o putsubs.o tagmsg.o searchlog.o
./compile auto-str.c
auto-str.c: In function `main':
auto-str.c:17: warning: return type of `main' is not `int'
./load auto-str substdio.a error.a str.a
./auto-str auto_bin `head -1 conf-bin` > auto_bin.c
./compile auto_bin.c
./compile env.c
./compile envread.c
./makelib env.a env.o envread.o
./compile seek_set.c
./makelib seek.a seek_set.o
./load ezmlm-gate subdb.a getconf.o slurpclose.o slurp.o /
getopt.a getln.a auto_bin.o env.a sig.a fs.a /
strerr.a substdio.a stralloc.a alloc.a error.a str.a case.a wait.a /
open.a lock.a seek.a `head -1 conf-sqlld`
/usr/bin/ld: cannot find -lr
collect2: ld returned 1 exit status
make: *** [ezmlm-gate] Error 1


 zengting 回复于:2004-07-26 11:10:54
when ezmlm is making  setup,errors shows as follow:
......
./compile case_lowerb.c
./compile case_startb.c
./makelib case.a case_diffb.o case_lowerb.o case_startb.o /
case_diffs.o case_starts.o
./compile fmt_str.c
./compile fmt_uint.c
./compile fmt_uint0.c
./compile fmt_ulong.c
./compile scan_ulong.c
./compile scan_8long.c
./makelib fs.a fmt_str.o fmt_uint.o fmt_uint0.o /
fmt_ulong.o scan_ulong.o scan_8long.o
./compile getconf.c
./compile makehash.c
./compile surf.c
./load ezmlm-idx /
mime.a slurp.o slurpclose.o wait.a getln.a strerr.a sig.a open.a /
lock.a mime.a substdio.a stralloc.a alloc.a error.a str.a fd.a /
getopt.a case.a fs.a getconf.o makehash.o surf.o
(cat warn-auto.sh; /
echo EZPATH=/'`head -1 conf-bin`/'; /
cat ezmlm-accept.sh ) > ezmlm-accept
./compile ezmlm-archive.c
./compile idxthread.c
./compile date2yyyymm.c
./compile dateline.c
./makelib yyyymm.a date2yyyymm.o dateline.o
./load ezmlm-archive getconf.o slurpclose.o slurp.o getln.a sig.a /
idxthread.o yyyymm.a strerr.a substdio.a stralloc.a alloc.a /
error.a str.a fs.a open.a lock.a fd.a getopt.a
(cat warn-auto.sh; /
echo EZPATH=/'`head -1 conf-bin`/'; /
echo QMPATH=/'`head -1 conf-qmail`/'; /
cat ezmlm-check.sh ) > ezmlm-check
( ( ./compile tryvfork.c && ./load tryvfork ) >/dev/null /
2>&1 /
&& cat fork.h2 || cat fork.h1 ) > fork.h
rm -f tryvfork.o tryvfork
./compile ezmlm-gate.c
ezmlm-gate.c: In function `main':
ezmlm-gate.c:84: warning: return type of `main' is not `int'
./compile checktag.c `head -1 conf-sqlcc`
./compile issub.c `head -1 conf-sqlcc`
./compile logmsg.c `head -1 conf-sqlcc`
./compile subscribe.c `head -1 conf-sqlcc`
./compile opensql.c `head -1 conf-sqlcc`
./compile putsubs.c `head -1 conf-sqlcc`
./compile tagmsg.c `head -1 conf-sqlcc`
./compile searchlog.c `head -1 conf-sqlcc`
./makelib subdb.a checktag.o issub.o logmsg.o subscribe.o /
opensql.o putsubs.o tagmsg.o searchlog.o
./compile auto-str.c
auto-str.c: In function `main':
auto-str.c:17: warning: return type of `main' is not `int'
./load auto-str substdio.a error.a str.a
./auto-str auto_bin `head -1 conf-bin` > auto_bin.c
./compile auto_bin.c
./compile env.c
./compile envread.c
./makelib env.a env.o envread.o
./compile seek_set.c
./makelib seek.a seek_set.o
./load ezmlm-gate subdb.a getconf.o slurpclose.o slurp.o /
getopt.a getln.a auto_bin.o env.a sig.a fs.a /
strerr.a substdio.a stralloc.a alloc.a error.a str.a case.a wait.a /
open.a lock.a seek.a `head -1 conf-sqlld`
/usr/bin/ld: cannot find -lr
collect2: ld returned 1 exit status
make: *** [ezmlm-gate] Error 1
0 0

相关博文

我的热门文章

img
取 消
img