LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2296|回复: 17

在Linux下安装邮件服务器

[复制链接]
发表于 2004-10-23 12:00:40 | 显示全部楼层 |阅读模式
在Linux下安装邮件服务器
(RHAS3+Qmail+Apache+PHP+smtp-auth+Vpopmail+MySQL+Igenus+ezmlm+autorespond+qmailadmin)

许靖



mail:xuki_007@163.net

QQ:19852439

MSN:seawolf_o@hotmail.com

版本:1.1

最后更新日期: 2004年10月21日


功能列表
· SMTP服务器:SMTP-AUTH认证(Plain,Login,CRAM-MD5)

· POP3服务器

· 自动回复

· 邮件列表

· Web管理

· WebMail


--------------------------------------------------------------------------------

安装准备
安装环境
这个安装过程基本上你只需要复制粘贴就可以完成.我在RedHat上安装成功,其他系统还没试过.

为了方便安装我在安装Redhat3.0时选了apache、php、mysql,注意mysql-devel和mysql-server开发包一定要装上.另外大家在安装LINUX时一定要装上软件开发和内核开发两个软件组,这样可以避免不必要的由于编译环境的问题而导致的安装问题,这点对于LINUX新手犹为重要。安装系统后,一般另需安装php-mysql这个包,在安装光碟第三张。

启动mysql server:
# /etc/rc.d/init.d/mysqld start
设置mysql root口令:
# mysqladmin -u root -p password ‘xukixu’(设置你的密码)
Enter passwod直接回车)

mysql的头文件和库文件分别在/usr/include/mysql和/usr/lib/mysql。
安装完Redhat3.0后,修改/etc/httpd/conf/httpd.conf,使web服务正常启用,为mysql添加root用户的密码。如果设置了防火墙,要打开服务器的www 80、smtp 25和pop3 110三个端口。



检查DNS设置
在开始之前,确保正确设置了DNS MX记录.例如使用"domain.com"作为邮件域,对MX记录进行测试:

在Linux下:

# host -t mx domain.com
domain.com. mail is handled by 10 mail.domain.com.
# host -t a mail.domain.com
mail.domain.com. has address xxx.xxx.xxx.xxx

在Windows下:

C:\>nslookup
Default Server: ns.domain.com
Address: xxx.xxx.xxx.xxx
>set type=mx
>domain.com
domain.com MX preference = 10, mail exchanger = mail.domain.com
mail.domain.com internet address = xxx.xxx.xxx.xxx
>exit

卸载已有的邮件系统
确认没有SMTP/POP/IMAP服务在运行:

/etc/init.d/sendmail stop
netstat -na | grep 25
netstat -na | grep 110
netstat -na | grep 143
ntsysv

删除已有的SMTP/POP/IMAP软件:

rpm -e --nodeps sendmail
rpm -e --nodeps postfix

下载软件
文中所用的软件:

autorespond-2.0.2.tar.gz

cmd5checkpw-0.22.tar.gz

ezmlm-0.53.tar.gz

ezmlm-idx-0.40.tar.gz

ezmlm-idx-0.53.400.unified_41.patch

igenus_2.0.2_20040901_release.tgz

mysql-server-3.23.58-1.i386.rpm

qmail-1.03.errno.patch

qmail-1.03.qmail_local.patch

qmail-1.03.tar.gz

qmail-103.patch

qmailadmin-1.2.2.tar.gz

qmail-maildir++.patch

qmailqueue-patch

ucspi-tcp-0.88.a_record.patch

ucspi-tcp-0.88.errno.patch

ucspi-tcp-0.88.nobase.patch

ucspi-tcp-0.88.tar.gz

vpopmail-5.3.20.tar.gz

我把下文中所提到的软件打成了一个包,下载地址为:http://www.zioncom.net/qmail.tar.gz ;我一般把软件放在/home/pkg下面,根据个人习惯吧。




--------------------------------------------------------------------------------

