rhas3.0 + qmail + mysql + smtp + vpopmail + igenus + qmailadmin
一、安装说明。 为了方便安装我在安装Redhat3.0时选了apache、php、mysql,注意mysql-devel开发包一定要装上,
二、安装ucspi-tcp-0.88 1.这是由于redhat3.0(包括redhat 9.0)的glibc的版本有问题,必须有下列软件及补丁才能编译 http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz http://qmail.te8.com/rpms/glibc-2.3....a_record.patch http://qmail.te8.com/rpms/glibc-2.3....88.errno.patch http://qmail.te8.com/rpms/glibc-2.3...88.nobase.patch 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.需要的软件及补丁 http://cr.yp.to/software/qmail-1.03.tar.gz http://www.ckdhr.com/ckd/qmail-103.patch http://www.qmail.org/qmailqueue-patch http://www.shupp.org/patches/qmail-maildir++.patch http://qmail.te8.com/rpms/glibc-2.3....03.errno.patch http://qmail.te8.com/rpms/glibc-2.3...ail_local.patch http://members.elysium.pl/brush/qma...uth-0.31.tar.gz 2.建立目录 # mkdir /var/qmail # mkdir /var/qmail/alias 3.建组及用户 # 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 #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 #make setup check #./config-fast domain.com 5.添加别名用户 # touch /var/qmail/alias/.qmail-root # touch /var/qmail/alias/.qmail-postmaster # touch /var/qmail/alias/.qmail-mailer-daemon 6.如果存在postfix和sendmail,将它们停用。 #/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 #rm -f /usr/lib/sendmail #rm -f /usr/sbin/sendmail #ln -s /var/qmail/bin/sendmail /usr/lib/sendmail #ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail #chmod 777 /usr/sbin/sendmail
四、安装vpopmail 1.下载vpopmail http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz 2.建立目录 #mkdir /home/vpopmail #mkdir /home/vpopmail/etc 3.添加用户和组 #groupadd vchkpw #useradd -g vchkpw vpopmail 4.添加mysql的vpopmail用户,用于操作vpopmail数据库 #mysqladmin -u root password **** 设置mysql的root密码。 #mysql -u root -p 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 =========================== vmysql.h ============================== #define MYSQL_UPDATE_SERVER "localhost" #define MYSQL_UPDATE_USER "vpopmail" #define MYSQL_UPDATE_PASSWD "****" (改成你设置的密码)
#define MYSQL_READ_SERVER "localhost" #define MYSQL_READ_USER "vpopmail" #define MYSQL_READ_PASSWD "****" (改成你设置的密码) ========================================================== 6.创建tcp.smtp # vi /home/vpopmail/etc/tcp.smtp ==================== 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 --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --enable-default-domain=domain.com --enable-passwd=n --enable-defaultquota=52428800s (10485760:10MB,20971520:20MB,52428800s:50MB) --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 # make # make install-strip 8.创建虚拟域 # cd /home/vpopmail/bin # /home/vpopmail/bin/vadddomain 域名 密码 # /home/vpopmail/bin/vadduser 用户名 密码 (用户名要带域名,如[email protected]) 删除创建域的命令是:./vdeldomain 域名
五、设置smtp-auth 1.修改vchkpw的属性 #chmod 4755 vchkpw #chown root.root vchkpw 2.下载安装cmd5checkpw wget http://members.elysium.pl/brush/cmd...kpw-0.22.tar.gz #tar zxvf cmd5checkpw-0.22.tar.gz #cd cmd5checkpw-0.22 #make #make install
六、生成qmail的启动脚本 #cp /var/qmail/boot/home /var/qmail/rc # vi /var/qmail/rc //对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 & ================== rc ========================== #vi /var/qmail/smtp =================== smtp ======================== #!/bin/sh
QMAILDUID=qmaild NOFILESGID=nofiles
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x /home/vpopmail/etc/tcp.smtp.cdb -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd domain.com /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 & =================== smtp ============================ #vi /var/qmail/pop3 //编辑pop3服务的启动脚本 ====================== pop3 ========================= #!/bin/sh
/usr/local/bin/tcpserver -H -R 0 pop3 /var/qmail/bin/qmail-popup domain.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir & ======================= pop3============================== #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" 查看POP3和SMTP是否工作 # telnet 192.168.0.1 110 # telnet 192.168.0.1 25 注意在outlook中设置邮件帐号时,用户名后要加上域名,如[email protected]。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录。
八、安装并运行igenus 1.下载最新的安装包:igenus_2_20030516_snap.tgz #tar zxvf igenus_2_20030516_snap.tgz -C /var/www/html 2.建temp文件夹 cd /var/www/html/igenus mkdir temp chmod -R 0755 temp chown -R vpopmail:vchkpw temp 在httpd.conf中设置权限不允许访问temp目录。
deny from all
3.修改httpd.conf #vi /etc/httpd/conf/httpd.conf User Apache Group Apache 修改为: User vpopmail Group vchkpw 为了解决APACHE的默认语言问题添加这个: AddDefaultCharset GB2312 #/etc/rc.d/init.d/httpd restart 4.解决个别邮箱拒收邮件的问题(如新浪网) 修改邮件签名信息 #vi /var/www/html/igenus/config/config_inc.php $CFG_BASEPATH = "/var/www/html/igenus"; $CFG_MYSQL_HOST = 'localhost'; $CFG_MYSQL_USER = 'vpopmail'; $CFG_MYSQL_PASS = '******'; 改成你的密码 $CFG_MYSQL_DB = 'vpopmail'; $CFG_TEMP = $CFG_BASEPATh."/temp"; 删除其中的 “iGENUS is a free webmail interface, NO fee, FREE download” 修改其中的http://www.igenus.org为http://domain.com #vi /var/qmail/control/helohost =============== helohost ==================== domain.com =============== helohost ==================== #chmod 755 /var/qmail/control/helohost 如果你用的邮件服务器是postfix就这样处理 postconf -e "smtp_helo_name = 我的邮件服务器的域名(A记录)" 如果你用的邮件服务器是sendmail就这样处理 vi /etc/sendmail.cf Cw我的邮件服务器的域名(A记录)
5.修正邮箱无退信问题 # rm -f /usr/sbin/sendmail # ln -s /var/qmail/bin/sendmail 如果用qmailadmin管理邮箱则这样处理 进入qmailadmin -->主菜单“邮件账号”-->Set no default catch all account 就OK了。这时网页上面的CatchAll应该显示为Bounced。 6.修改config_inc.php文件 # cd /var/www/html/igenus/config # vi config_inc.php =============== config_inc.php ==================== $CFG_BASEPATH = "/var/www/html/igenus";
$CFG_MYSQL_HOST = 'localhost'; $CFG_MYSQL_USER = 'vpopmail'; $CFG_MYSQL_PASS = '****'; 这里改成你的密码 $CFG_MYSQL_DB = 'vpopmail';
$CFG_TEMP = $CFG_BASEPATh."/temp"; ============================================== 7.重新编制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; 8.如果需要,用vadddomain和vadduser添加新域名和新用户 9.Qmail限制附件的大小 在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对qmail附件大小的限制,一般安装完成后,这个文件是没有的,你可以自己创建。 smtp方式是以qmail的databytes作限制的 创建databytes并设置邮件最大为4m # echo 4000000 >/var/qmail/control/databyte 10.限制单域的邮箱数量 vi /home/vpopmail/domains/domain.com/.qmailadmin-limits ===============.qmailadmin-limits ==================== maxpopaccounts 200 default_quota 52428800s ===============.qmailadmin-limits ==================== chmod 700 /home/vpopmail/domains/domain.com/.qmailadmin-limits chwod vpopmail:vchkpw /home/vpopmail/domains/domain.com/.qmailadmin-limits 这样就把邮箱总数限制在200个,每个邮箱为50M了 11.用qmail封mailfrom vi/var/qmail/control/badmailfrom 这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起qmail就能生效。例如: [email protected] -----限制一个特定的用户 @sina.com -----限制整个域中的邮件 12.设置igenus 定义允许上传下载的邮件的大小 # vi /etc/php.ini max_execution_time = 60 memory_limit = 16M post_max_size = 4M upload_max_filesize = 4M file_uploads = On session.auto_start = 1 register_globals = On session.bug_compat_42 = 1 session.bug_compat_warn = 0 # vi /etc/httpd/conf.d/php.conf
SetOutputFilter PHP SetInputFilter PHP LimitRequestBody 4242880
九、编辑qmail自启动脚本 #vi /etc/rc.d/init.d/qmail ===================== qmail ====================== #! /bin/sh # chkconfig: 2545 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
十、安装autorespond
#tar xzvf autorespond-2.0.2.tar.gz #cd autorespond-2.0.2 #vi Makefile 将其中的INSTALL_DIR =修改为 /var/qmail/bin #make #make install #cp autorespond /usr/local/bin
十一、安装qmailadmin-1.0.6.tar.gz tar xzvf qmailadmin-1.0.6.tar.gz cd qmailadmin-1.0.6 ./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html --disable-ezmlmdir
make make install-strip
再一次执行 chmod -R 0755 /var/www/html/igenus chmod -R 0755 /var/www/html/images chown -R vpopmail:vchkpw /var/www/html/igenus chown -R vpopmail:vchkpw /var/www/html/images 汉化qmailadmin 首先删除qmailadmin安装的菜单文件 rm –f /usr/local/share/qmailadmin/html/en rm –f /usr/local/share/qmailadmin/html/en-us 生成自己的简体中文菜单文件/usr/local/share/qmailadmin/html/en vi /usr/local/share/qmailadmin/html/en
000 gb2312 001 主菜单 002 邮件帐号 003 添加邮件机器人: 004 邮件机器人的名字: 005 发送拷贝到邮件地址: 006 标题: 007 添加转发帐号: 008 转发到邮件地址: 009 本地邮件用户名: 010 要转发的邮件地址的格式是:[email protected]. 本地邮件用户的格式是: popaccount 例如, 如果转发 本地用户: sales到邮件地址: [email protected] 那么所有发到sales用户的邮件都将转发到 [email protected]这个邮件地址中 011 Add List Moderator 012 Add Moderator to mailing list 013 邮件地址: 014 添加新的用户到邮件类别 015 创建新的邮件列表 016 邮件列表的名字 017 邮件列表所有者的邮件地址: 018 Archived 019 Not archived 020 Block archive. Only moderators are allowed to access the archive. 021 Archive access is open to anyone or subscribers only, depending on the Guard setting. 022 No digest. Do not set up the digest list. 023 Prefix. Set up the list so that the outgoing subject will be prefixed with the list name. 024 No prefix. 025 Guard archive. Archive access requests from unrecognised SENDERs will be rejected. 026 Do not guard archive. Archive access request from any SENDERs will be serviced. 027 Subscriptions do not require confirmation. 028 Subscription requires confirmation by reply to a message sent to the subscription address. 029 Indexed for WWW archive access. 030 The list is created without WWW archive index 031 Unsubscribe does not require confirmation. 032 Unsubscribe requires confirmation by a reply to a message sent to the subscription address. 033 List subscribers. Remote administrators can request a subscriber list, and search the subscriber log. 034 The subscriber list cannot be obtained. 035 Message moderation. 036 Message posting is not moderated. 037 Posts from addresses other than moderators are rejected. This is applicable to message moderated lists only. 038 Others not rejected. For moderated lists, all posts are forwarded to the moderators. The switch has effects only on message moderated lists. 039 Respond to adminstrative requests and allow archive retrieval. 040 Allow only digest creation, remote adminstration, and archive retrieval by remote administrators, (if the list is configured with this options). 041 Allow remote administrators to edit files in text directory 042 Text file editing is not allowed 043 ReQuest address is serviced 044 Do not process messages sent to the request address 045 Enables remote administration 046 No remote administration. 047 Subscription moderation. 048 Subscriptions are not moderated. 049 Trailer 050 No trailer 051 User posts only 052 Do not restrict posts based on SENDER address 053 允许数据库支持 054 主机名 055 端口 056 用户名 057 密码 058 数据库 059 表 060 添加 061 邮件帐号 062 CatchAll: 063 说明 064 修改 用户 065 删除 帐号 066 CatchAll 帐号 067 创建新的邮件帐号 068 帐号别名 069 别名 070 邮件帐号 071 修改 072 删除 073 创建新的别名 074 Forward Accounts 075 转发 076 创建新的转发 077 邮件机器人 078 邮件机器人 079 新的邮件机器人 080 邮件列表 081 列表 082 打开.qmail-default时出错 083 添加 订阅人 084 删除 订阅人 085 列出 订阅人 086 添加 Moderator 087 删除 Moderator 088 列出 Moderators 089 新的邮件列表 090 创建邮件帐号 091 密码 (again): 092 真实姓名 093 列表名 094 提交用户 095 提交新用户到下列邮件列表 096 删除别名 097 确认删除 098 删除邮件机器人 099 数据库设置 100 删除转发 101 删除邮件列表 102 删除用户 103 转发邮件 104 是的, 将它转发到: 105 修改邮件机器人 106 名字 107 说明 108 创建新的邮件地址 109 修改用户 110 新的密码 111 修改用户 112 管理员帐号 113 域名 114 登录 115 Redirects for user 116 Current redirects 117 Add/Replace redirect email 118 Delete rediect 119 添加成功 120 无法添加 121 别名 122 转发 123 Show redirect 124 快捷链接 125 创建新的邮件帐号 126 创建新的别名 127 创建新的转发 128 创建新的邮件机器人 129 创建新的邮件列表 130 CatchAll: Bounced 131 没有用户可供浏览,请返回到上一页 132 默认 133 索引: 134 Set no default catch all account 135 上一页 136 刷新 137 下一页 138 Type in password 139 邮件用户的密码更改成功。 140 密码修改失败。 141 用删除成功。 142 没有认证 143 目录权限错误 144 文件权限错误 145 无效用户内部错误 146 Cannot Do redirect 147 Redirect Now 148 无效邮件地址 149 Cannot Delete Last Entry 150 文件错误 151 Line Deleted Succesfully 152 转发添加成功 153 用户名不存在 154 别名添加成功 155 Invalid Action 156 达到最大的别名数目限制 157 达到最大的转发数目限制 158 达到最大邮件机器人数目限制 159 Invalid DotQmail Type: adddotqmail() 160 别名无效 161 Did not add alias. POP Account must be an existing POP Account. 162 邮件用户名无效 163 本地用户名无效 164 Invalid Alias Type : adddotqmailnow() 165 添加邮件用户的别名失败 166 添加邮件用户的别名成功 167 删除用户的别名/转发出错。 168 添加用户的别名/转发成功。 169 Error deleting redirect/forward for POP Account 170 Redirect/forward for POP Account deleted successfully 171 Error: could not change to directory 172 Only one person can log in as system postmaster at one time. Someone else has logged in. Please only have one login at a time. 173 登录过期,请重新登录 174 无效的邮件机器人名 175 用户名已存在 176 Please fill in Mail Robot name 177 Invalid Owner Email Address 178 请输入标题 179 Please type in something to send 180 邮件机器人添加成功 181 无法删除邮件机器人 182 邮件机器人删除成功 183 邮件机器人修改成功 184 达到最大的邮件列表数 185 无法删除邮件列表数 186 邮件列表删除成功 187 邮件列表添加成功 188 无效的邮件列表名 189 邮件列表中邮件地址一览 190 End of list 191 邮件列表中moderator用户的邮件地址一览 192 返回主菜单 193 添加到主菜单 194 Email address added as a moderator to mailing list 195 从邮件列表中删除订阅人 196 从邮件列表中删除moderator 197 removed as a moderator for mailing list 198 登录无效 199 达到最大的邮件用户数目 200 密码不匹配,请重新输入 201 内存耗尽 202 Where the parameters are: 203 从邮件列表中移除 204 Go user 205 禁止 转发/假期(Vacation) 206 Set remote catch all account 207 Set Remote CatchAll 208 Remote CatchAll Address: 209 允许转发 210 允许保存拷贝和转发 211 转发邮件到: 212 允许假期(Vacaction) 213 Vacation 标题: 214 Vacation 信息: 215 必须提供转发地址 216 必须提供标题 217 刷新主菜单 218 退出 219 Moderators列表 220 Moderator 地址 221 订阅人列表 222 提交 地址 223 用户不存在 224 (点击修改) 225 修改邮件列表 226 邮件列表修改成功 227 诊断 228 总数: 229 不限制 230 订阅人总数: 231 没有列表可供显示 232 没有别名和转发可供显示 233 没有邮件机器人可供显示
生成自己的简体中文菜单文件/usr/local/share/qmailadmin/html/en-us cp /usr/local/share/qmailadmin/html/en /usr/local/share/qmailadmin/html/en-us
生成admin表 mysql>use vpopmail; mysql>CREATE TABLE `admin` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `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', PRIMARY KEY (`id`), UNIQUE KEY `domain` (`domain`) ) TYPE=MyISAM PACK_KEYS=1 AUTO_INCREMENT=1 ;
十二、建立QMAIL防火墙FOR ADSL。 echo 1 >/proc/sys/net/ipv4/ip_forward /sbin/iptables -F INPUT /sbin/iptables -F FORWARD
### enable client to vist the web-server on internet /sbin/iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT /sbin/iptables -A INPUT -i ppp0 -p tcp ! --syn -s any/0 --sport 80 --dport 1024:65535 -j ACCEPT
### SET IP-MASQUERADE /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
### ip packets limit /sbin/iptables -A FORWARD -f -m limit --limit 10/s --limit-burst 10 -j ACCEPT /sbin/iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 3 -j ACCEPT /sbin/iptables -A INPUT -i ppp0 -p icmp -j DROP
### enable some internet-service on intranet for the clients on internet /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
### open some port for ftp-users to use passive mode /sbin/iptables -A INPUT -i ppp0 -p tcp --dport 25 -j ACCEPT /sbin/iptables -A INPUT -i ppp0 -p tcp --dport 110 -j ACCEPT ### disable any port you don't want to be visited /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -A INPUT -i ppp0 -j DROP
十三、补充说明 如果你按照上面的步骤进行了安装,你还需要对一些PHP页面进行修改以便适合你的应用, 可使用VI直接打开修改。我这里就不在一一列举了。 关于上面提到的软件包也可以从我这里下载:ftp://test:[email protected]/qmail 测试邮箱:http://nero.3322.org/igenus 管理邮箱:http://domain.com/cgi-bin/qmailadmin ,

|