安装软件
ucspi-tcp
安装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.建组及用户:
# 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.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,停用现在的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
#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
//这里特别要注意检查/usr/sbin/sendmail的属性.不然会导致装完后用igenus在web界面发信不成功,我就在这里困了好几天.如果用igenus在web界面发信不成功,就手工用/usr/sbin/sendmail发信看看有没有问题.




--------------------------------------------------------------------------------

vpopmail
1. 下载vpopmail的稳定版
2.建立目录:
#mkdir /home/vpopmail
#mkdir /home/vpopmail/etc
3.添加用户和组:
#groupadd -g 89 vchkpw
# useradd -g vchkpw -u 89 vpopmail
4.添加mysql的vpopmail用户,用于操作vpopmail数据库
#mysql -u root –pxukixu //进入mysql命令行
mysql>create database vpopmail;
mysql>grant all on vpopmail.* to vpopmail@localhost identified by "xukixu";
5.编译安装vpopmail
#tar zxvf vpopmail-5.3.20.tar.gz
#cd vpopmail-5.3.20
#vi vmysql.h

#define MYSQL_UPDATE_SERVER "localhost" (mysql服务器名)
#define MYSQL_UPDATE_USER "vpopmail" (用户名)
#define MYSQL_UPDATE_PASSWD "xukixu" (改成你设置的密码)

#define MYSQL_READ_SERVER "localhost" (mysql服务器名)
#define MYSQL_READ_USER "vpopmail" (用户名)
#define MYSQL_READ_PASSWD "xukixu" (改成你设置的密码)

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 --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --enable-default-domain=domain.com --enable-passwd=n --enable-defaultquota=5242880 --enable-tcprules-prog=/usr/local/bin/tcprules --enable-vpopuser=vpopmail --enable-vpopgroup=vchkpw --enable-ip-alias-domains=n
\\下面是我使用的参数
--prefix=/home/vpopmail \\指定安装路径
--enable-mysql=y \\是否应用Mysql数据库
--enable-incdir=/usr/include/mysql \\Mysql数据库include文件所在目录
--enable-libdir=/usr/lib/mysql \\Mysql数据库lib文件所在目录
--enable-default-domain=domain.com \\定义虚拟域名
--enable-passwd=n \\是否使用系统密码验证方式
--enable-defaultquota=5242880 \\定义缺省邮箱大小,10485760为10MB,20971520为20MB,52428800s为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地址查找虚拟域名
# make
# make install-strip
8.创建虚拟域
# cd /home/vpopmail/bin
# ./vadddomain 域名 (密码) (在mysql数据库vpopmail中自动生成vpopmail表单)

# ./vadduser 用户名 密码 (会自动往表vpopmail中添加用户数据,用户名要带域名,如demo@demo.com)
如果不成功的话,则必须先删除创建的域,./vdeldomain 域名



--------------------------------------------------------------------------------

smtp-auth
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的启动脚本
生成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/binPATH" qmail-start ./Maildir/ splogger qmail &


#vi /var/qmail/smtp //编辑smtp服务的启动脚本

#!/bin/sh

QMAILDUID=qmaild
NOFILESGID=nofiles

/usr/local/bin/tcpserver -H -R –U -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.domain.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 -H –R –l –U 0 pop3 /var/qmail/bin/qmail-popup mail.domain.com(换成你的主机名) /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &

//这里要注意,这三个文件中的命令最好写在一行.我之前试过不在一行,好象不能启动服务.
#chmod 755 /var/qmail/rc
#chmod 755 /var/qmail/smtp
#chmod 755 /var/qmail/pop3



--------------------------------------------------------------------------------

运行qmail并测试
运行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日志记录,这样容易很快找出问题。



--------------------------------------------------------------------------------
 楼主| 发表于 2004-10-23 12:01:45 | 显示全部楼层
安装并运行igenus
1.到http://www.igenus.org下载最 ... 0040901_release.tgz

#tar zxvf igenus_2.0.2_20040901_release.tgz -C /var/www/html //redhat下apache的缺省document root

2.建temp文件夹

cd /var/www/html/igenus
#mkdir temp

#chmod -R 0755 temp

#chown -R vpopmail:vchkpw temp
#mkdir /home/netdisk

#chmod -R 0755 /home/netdisk

#chown -R vpopmail:vchkpw /home/netdisk
#chmod -R 0755 /var/www/html/igenus

#chown -R vpopmail:vchkpw /var/www/html/igenus
3.修改httpd.conf

#vi /etc/httpd/conf/httpd.conf
Group Apache

User Apache

修改为:
Group vchkpw
User vpopmail

DocumentRoot "/var/www/html/igenus"

AddDefaultCharset ISO-8859-1

修改为

AddDefaultCharset GB2312 //使默认页面为中文

#/etc/rc.d/init.d/httpd restart //重启apache,使修改生效

4.修改config_inc.php文件

# cd /var/www/html/igenus/config

# vi config_inc.php

$CFG_BASEPATH = "/var/www/html/igenus"; \\改成你安装的目录

$CFG_MYSQL_HOST = 'localhost';

$CFG_MYSQL_USER = 'vpopmail';

$CFG_MYSQL_PASS = 'xukixu'; \\改成你的密码

$CFG_MYSQL_DB = 'vpopmail';

$CFG_TEMP = $CFG_BASEPATh."/temp"; \\改成你安装的目录的当前目录下

5.重新编制Mysql数据库表格
删除之前创建的域名
#/home/vpopmail/bin/vdeldomain domain.com
# mysql -u root –pxukixu
mysql>use vpopmail;
drop table vpopmail;
create table vpopmail
(pw_id int(5) unsigned NOT NULL auto_increment,
pw_name varchar(32) NOT NULL default '',
pw_domain varchar(64) NOT NULL default '',
pw_passwd varchar(40) NOT NULL default '',
pw_uid int(11) default NULL,
pw_gid int(11) default NULL,
pw_gecos varchar(64) default NULL,
pw_dir varchar(160) default NULL,
pw_shell varchar(20) default NULL,
pw_clear_passwd varchar(16) default NULL,
PRIMARY KEY (pw_id),
KEY pw_name (pw_name,pw_domain) )
TYPE=MyISAM;

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;

CREATE TABLE `admin` (
`id` int(10) unsigned NOT NULL auto_increment,
`site_id` int(10) unsigned NOT NULL default '0',
`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',
`gid` varchar(11) NOT NULL default '',
`expiration_time` timestamp(14) NOT NULL,
`flag` int(10) unsigned NOT NULL default '0',
`maxmsg` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `domain` (`domain`)
) TYPE=MyISAM PACK_KEYS=1 ;

CREATE TABLE `card` (
`id` int(5) unsigned NOT NULL auto_increment,
`pw_id` int(5) unsigned NOT NULL default '0',
`LinkMan` varchar(64) NOT NULL default '',
`CompanyName` varchar(100) NOT NULL default '',
`Address` varchar(255) NOT NULL default '',
`Position` varchar(32) NOT NULL default '',
`PhoneNumber` varchar(16) NOT NULL default '',
`Mobile` varchar(12) NOT NULL default '',
`Email` varchar(128) NOT NULL default '',
`Partaker` varchar(32) NOT NULL default '',
`Memo` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;

CREATE TABLE `lastauth` (
`user` char(32) NOT NULL default '',
`domain` char(64) NOT NULL default '',
`remote_ip` char(1 NOT NULL default '',
`timestamp` bigint(20) NOT NULL default '0',
PRIMARY KEY (`user`,`domain`)
) TYPE=MyISAM;

CREATE TABLE `logs` (
`pw_id` int(5) default '0',
`ip` varchar(15) NOT NULL default '',
`action` varchar(15) NOT NULL default '',
`time` datetime default NULL,
`content` varchar(64) NOT NULL default '',
`email` varchar(128) NOT NULL default ''
) TYPE=MyISAM;

CREATE TABLE `message` (
`id` int(5) unsigned NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`body` text NOT NULL,
`createtime` datetime NOT NULL default '0000-00-00 00:00:00',
`updatetime` datetime NOT NULL default '0000-00-00 00:00:00',
`pw_domain` varchar(64) NOT NULL default '',
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM ;

CREATE TABLE `personal` (
`id` int(11) unsigned NOT NULL auto_increment,
`pw_id` int(5) NOT NULL default '0',
`truename` varchar(10) NOT NULL default '',
`fax` varchar(20) NOT NULL default '',
`telephone` varchar(15) NOT NULL default '',
`sex` int(1) NOT NULL default '0',
`year` int(4) NOT NULL default '0',
`MONTH` int(2) NOT NULL default '0',
`DAY` int(2) NOT NULL default '0',
`education` varchar(4) NOT NULL default '',
`marital` int(1) NOT NULL default '0',
`occupation` varchar(15) NOT NULL default '',
`companyname` varchar(30) NOT NULL default '',
`province` varchar(6) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM PACK_KEYS=1 ;

CREATE TABLE `scheduler` (
`id` int(11) unsigned NOT NULL auto_increment,
`begin_time` int(11) unsigned default NULL,
`end_time` int(11) unsigned default NULL,
`title` varchar(255) NOT NULL default '',
`body` varchar(255) NOT NULL default '',
`pw_id` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;

CREATE TABLE `stow` (
`id` int(5) unsigned NOT NULL auto_increment,
`pw_id` int(5) unsigned NOT NULL default '0',
`Name` varchar(128) NOT NULL default '',
`http` varchar(255) NOT NULL default 'http://',
`memo` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
quit;
6. 设置igenus 定义允许上传下载的邮件的大小
编辑/etc/php.ini
max_execution_time=60
memory_limit=20M
post_max_filesize=10M
file_uploads=on
upload_max_filesize=10M
register_globals=On
session.bug_compat_42=0
session.bug_compat_warn=0
Sendmail = /var/qmail/bin/qmail-inject
7.编辑/etc/http/conf/httpd.conf

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html

NameVirtualHost *

<VirtualHost *>
ServerName mail.domain.net
DocumentRoot /var/www/htdocs/igenus
</VirtualHost>
重启apache:
#service httpd restart

8. 修改index.php,signup.php,submit.php,help.php这几个文件中有关域名的地方,将它改成自己的域名.

9.如果需要,用vadddomain和vadduser添加新域名和新用户。

最后打开浏览器,输入http://domain.com/,就可以访问网站了。
10.Qmail限制附件的大小

在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对qmail附件大小的限制,一般安装完成后,这个文件是没有的,你可以自己创建。

smtp方式是以qmail的databytes作限制的

创建databytes并设置邮件最大为4m

# echo 4000000 >/var/qmail/control/databyte

11.限制单域的邮箱数量

vi /home/vpopmail/domains/domain.com/.qmailadmin-limits

maxpopaccounts 200

default_quota 52428800s

chmod 700 /home/vpopmail/domains/domain.com/.qmailadmin-limits

chwod vpopmail:vchkpw /home/vpopmail/domains/domain.com/.qmailadmin-limits
这样就把邮箱总数限制在200个,每个邮箱为50M了

12.用qmail封mailfrom

vi/var/qmail/control/badmailfrom

这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起qmail就能生效。例如:

peng@96633.net -----限制一个特定的用户

@sina.com -----限制整个域中的邮件


--------------------------------------------------------------------------------

qmail自启动脚本

#vi /etc/rc.d/init.d/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



--------------------------------------------------------------------------------

安装ezmlm and ezmlm-idx
安装ezmlm and ezmlm-idx
1.注意:为了启用maillist的MySQL支持,你必须首先:
建立mysql管理用户:(Ex:user:ezmlm,pass:ezmlm)
# mysql -u root –pxukixu
>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 -pxukixu create ezmlm
2.ezmlm-idx包含有对ezmlm的修正和补充,他们是一个整体。
#cd /home/software
# tar -zxvf ezmlm-0.53.tar.gz
# tar -zxvf ezmlm-idx-0.40.tar.gz
# cp -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

修改conf-bin
第一行:/var/qmail/bin/ezmlm

修改conf-man
第一行:/var/qmail/man

修改conf-qmail
第一行:/var/qmail

# make setup

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

# mkdir /var/qmail/bin/ezmlm

# cp ezmlm-mktab /var/qmail/bin/ezmlm
# /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 |
+------------------------+

你可以用一下命令察看!
# mysqlshow -u root -pwangxu ezmlm




--------------------------------------------------------------------------------

安装autorespond
安装autorespond

#tar xzvf autorespond-2.0.4.tar.gz
#cd autorespond-2.0.4
#vi Makefile
将其中的INSTALL_DIR =修改为 /var/qmail/bin
#make
#make install
#cp autorespond /usr/local/bin



--------------------------------------------------------------------------------

安装qmailadmin
安装 qmailadmin-1.2.2.tar.gz
tar xzvf qmailadmin-1.2.2.tar.gz
cd qmailadmin-1.2.2
./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html --enable-ezmlmdir=/var/qmail/bin

make
make install-strip

再一次执行:
chmod -R 0755 /var/www/html/igenus
chmod -R 0755 /var/www/html/igenus/temp
chmod -R 0755 /var/www/html/images
chown -R vpopmail:vchkpw /var/www/html/igenus
chown -R vpopmail:vchkpw /var/www/html/igenus/temp
chown -R vpopmail:vchkpw /var/www/html/images



--------------------------------------------------------------------------------

测试
测试igenus
http://domain.com/

测试qmailadmin
http://domain.com/cgi-bin/qmailadmin

测试SMTP认证
# telnet localhost 25

Trying 127.0.0.1...

Connected to mail.domain.com (127.0.0.1).
Escape character is '^]'.
220 mail. domain.com ESMTP
EHLO hostname
250-mail.domain.com
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
测试POP3
# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Hello there.
user xy.wang@domain.com
+OK Password required.
pass [password]
+OK logged in.
quit
+OK Bye-bye.
Connection closed by foreign host.




--------------------------------------------------------------------------------
 楼主| 发表于 2004-10-23 12:02:35 | 显示全部楼层
邮件系统维护:
查看邮件日志
#cat /var/log/maillog

设置Qmail用户邮箱的容量
# cd /home/vpopmail/bin
#./vsetuserqutoa domain.com 10500000s --domain.com这个域,都设成10m的
#./vsetuserqutoa xuki@domain.com 10500000s ---只把xuki@domain.com这个用户单独设置为10m。

批量添加用户

例1:

新建一文件 batchadduser.sh,将以下内容拷入文件中保存 ,运行chmod u+x batchadduser.sh使其可执行。

#!/bin/bash
#batchadduser.sh: batch add mail user.
#install step.
#chmod u+x batchadduser
#./batchadduser.sh domain datafile
if [ $# -lt 2 ]
then
echo "usage: $0 domain datafile"
exit 1
fi
domain=$1
datafile=$2
addcmd=/home/vpopmail/bin/vadduser
while read username passwd
do
$addcmd $username@$domain $passwd
done < $datafile

user文件内容的格式
username1 passwd
username2 passwd2
............


运行batchadduser.sh user即可批量添加用户。

例2:

我把用户名放到一个文本文件中,一个名字一行,密码和它的帐号一致,用户自己再去改密码。

while read line
do
echo $line
./vadduser $line $line
done < user


有选择地清理不需要的Mail Queue


1、处理队列中的邮件:

如想在队列中的邮件马上传递,可以
# kill -HUP qmail-send
要删除队列中的邮件
1) 停止QMAIL
2) mv /var/qmail/queue/lock /var/qmail/;find /var/qmail/queue/ -type f -exec rm {} \; ;mv /var/qmail/lock /var/qmail/queue/
3) 重启QMAIL.
队列中的邮件包含在以下目录中 /var/qmail/queue/{info,mess,remote,local}/hash/#number
2、在邮件队列中快速删除从一个地方发过来但又不存在的邮件 设bad.jite.com是这个域。可以键入以下命令
# echo # > ~alias/.qmail-baddomain-default
# echo bad.jite.com:alias-baddomain>> /var/qmail/control/virtualdomains
# echo bad.jite.com:127.0.0.1 >> /var/qmail/control/smtproutes
然后运行/var/qmail/bin/qmail-tcpok,给qmail-send 一个HUP信号
3、删除队列中的大量广告信息

先停止QMAIL.
1) 停止qmail, qmail-smtpd
2) 在以下默认目录下 /var/qmail/queue/mess
find /var/qmail/queue/mess -type f -exec grep "^Subject:dss" {} \; -print -exec rm {} \;
3) 运行queue-fix清除相关文件,
4) 重启qmail.

使用sh备份qmail+mysql数据到指定的ftp地址的方法
备份vpopmail的domains目录、qmail的control目录和mysql的var数据存放目录,使用crontab定时进行操作。下面是脚本文件,具体的目录视自己的系统更改:
mkdir /var/qmailbakup
cd /var/qmailbakup
touch qmailbakup.sh
chmod 755 qmailbakup .sh

vi qmailbakup.sh
[code:1:d480555598]
#!/bin/sh

DATE=`date +%Y-%m-%d-%H`

cd /var/qmailbakup/

tar cvzf domains.$DATE.tar.gz /home/vpopmail/domains
tar cvzf control.$DATE.tar.gz /var/qmail/control
tar cvzf mysql.$DATE.tar.gz /usr/local/mysql/var

ftp -n 192.168.0.21 << ! //你的ftp服务器的地址
user qmail qmailbakup //ftp用户名和密码,注意要有put权限
binary
put domains.$DATE.tar.gz
put control.$DATE.tar.gz
put mysql.$DATE.tar.gz
bye
!

rm -f domains.$DATE.tar.gz control.$DATE.tar.gz mysql.$DATE.tar.gz //删除本机产生的文件,如果你想在本服务器也保存一份备份,去掉该项即可。
[/code:1:d480555598]

使用crontab定时执行:
vi /etc/crontab
00 20 * * 0-6 /var/qmailbakup/qmailbakup.sh

这样每天晚上8:00执行改备份程序。

给新浪发信的解决办法
qmail
echo "我的邮件服务器的真实域名(A记录)" > /var/qmail/control/helohost

临时限制一个用户的pop3
vmoduser -p email_addr or domain ( for the entire domain )

修改默认的域名
A:
要更改haohao.com为默认域。
方法:
更改~qmail/control/
defaultdomain
me
plusdomains
逐一更改启动pop3和 smtp的启动脚本:
修改:email.3sk.com为haohaoo.com
在最上边添加:export VPOPMAIL_DOMAIN=haohaoo.com

将一个系统的Qmail用户完整地转移到另一个系统
A:
a.cdb配置的?那么请把/home/vpopmail/domains这个文件夹备份好就可以了。用户和密码文件,还有用户信件都在这个目录下。
还应该备份/var/qmail/control下的相关配置文件。

b.如果是以MYSQL数据库方式来存储用户认证信息的
只需要备份
~vpopmail/domain下的所有邮件
/var/qmail/control的配置文件
MYSQL数据库目录下的vpopmail库目录。一般是/var/lib/mysql(RPM)、/usr/local/mysql/data、/usr/local/mysql/var下面。


把一邮件域的名字比如a.com更改为b.com,如何实现
以下几个步骤:
1、cd /home/vpopmail/domains
mv a.com b.com

2、把vpopmail数据库的vpopmail表导出把所有a.com改为b.com,然后删除vpopmail表,再导入.

3、把把vpopmail数据库的dir_control表的a.com改为b.com

4、在/home/qmail/control 目录下把 virtualdomains和rcpthosts下的的a.com改为b.com.

5、在/home/qmail/users目录下把assign文件的a.com改为b.com

6、需要运行qmail-newu重新生成cdb。assign只是配置文件,cdb才是实际的数据文件。

加快 qmail 投递邮件速度
A: /var/qmail/control下面是qmail的控制文件,这两个文件:
Concurrentcylocal default: 10 最大本地同时传送数
Concurrencyremote default: 20 最大远程同时传送数

更改域的默认管理账号
A: vmoduser有个-a参数,可以赋予用户管理权限。

如果想全面禁用postmaster的特殊权限话,就只能改源代码了。

QMAIL下的主要配置文件(/var/qmail/control目录下):
文件名 默认值 使用者 用途
badmailfrom none qmail-smtpd 黑名单地址
bouncefrom MAILER-DAEMON qmail-send 退回邮件
bouncehost me qmail-send 退回邮件
concurrencylocal 10 qmail-send 本地同时投递邮件的数目
concurrencyremote 20 qmail-send 同时投递至远程主机的数目
defaultdomain me qmail-inject 默认域名
defaulthost me qmail-inject 默认主机名
databytes 0 qmail-smtpd 邮件的最大容量 (0=无限制)
doublebouncehost me qmail-send
doublebounceto postmaster qmail-send
envnoathost me qmail-send 没有"@"的默认域名
helohost me qmail-remote 主机名
idhost me qmail-inject Message-ID的主机名
localiphost me qmail-smtpd 本地IP的替代名
locals me qmail-send 传递至本地的域名
me 系统正式域名 various
morercpthosts none qmail-smtpd 第二个rcpthosts
percenthack none qmail-send 使用 "%"格式的域名
plusdomain me qmail-inject
qmqpservers none qmail-qmqpc QMQP服务器的IP地址
queuelifetime 604800 qmail-send 在队列中邮件保存的时间(秒)
rcpthosts none qmail-smtpd 接收邮件的域名
smtpgreeting me qmail-smtpd
smtproutes none qmail-remote
timeoutconnect 60 qmail-remote SMTP连接超时时间
timeoutremote 1200 qmail-remote 等待远程主机的时间
timeoutsmtpd 1200 qmail-smtpd SMTP客户连接超时的时间
virtualdomains none qmail-send 虚拟域名


Qmail限制附件大小
我的配置经验==》Qmail限制附件大小:
1.在/var/qmail/control/databytes 中设置附件大小,这个文件要手动建立,直接输入数字就行,默认单位为bytes,如10485760为10M;
2.Webmail中发送附件默认只支持500K左右,如想支持5M附件,修改如下文件
# vi /etc/php.ini

post_max_filesize=5M //320行
upload_max_filesize=5M //405行
session.bug_compat_42=0 //加入到641行
session.bug_compat_warn=0

# vi /etc/httpd/conf.d/php.conf
LimitRequestBody 5242880 //修改14行的值为5M










--------------------------------------------------------------------------------

以上为参考网上大量文章结合实际而成,希望对大家有所帮助。
发表于 2004-10-23 12:14:34 | 显示全部楼层
嗯,不错。
发表于 2004-10-23 13:10:55 | 显示全部楼层
顶,我支持你!!!!!!!!!!!!!!!!!11
发表于 2004-10-23 13:16:31 | 显示全部楼层
有意思
壇上有這麽多這樣的文章啊
发表于 2004-10-25 20:20:40 | 显示全部楼层
请问如何设置DNS MX记录啊,查了一些文章都看不明白

到底是要在本机建立一个dns服务器,还是直接改/etc/hosts文件就可以了。
发表于 2004-10-25 20:54:16 | 显示全部楼层
好文. 借问一下.兄弟觉得SMTP-AUTH补丁和smtp.c的补丁那个比较好一点
 楼主| 发表于 2004-10-25 21:43:24 | 显示全部楼层
本机不用安装DNS服务器,也不用修改hosts文件,测试DNS只是看你的域名解析成功没有。
 楼主| 发表于 2004-10-25 21:45:12 | 显示全部楼层
针对smtp-auth的补丁,我目前没做太多测试,暂时不知道个中的差别。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表