Loading...
服务热线:400-6866-150 (电话列表) 购物车(0)
您好,访客 请登陆注册
 

当前位置:资讯中心主页 >Linux >文章内容

  • 在Linux下安装邮件服务器-qmail
  • 来源:Blog.ChinaUnix.net作者:Blog.ChinaUnix.net 发布时间:2008-04-07 13:35:20
    • 域名注册

    • 域名惊喜价格 cn域名1元注册
    • com域名39.9

      虚拟主机

    • 主机按月支付,低至19元/月
    • 超大流量,可开子站点

      VPS主机

    • 特惠VPS168元/月,4-8M独享带宽保证
    • 独立操作系统,无限开站点

    在Linux下安装邮件服务器-qmail


    (Linux(RHAS3)+Apache+PHP+MySQL+qmail+vpopmail+iGenus+iGenus admin+ezmlm+autorespond+qmailadmin+vqadmin+imap+qmail-scanner+maildrop+spamassassin+MRTG+isoqlog)




    在Linux下安装邮件服务器-qmail


    (Linux(RHAS3)+Apache+PHP+MySQL+qmail+vpopmail+iGenus+iGenus admin+ezmlm+autorespond+qmailadmin+vqadmin+imap+qmail-scanner+maildrop+spamassassin+MRTG+isoqlog)

    • 功能列表

      SMTP服务器:SMTP-AUTH认证(Plain,Login,CRAM-MD5),TLS(SSL)支持
      POP3服务器:CRAM-MD5,APOP,和SSL支持
      IMAP服务器:TLS(SSL)支持
      病毒和垃圾邮件检测
      自动回复
      邮件列表
      Web管理
      通过Web显示统计信息
      WebMail
      MRTG

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

    • 安装准备
    • 安装环境

    这个安装过程基本上你只需要复制粘贴就能完成.我在RedHat AS3/9.0/8.0/7.3上安装成功,其他系统还没试过.为了方便安装我在安装Redhat3.0时选了apache、php、mysql,注意mysql-devel和mysql-server研发包一定要装上.另外大家在安装LINUX时一定要装上软件研发和内核研发两个软件组,这样能避免不必要的由于编译环境的问题而导致的安装问题,这点对于LINUX新手犹为重要。安装系统后,一般另需安装php-mysql这个包,在安装光碟第三张。AS3.0安装后,并没有mysql-server软件包,需自行下载安装,为方便大家,mysql-server软件包我已和所有软件放在一个包中。

    要确认下面的软件是否已安装:

    rpm -q httpd
    rpm -q php
    rpm -q php-mysql
    rpm -q mysql
    rpm -q mysql-server
    rpm -q mysql-devel
    rpm -q gdbm
    rpm -q gdbm-devel
    rpm -q openssl
    rpm -q openssl-devel
    rpm -q stunnel
    rpm -q krb5-devel

    如果你还没有安装, 请先安装他们. 你能到安装光盘或是在这里找到他们的RPM包 http://www.rpmfind.net.

    安装mysql server
    由于AS3在安装时没有mysql的选项我们需要自己安装mysql服务
    自动安装mysql服务
    cd /home/pkg
    rpm -ivh mysql-server-3.23.58-1.i386.rpm
    启动mysql server: 
    service mysqld start
    设置mysql root口令: 
    mysqladmin -u root password ‘123456’(设置你的密码)

    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

    在视窗系统下:

    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

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

    netqmail-1.05.tar.gz
    daemontools-0.76.tar.gz
    daemontools-0.76.errno.patch
    autorespond-2.0.5.tar.gz
    toaster-scripts-0.6.tar.gz
    qmail-toaster-0.6-1.patch.bz2
    ezmlm-0.53.tar.gz
    ezmlm-idx-0.42.tar.gz
    courier-imap-2.2.2.20040207.tar.bz2
    igenus_2.0.2_20040901_release.tgz
    mysql-server-3.23.58-1.i386.rpm
    qmailadmin-1.2.3.tar.gz
    chkuser-0.6.mysql.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.4.7.tar.gz
    qmailadmin-1.2.3.tar.gz
    vqadmin-2.3.6.tar.gz
    Mail-SpamAssassin-3.0.1.tar.gz
    clamav-0.80.tar.gz
    qmail-scanner-1.22.tgz
    qms-analog-0.3.4.tar.gz
    maildrop-1.7.0.tar.bz2
    tnef-1.2.3.1.tar.gz
    qmailanalog-0.70.tar.gz
    qmailanalog-0.70.errno.patch
    qlogtools-3.1.tar.gz
    qlogtools_errno.patch
    zlib-1.1.4.tar.gz
    libpng-1.2.7.tar.gz
    gd-1.8.3.tar.gz
    mrtg-2.10.15.tar.gz
    qmailmrtg7-4.0.tar.gz
    igenus_admin_0.1.tgz
    isoqlog-2.1.1.tar.gz

    tar -xzf netqmail-1.05.tar.gz
    cd netqmail-1.05
    ./collate.sh

    注意:./collate.sh这一步不要忘


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

    • 安装软件
    • daemontools

    daemontools是个收集管理UNIX进程的工具.用他来监听qmail-send,qmail-smtpd,qmail-pop3d.

    #安装:
    cd /home/pkg
    tar -zxvf daemontools-0.76.tar.gz
    cd admin/daemontools-0.76
    patch -p1 < /home/pkg/netqmail-1.05/other-patches/daemontools-0.76.errno.patch
    package/install
    # 验证daemontools已正常运行:
    sleep 5
    ps ax | grep svscan

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

    • ucspi-tcp

    ucspi-tcp包括tcpserver和tcpclient,一个命令行工具来建立client-server应用程式.

    #安装:
    cd /home/pkg
    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

    这个toaster补丁,是下面这几个补丁的组合:

    smtp auth 0.4.2

    qmail-queue (to allow for virus scanners)

    maildir++ patch

    support oversize dns packets (not necessary if you use dnscache)

    mfcheck (check that the envelope sender has a dns entry)

    tarpit delay

    qregex (regular expression matching in badmailfrom and badmailto)

    big concurrency (set the spawn limit above 255)

     

    #安装:

    mkdir /var/qmail
    groupadd nofiles
    useradd -g nofiles -d /var/qmail/alias alias
    useradd -g nofiles -d /var/qmail qmaild
    useradd -g nofiles -d /var/qmail qmaill
    useradd -g nofiles -d /var/qmail qmailp
    groupadd qmail
    useradd -g qmail -d /var/qmail qmailq
    useradd -g qmail -d /var/qmail qmailr
    useradd -g qmail -d /var/qmail qmails

    # 在这里把vpopmail用户也加上
    groupadd -g 89 vchkpw
    useradd -u 89 -g vchkpw vpopmail

    cd /home/pkg
    tar -xzf toaster-scripts-0.6.tar.gz
    cd netqmail-1.05/
    bunzip2 -c ../qmail-toaster-0.6-1.patch.bz2 | patch -p0
    cd netqmail-1.05

    # 注:在RedHat上,需要为TLS补丁链接一个include文件:
    ln -s /usr/kerberos/include/com_err.h /usr/kerberos/include/krb5.h /usr/kerberos/include/profile.h /usr/include/

    vi qmail-smtpd.c 搜索函数straynewline中的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
    make setup check

    # 用你自己的主机名代替下面的mail.domain.com
    ./config-fast mail.domain.com

    cd /var/qmail/alias
    touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
    chmod 644 /var/qmail/alias/.qmail*
    cd -

    echo 1 > /var/qmail/control/mfcheck
    echo ./Maildir/ >/var/qmail/control/defaultdelivery

    make cert
    # 按提示输入公司信息

    make tmprsadh
    # 注:这里可能要多等一会

    # 用"crontab -e"在crontab里增加下面这条,每天晚上更新temp keys
    01 01 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1

    #为qmail服务建立监视目录和日志文件:

    mkdir -p /var/qmail/supervise/qmail-send/log
    mkdir -p /var/qmail/supervise/qmail-smtpd/log
    mkdir -p /var/qmail/supervise/qmail-pop3d/log
    mkdir -p /var/qmail/supervise/qmail-pop3ds/log
    chmod +t /var/qmail/supervise/qmail-send
    chmod +t /var/qmail/supervise/qmail-smtpd
    chmod +t /var/qmail/supervise/qmail-pop3d/log
    chmod +t /var/qmail/supervise/qmail-pop3ds/log
    cp /home/pkg/toaster-scripts-0.6/send.run /var/qmail/supervise/qmail-send/run
    cp /home/pkg/toaster-scripts-0.6/send.log.run /var/qmail/supervise/qmail-send/log/run
    cp /home/pkg/toaster-scripts-0.6/smtpd.run /var/qmail/supervise/qmail-smtpd/run
    cp /home/pkg/toaster-scripts-0.6/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
    cp /home/pkg/toaster-scripts-0.6/pop3d.run /var/qmail/supervise/qmail-pop3d/run
    cp /home/pkg/toaster-scripts-0.6/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
    cp /home/pkg/toaster-scripts-0.6/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
    cp /home/pkg/toaster-scripts-0.6/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run
    echo 20 > /var/qmail/control/concurrencyincoming
    chmod 644 /var/qmail/control/concurrencyincoming
    chmod 755 /var/qmail/supervise/qmail-send/run
    chmod 755 /var/qmail/supervise/qmail-send/log/run
    chmod 755 /var/qmail/supervise/qmail-smtpd/run
    chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
    chmod 755 /var/qmail/supervise/qmail-pop3d/run
    chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
    chmod 755 /var/qmail/supervise/qmail-pop3ds/run
    chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run
    mkdir -p /var/log/qmail/smtpd
    mkdir -p /var/log/qmail/pop3d
    mkdir -p /var/log/qmail/pop3ds
    chown -R qmaill /var/log/qmail

    #启动脚本:

    cp /home/pkg/toaster-scripts-0.6/rc /var/qmail/
    cp /home/pkg/toaster-scripts-0.6/qmailctl /var/qmail/bin/
    chmod 755 /var/qmail/rc
    chmod 755 /var/qmail/bin/qmailctl

    ln -s /var/qmail/bin/qmailctl /usr/bin
    ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
    ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

    # 用daemontools来启动qmail-send和qmail-smtpd
    ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

    #命令:

    # 启动,停止,重启,查看队列等
    qmailctl start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help

    # 检查服务
    netstat -an | grep 25
    ps -ef | grep qmail
    ps -efl | grep "service errors" | grep -v grep

    日志:

    /var/log/maillog
    /var/log/qmail/current
    /var/log/qmail/pop3d/current
    /var/log/qmail/pop3ds/current
    /var/log/qmail/smtpd/current

    我建议重新回顾一下刚才我们所做的步骤以熟悉对qmail的安装. 下面我们将开始vpopmail的安装.

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

    • vpopmail

    vpopmail是个以qmail为基础的虚拟域管理包

    vpopmail的用户和组我们前边已建立了

    #设置:

    mkdir -p /home/vpopmail/etc

    # 设置默认域,红色部份改成你要设置的域。
    echo "domain.com" > /home/vpopmail/etc/defaultdomain

    # 设置smtp规则,关闭open relays
    echo ’127.0.0.1:allow,RELAYCLIENT=""’ > /home/vpopmail/etc/tcp.smtp
    cd /home/vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

    # 设置MySQL信息,第一个vpopmail是帐号,xukixu为密码,第二个vpopmail是数据库
    echo "localhost|0|vpopmail|123456|vpopmail" > /home/vpopmail/etc/vpopmail.mysql

    chmod 640 /home/vpopmail/etc/vpopmail.mysql
    chown -R vpopmail.vchkpw /home/vpopmail/etc

    # 在MySQL里添加vpopmail的帐号
    mysql -uroot -p123456

    CREATE DATABASE vpopmail;
    GRANT select,insert,update,delete,create,drop ON vpopmail.*
    TO vpopmail@localhost IDENTIFIED BY ’123456’;
    FLUSH PRIVILEGES;
    QUIT

    #安装:

    cd /home/pkg/
    tar zxvf vpopmail-5.4.7.tar.gz
    cd vpopmail-5.4.7

    # 带数据库支持

    ./configure --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --disable-roaming-users --enable-logging=p --disable-passwd --enable-clear-passwd --disable-domain-quotas --enable-auth-module=mysql --enable-auth-logging --enable-mysql-logging --disable-valias --disable-mysql-limits

    make
    make install-strip

    #管理:

    echo ’export PATH=$PATH:/home/vpopmail/bin’ >> /etc/profile
    source /etc/profile

    # 添加域,红色部份前面是域名,后面是管理员(postmaster)密码
    vadddomain domain.com 123456

    # 添加用户,红色部份为注解,不用输入
    vadduser -q 10485760S(邮箱大小) user@domain.com(邮箱帐号) 1234(密码)
    vmoduser -c user(邮箱描述) user@domain.com

    # 设置邮箱容量达到90%的警告信息
    vi /home/vpopmail/domains/.quotawarn.msg

    From: 邮箱管理员
    Reply-To: postmaster@domain.com
    To: 邮箱用户
    Subject: 邮箱空间警告
    Mime-Version: 1.0
    Content-Type: text/html; charset=gb2312
    Content-Transfer-Encoding: base64

    你的邮箱空间已达到90%.如果想继续使用,请删除一些信件.
    如果需要帮助,请联系邮箱管理员:
    Email : postmaster@domain.com

    # 设置邮箱已满的警告信息
    echo "邮件被拒绝,用户的邮箱空间已满." > /home/vpopmail/domains/.over-quota.msg

    #启动脚本:

    cp /home/pkg/toaster-scripts-0.6/vpopmailctl /var/qmail/bin
    ln -s /var/qmail/bin/vpopmailctl /usr/bin
    chmod 755 /var/qmail/bin/vpopmailctl

    # 用daemontools来启动qmail-pop3d和qmail-pop3ds
    ln -s /var/qmail/supervise/qmail-pop3d /service
    ln -s /var/qmail/supervise/qmail-pop3ds /service

    #命令:

    # 启动,停止,重启,查看队列等
    vpopmailctl start|stop|restart|stat|pause|cont|help

    # 检查服务
    netstat -an | grep 110
    ps -ef | grep qmail
    ps -efl | grep "service errors" | grep -v grep

    #补丁:

    # 带数据库支持
    cd /home/pkg/netqmail-1.05/netqmail-1.05
    patch -p0 < /home/pkg/chkuser-0.6.mysql.patch

    #修改libmysqlclient.a存在路径
    vi conf-mysql
    /usr/lib/mysql/libmysqlclient.a
    make clean
    make
    qmailctl stop
    make setup check
    qmailctl start

    安装选项参考:

    vpopmail 5.4.7
    Current settings
    ---------------------------------------

    vpopmail directory = /home/vpopmail
    uid = 89
    gid = 89
    roaming users = OFF --disable-roaming-users (default)
    password learning = OFF --disable-learn-passwords (default)
    md5 passwords = ON --enable-md5-passwords (default)
    file locking = ON --enable-file-locking (default)
    vdelivermail fsync = OFF --disable-file-sync (default)
    make seekable = ON --enable-make-seekable (default)
    clear passwd = ON --enable-clear-passwd (default)
    user dir hashing = ON --enable-users-big-dir (default)
    address extensions = OFF --disable-qmail-ext (default)
    ip alias = OFF --disable-ip-alias-domains (default)
    domain quotas = OFF --disable-domainquotas (default)
    auth module = mysql --enable-auth-module=mysql
    mysql replication = OFF --disable-mysql-replication (default)
    mysql logging = ON --enable-mysql-logging
    mysql limits = OFF --disable-mysql-limits (default)
    MySQL valias = OFF --disable-valias (default)
    auth inc = -I/usr/include/mysql
    auth lib = -L/usr/lib/mysql -lmysqlclient -lz -lm
    system passwords = OFF --disable-passwd (default)
    pop syslog = show failed attempts with clear text password
    --enable-logging=p
    auth logging = ON --enable-auth-logging (default)
    all domains in one SQL table = --enable-many-domains (default)

    #POP3和SMTP测试

    用outlook测试qmail的smtp和pop3是否正常,注意由于vpopmail支持虚拟域名,所以在outlook中设置邮件帐号时,用户名后要加上域名,如demo@demo.com。smtp是带认证的,在outlook中也要作相应设置。建议先测试正常

    后再进行下一步安装。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录,这样容易非常快找出问题。

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

    • 安装并运行igenus

    到http://www.igenus.org下载最新的安装包,我用的是igenus_2.0.2_20040901_release.tgz

    #安装:
    cd /home/pkg
    tar zxvf igenus_2.0.2_20040901_release.tgz -C /var/www/
    cd /var/www/
    rm -rf html/
    mv igenus html

     

    #建temp目录

    cd /var/www/html/
    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/
    chown -R vpopmail:vchkpw /var/www/html/

    #修改httpd.conf

    vi /etc/httpd/conf/httpd.conf
    Group vchkpw
    User vpopmail
    DocumentRoot "/var/www/html/"

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

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

    #修改config_inc.php文件

    cd /var/www/html/config
    vi config_inc.php

    $CFG_BASEPATH = "/var/www/html/"; 改成你安装的目录
    $CFG_MYSQL_HOST = ’localhost’;
    $CFG_MYSQL_USER = ’vpopmail’; vpopmail访问mysql的帐号
    $CFG_MYSQL_PASS = ’123456’; vpopmail访问mysql的密码
    $CFG_MYSQL_DB = ’vpopmail’; 数据库
    $CFG_TEMP = $CFG_BASEPATh."/temp"; 改成你安装的目录的当前目录下

    #重新编制Mysql数据库表格

    #删除之前创建的域名
    vdeldomain domain.com

    #编辑数据库:
    mysql -uroot -pxukixu

    use vpopmail;
    drop table lastauth;
    drop table vpopmail;
    quit;

    #编辑/var/www/html/docs/iGENUS.sql

    vi /var/www/html/docs/iGENUS.sql

    # phpMyAdmin SQL Dump
    # version 2.5.3
    # http://www.phpmyadmin.net
    #
    # Host: localhost
    # Generation Time: Jun 04, 2004 at 11:26 AM
    # Server version: 3.23.55
    # PHP Version: 4.3.0
    #
    # Database : `vpopmail`
    #

    # --------------------------------------------------------

    #
    # Table structure for table `address`
    #

    use vpopmail; //加入这一行
    CREATE TABLE `address` (
    `id` int(11) unsigned NOT NULL auto_increment,
    `pw_id` int(5) 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 PACK_KEYS=1 ;

    # --------------------------------------------------------
    。。。。。。。。。
    。。。。。。。。。。

    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(48) default NULL,
    `pw_dir` varchar(255) default NULL,
    `pw_shell` varchar(20) default NULL,
    `pw_clear_passwd` varchar(16) default NULL, 加入这一行
    `createtime` timestamp(14) NOT NULL,
    PRIMARY KEY (`pw_id`),
    KEY `pw_name` (`pw_name`,`pw_domain`)
    ) TYPE=MyISAM PACK_KEYS=1 ;

    运行
    #mysql -uroot -p123456

     

    #设置igenus 定义允许上传下载的邮件的大小

    vi /etc/php.ini
    #编辑/etc/php.ini

    max_execution_time=60
    memory_limit=20M
    post_max_size = 10M
    file_uploads=on
    upload_max_filesize=10M
    register_globals=On
    session.bug_compat_42=0
    session.bug_compat_warn=0
    sendmail_path = /var/qmail/bin/qmail-inject

    vi /etc/httpd/conf/httpd.conf
    #编辑/etc/http/conf/httpd.conf


    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    DirectoryIndex index.php index.html
    NameVirtualHost *:80

    ServerName mail.domain.net
    DocumentRoot /var/www/html

    #重启apache:
    #service httpd restart

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

    最后打开浏览器,输入http://domain.com/,就能访问网站了。

    #Qmail限制附件的大小

    在/var/qmail/control/databytes 文件中设置附件的大小,能实现对qmail附件大小的限制,一般安装完成后,这个文件是没有的,你能自己创建。
    smtp方式是以qmail的databytes作限制的
    创建databytes并设置邮件最大为4m

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

    #限制单域的邮箱数量

    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了

     

    #用qmail封mailfrom

    vi/var/qmail/control/badmailfrom

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

    peng@96633.net -----限制一个特定的用户
    @sina.com -----限制整个域中的邮件

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

    • 安装并运行iGenus_Admin能选择一般我不安装认为没用功能又少

    iGenus_Admin安装

    #下载
    从www.igenus.org 下载igenus_admin的安装文件igenus_admin_0.1.tgz到/home/pkg

    #安装
    cd /home/pkg
    tar -xzvf igenus_admin_0.1.tgz -C /var/www/html/

    #设置

    vi /var/www/html/admin/includes/config_inc.php

    /*-
    * iGENUS webmail
    *
    * Copyright (c) 1999-2002 by iGENUS Org.
    * All rights reserved.
    * Author: Wu Qiong
    *
    * $Id: config_inc.php,v 1.11 2004/03/23 13:59:12 wuqiong Exp $
    */

    if(!defined("INCLUDE_CONFIG_OK")) {
    define("INCLUDE_CONFIG_OK","TRUE");

    /* gid flags defind by vpopmail.h */

    // define(’NO_PASSWD_CHNG’,0x01);
    define(’NO_POP’, 0x02);
    define(’NO_WEBMAIL’, 0x04);
    // define(’NO_IMAP’, 0x08);
    // define(’BOUNCE_MAIL’, 0x10);
    // define(’NO_RELAY’, 0x20);
    // define(’NO_DIALUP’, 0x40);
    // define(’V_USER0’, 0x080);
    // define(’V_USER1’, 0x100);
    // define(’V_USER2’, 0x200);
    // define(’V_USER3’, 0x400);
    define(’NO_SMTP’, 0x800);
    // define(’QA_ADMIN’, 0x1000);

    $CFG_VPOPMAIL_HOST = "localhost";
    $CFG_VPOPMAIL_USER = "vpopmail"; 改为你的帐号
    $CFG_VPOPMAIL_PASS = "123456"; 改为你的密码
    $CFG_VPOPMAIL_DB = "vpopmail";
    $CFG_VPOPMAIL_TABLE = "vpopmail";
    $CFG_ADMIN_TABLE = "admin";
    $CFG_LAGESITE = true;
    $CFG_NUMOFPAGE = 20;

    $CFG_MAILBOX[’inbox’] = ".";
    $CFG_MAILBOX[’outbox’] = ".Outbox";
    $CFG_MAILBOX[’draft’] = ".Draft";
    $CFG_MAILBOX[’trash’] = ".Trash";

    $CFG_VPOPMAIL_PATH = "/home/vpopmail"; 改为你的vpopmail安装目录 
    // $CFG_VPOPMAIL_PATH = "/home2/vpopmail";

    $CFG_SYSADMIN_NAME = "Admin";
    $CFG_SYSADMIN_PASSWD= ’$GvmONIcoSwBB.mEoP3KJ5Zda7ioV0’;

    $CFG_SYSADMIN_PASSWD_FILE = $CFG_VPOPMAIL_PATH . "/etc/syspasswd.dat";
    $CFG_TIMEOUT = 600;

    $CFG_IGENUS_ADM = "iGENUS邮件系统管理";

    $CFG_TEMPLATE_PATH = "template/";
    }
    ?>

    #保存退出

    touch /etc/syspasswd.dat

    chown -R vpopmail.vchkpw /var/www/html
    chmod -R 755 /var/www/html

    #登录设置页面
    http;//domain.com/admin/sys/

    用户:Admin密码Admin来登录.注意A要大写..这个管理帐号密码登录后能改的

    登录后,首先点"更新数据库"你就会看见你的域名啦.然后点"编辑"把"登录权限 该域管理员(Postmaster)有权登录进行用户管理"这一项打勾,确认后,就能用

    http;//domain.com/admin/

    来登录管理了。

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

    • courier-imap

    Courier-IMAP支持IMAP/SIMAP访问

    #安装:

    cd /home/pkg
    tar -xjf courier-imap-2.2.2.20040207.tar.bz2
    cd courier-imap-2.2.2.20040207

    # 作为vpopmail用户进行安装
    chown -R vpopmail:vchkpw ../courier-imap-2.2.2.20040207
    su vpopmail
    ./configure --with-redhat
    # 注:Redhat用户需要使用"--with-redhat"选项

    make
    exit
    make install-strip
    make install-configure

    cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imap
    chmod 755 /etc/rc.d/init.d/courier-imap
    chkconfig --add courier-imap

    #设置:

    # 修改文件/usr/lib/courier-imap/etc/authdaemonrc

    authmodulelist="authvchkpw"

    # 修改文件/usr/lib/courier-imap/etc/imapd

    IMAPDSTART=YES

    # 修改文件/usr/lib/courier-imap/etc/imapd-ssl

    IMAPDSSLSTART=YES

    #启动:

    /etc/rc.d/init.d/courier-imap start


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

    • autorespond

    Autorespond是个自动回复工具,能非常好的和qmailadmin配合使用

    #安装:

    cd /home/pkg
    tar -xvzf autorespond-2.0.5.tar.gz
    cd autorespond-2.0.5
    make
    make install

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

    • ezmlm

    exmlm是个快速,强大的邮件列表程式,能通过qmailadmin对其进行设置

    #安装:

    cd /home/pkg
    tar -xvzf ezmlm-0.53.tar.gz
    tar -xvzf ezmlm-idx-0.42.tar.gz
    cp -rf ezmlm-idx-0.42/* ezmlm-0.53/
    cd ezmlm-0.53
    patch < idx.patch
    chmod u+x makelang

    make
    make man
    make ch_GB #汉字GB2312支持

    make setup

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

    • qmailadmin

    qmailadmin除了不能添加删除虚拟域外,几乎能完成所有的虚拟域管理

    #安装:

    cd /home/pkg
    tar -xvzf qmailadmin-1.2.3.tar.gz
    cd qmailadmin-1.2.3

    ./configure --enable-htmldir=/var/www/html --enable-cgibindir=/var/www/cgi-bin --enable-vpopuser=vpopmail --enable-autoresponder-bin=/usr/bin --disable-ezmlm-mysql --enable-maxusersperpage=20 --enable-maxaliasesperpage=20 --enable-modify-quota

    make
    make install-strip
    cd /usr/local/share/qmailadmin/lang
    mv en en.bak
    cp zh-cn en

    安装选项参考:

    qmailadmin 1.2.3
    Current settings
    ---------------------------------------
    cgi-bin dir = /var/www/cgi-bin
    html dir = /var/www/html
    image dir = /var/www/html/images/qmailadmin
    image URL = /images/qmailadmin
    template dir = /usr/local/share/qmailadmin
    qmail dir = /var/qmail
    vpopmail dir = /home/vpopmail
    autorespond dir = /usr/bin
    ezmlm dir = /var/qmail/bin/ezmlm
    ezmlm idx = yes
    mysql for ezmlm = yes
    help = no
    modify quota = yes
    domain autofill = no
    modify spam check = no

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

    • vqadmin

    vqadmin是个基于web 的控制通道. 他允许系统管理员能执行root用户才能进行的操作.

    cd /home/pkg
    tar -zxf vqadmin-2.3.6.tar.gz
    cd vqadmin-2.3.6

    vi db_owner.c

    static const char *host="localhost";
    static const char *user="vpopmail";
    static const char *passwd="123456"; /* NULL for no password */
    static const char *db="vpopmail";

    ./configure
    make
    make install

    #目前我们需要将下面几行添加到httpd.conf文件中:

    vi /etc/httpd/conf/httpd.conf


    deny from all
    Options ExecCGI
    AllowOverride AuthConfig
    Order deny,allow

    #保存文件并退出.

    cd /var/www/cgi-bin/vqadmin

    chown nobody .htaccess
    chmod 600 .htaccess

    # 创建一个管理帐号及密码
    htpasswd -bc /etc/httpd/conf/vqadmin.passwd admin(帐号) adminpass(密码)
    chown nobody.nobody /etc/httpd/conf/vqadmin.passwd

    chmod 644 /etc/httpd/conf/vqadmin.passwd

    chown -R vpopmail.vchkpw /var/www/cgi-bin

    #编辑.htaccess

    vi .htaccess

    AuthType Basic
    AuthUserFile /etc/httpd/conf/vqadmin.passwd
    AuthName vQadmin
    require valid-user
    satisfy any

    service httpd restart
    在你的浏览器上测试一下安装结果:

    http://www.domain.com/cgi-bin/vqadmin/vqadmin.cgi

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

    • SpamAssassin

    安装 SpamAssassin
    Spam是个让人讨厌的字眼. 大部分的人都不喜欢他. 如果你想保护自己免受spam, 你就需要安装SpamAssassin.

    安装SpamAssassin 要用到Time-HiRes、Digest-SHA1、HTML-Parser、perl-DB_File和HTML-Tagset. 如果你没有安装的话,必须首先安装他,此文件均在RHAS3安装光盘第二和第三张中。对应的软件包为:

    perl-Time-HiRes-1.38-3.i386.rpm
    perl-Digest-SHA1-2.01-15.1.i386.rpm
    perl-HTML-Parser-3.26-17.i386.rpm
    perl-HTML-Tagset-3.03-28.noarch.rpm
    perl-DB_File-1.804-88.i386.rpm

    # 安装SpamAssassin

    groupadd spamd
    useradd -g spamd -s /bin/false spamd

    cd /home/pkg
    tar -xzvf Mail-SpamAssassin-3.0.1.tar.gz
    cd Mail-SpamAssassin-3.0.1

    export LC_ALL=C
    perl Makefile.PL
    make
    make install

    #我们想要SpamAssassin 随系统自动启动,安装目录中提供了一个起动脚本

    cp spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
    vi /etc/rc.d/init.d/spamd

    SPAMDOPTIONS="-d -c -u spamd -H /home/spamd -m5"

    #修改其中一行为上所示。

    chmod 755 /etc/rc.d/init.d/spamd
    chkconfig --add spamd

    #spamassassin的过滤模板在/etc/mail/spamassassin/local.cf,修改为:

    vi /etc/mail/spamassassin/local.cf

    allow_user_rules 1
    required_hits 4.5
    trusted_networks 111.222.333.444        ///这是你的代理服务器地址使spamassassin不认为这个地址发送的信件是垃圾邮件
    ite_header Subject *****这封邮件被怀疑是垃圾邮件*****    ///这会在你每一封认为是垃圾邮件的标题前部加上
    skip_rbl_checks 1
    ok_locales en zh
    score SUBJ_FULL_OF_8BITS 0.0
    score BASE64_ENC_TEXT 0.0
    score BAYES_99 0.1
    score BAYES_90 0.1
    score SUBJ_ILLEGAL_CHARS 0.1
    score FROM_ILLEGAL_CHARS 0.5
    score MIME_BASE64_TEXT 0.5  

    chmod 755 /etc/rc.d/init.d/spamd
    chkconfig --add spamd
    service spamd start

    #运行ntsysv,将spamd设定的为开机运行.

    # 进行一个spam和non-spam的测试

    spamassassin -t < sample-spam.txt > spamtest.txt
    less spamtest.txt
    spamassassin -t < sample-nonspam.txt > nospamtest.txt
    less nospamtest.txt
    #spamtest.txt文件在主题一段中将包含"*****SPAM*****" 这一行, 而nospamtest.txt文件中则没有.

    #建立SpamAssassin的学习系统
    sa-learn --rebuild -D -p user_prefs

    sa-learn --dump all 能查看自学习的数据信息

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

    • Clamav

    #添加所需的组和用户

    groupadd clamav
    useradd -g clamav -s /bin/false clamav

    #安装软件

    cd /home/pkg
    tar -xzvf clamav-0.80.tar.gz
    cd clamav-0.80
    ./configure
    make check
    make install

    #测试Clamav
    clamscan --recursive --log=/tmp/clamscan.log ./ //扫描当前目录,测试clamscn是否运行
    cat /tmp/clamscan.log

    #更改/usr/local/etc/freshclam.conf文件,去掉下面选项前面的#:
    vi /usr/local/etc/freshclam.conf

    #Example 前面加上#
    UpdateLogFile /var/log/freshclam.log 去掉前面的#
    LogSyslog 去掉前面的#

    更改/usr/local/etc/clamd.conf文件,去掉下面选项前面的#:
    vi /usr/local/etc/clamd.conf

    #Example 前面加上#
    LogFile /var/log/clamav/clamd.log 去掉前面的#
    LogFileMaxSize 2M 去掉前面的#
    LogTime 去掉前面的#
    PidFile /var/run/clamd.pid 去掉前面的#
    DataDirectory /var/lib/clamav 去掉前面的#,并且修改路径为/usr/local/share/clamav
    LogSyslog 去掉前面的#
    ScanMail 去掉前面的#

    touch /var/log/freshclam.log
    chmod 644 /var/log/freshclam.log
    chown clamav:clamav /var/log/freshclam.log

    #升级clamscan病毒库
    freshclam --verbose

    #把freshclam加入crontab 定时更新病毒库,自动扫描/home目录

    crontab -e

    0 1 * * * freshclam --quiet -l /var/log/freshclam.log
    0 6 * * * /usr/local/bin/clamscan --recursive --infected --exclude /usr/local/share/clamav/viruses.db --exclude /usr/local/share/clamav/viruses.db2 --log=/var/log/clamscan.log /home

    #创建freshclam日志记录文件

    mkdir -p /var/log/clamav
    touch /var/log/clamav/clamd.log
    chown clamav.clamav -R /var/log/clamav/
    chmod 644 -R /var/log/clamav/

    #创建clamav启动脚本
    vi /etc/rc.d/init.d/clamav

    #!/bin/sh
    #
    # Startup / shutdown script for Clam Antivirus

    case "" in
    start)
    /usr/local/sbin/clamd && echo -n ’Clamd started’
    /usr/local/bin/freshclam -d -c 2 -l /var/log/freshclam.log
    echo -n ’ freshclam started’
    ;;

    stop)
    /usr/bin/killall clamd > /dev/null 2>&1 && echo -n ’Clamd stoped’
    /usr/bin/killall freshclam > /dev/null 2>&1 && echo -n ’ freshclam Stoped’
    ;;

    *)
    echo ""
    echo "Usage: `basename ` { start | stop }"
    echo ""
    exit 64
    ;;
    esac

    #使其能够执行
    chmod 755 /etc/rc.d/init.d/clamav

    #随开机起动
    echo /etc/rc.d/init.d/clamav start >/etc/rc.d/rc.local

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

    • MailDrop and TNEF reader

    TNEF是个从"application/ms-tnef". 类型中找出MIME附件的程式.这仅仅是微软系统中的一种附件.

    TNEF程式允许将封装成TNEF的附件提取出来. 安装TNEF并不是必须的, 但我强烈推荐安装他!

    # 安装 maildrop
    cd /home/pkg
    tar -xjvf maildrop-1.7.0.tar.bz2
    cd maildrop-1.7.0
    ./configure
    make
    make install-strip
    make install-man

    # 安装 the tnef
    cd /home/pkg
    tar -xzvf tnef-1.2.3.1.tar.gz
    cd tnef-1.2.3.1
    ./configure
    make
    make install

    #使用Maildrop调用SpamAssassin

    如果你的机器够劲够猛能加上这段但如果机器不好又不想将垃圾邮件转移到其他的地方还放在收件箱里那就不要执行这一段

    #在/home/vpopmail/domains/localhost.com(你创建的域)/ 建立mailfilter文件
    touch mailfilter
    chown vpopmail:vchkpw mailfilter
    chmod 700 mailfilter

    vi mailfilter

    #mailfilter内容如下:

    VPOP="| /home/vpopmail/bin/vdelivermail ’’ bounce-no-mailbox"
    VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`

    if ( $SIZE < 262144 )
    {
    exception {
    xfilter "/usr/bin/spamc -f -u $EXT@$HOST"
    }
    }

    if (/^X-Spam-Flag: YES/)
    {
    # try filtering it using user-defined rules
    exception {
    include $VHOME/Maildir/.mailfilter
    }
    # then try delivering it to a Spam folder
    exception {
    # to "$VPOP"
    to "$VHOME/Maildir/.new/"  ///将检测到的垃圾邮件放到指定的目录中 
    }
    # ah well, I guess they’ll just have to live with disappointment
    exception {
    to "$VPOP"
    }
    }
    else
    {
    exception {
    include $VHOME/Maildir/.mailfilter
    }
    exception {
    to "$VPOP"
    }
    }

    #修改.qmail-default内容如下:

    | /usr/local/bin/maildrop ./mailfilter

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

    • qmail-scanner&qms-analog

    为了能够扫描邮件服务器中进出的邮件, 我们需要安装 qmail-scanner. 如果你之前没有安装perl-suidperl,我们还需要安装他

    cd /home/pkg
    rpm -Uvh perl-suidperl-5.8.0-88.3.i386.rpm

    #解开qmail-scanner...

    tar zxvf qmail-scanner-1.22.tgz

    #解压qms-analog...

    tar zxvf qms-analog-0.3.4.tar.gz

    cd qms-analog-0.3.4

    make all

    #下一步,我们拷贝所需要的qms-analog文件到qmail-scanner安装目录

    cp qmail-scanner-1.22-st-qms-20040530.patch /home/pkg/qmail-scanner-1.22/

    cp qms-config-script /home/pkg/qmail-scanner-1.22/

    #目前,让我们打上qms-analog补丁

    cd /home/pkg/qmail-scanner-1.22

    chmod 755 qms-config-script

    patch -p1 < qmail-scanner-1.22-st-qms-20040530.patch

    #继续安装qmail-scanner,添加所需的组和用户

    groupadd qscand
    useradd -g qscand -s /bin/false qscand

    #我们通过qms-config-script脚本来安装qmail-scanner,编辑qms-config-script

    vi qms-config-script

    #修改下面红色部份以达到我们的需求:

    #!/bin/sh

    if [ "" != "install" ]; then
    INSTALL=
    else
    INSTALL="--install"
    fi

    ./configure --domain domain.com
    --qmail-queue-binary /var/qmail/bin/qmail-queue
    --admin postmaster
    --local-domains "domain1.com,domain2.com,......"
    --add-dscr-hdrs yes
    --dscr-hdrs-text "X-Antivirus-MYDOMAIN"
    --ignore-eol-check yes
    --sa-quarantine 0
    --sa-delete 0
    --sa-reject no
    --sa-subject ":SPAM:"
    --sa-alt yes
    --sa-debug no
    --notify admin
    --redundant yes
    --lang en_GB
    --debug no
    --unzip yes
    --scanners clamscan,verbose_spamassassin
    "$INSTALL"

    #注意: "--admin" 和 "--domain" 参数组成了帐号"user"@"domain name". 警告消息将通过qmail-scanner 发往这个邮件帐号, 所以必须确认这是个管理级别的帐号. 另外,所有域的警告信息都会发给这个帐号, 所以一定要小心.

    #保存并退出。

    #目前我们测试qmail-scanner安装

    ./qms-config-script

    #在第一步时, 按y 允许qmail-scanner提前configure. 第二步时, 按y,建立 qmail-queue-scanner.pl 文件.

    #测试如果没有错误 ,就能进行下一步安装

    ./qms-config-script install

    #看看/var/qmail/bin/qmail-scanner-queue.pl是否存在

    chown qscand:qscand /var/qmail/bin/qmail-scanner-queue.pl
    chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl

    #然后用一个普通用户登陆,执行/var/qmail/bin/qmail-scanner-queue.pl -z

    setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -z //如果没有Can’t do setuid出现,安装OK
    setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -r //查看qmailscan当前包含的特征
    setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -g //保存qmailscan定义特征的修改,使他生效。

    chown qscand:qscand /var/qmail/bin/qmail-scanner-queue.pl
    chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl

    chown -R qscand:qscand /var/spool/qmailscan

    vi /var/qmail/supervise/qmail-smtpd/run

    #在你的qmail启动脚本加入红色部份
    #!/bin/sh
    QMAILDUID=`id -u vpopmail`
    NOFILESGID=`id -g vpopmail`
    PATH=$PATH:/usr/local/bin:/var/qmail/bin
    QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" export QMAILQUEUE

    MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
    exec /usr/local/bin/softlimit -m 40000000
    /usr/local/bin/tcpserver -v -H -R -l 0
    -x /home/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD"
    -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp
    /var/qmail/bin/qmail-smtpd
    /home/vpopmail/bin/vchkpw /bin/true 2>&1

    #后重新启动smtp服务

    qmailctl stop
    qmailctl start
    qmailctl stat

    #这里有测试程式

    cd /home/pkg/qmail-scanner-1.22/contrib/

    chmod 755 test_installation.sh

    ./test_installation.sh -doit

    #这个脚本会设定的管理员邮件地址发送3个邮件,第一个邮件是一般的正常邮件,第二个邮件中会包含eicar.com测试病毒,第三个邮件同样包含eicar.com测试病毒,不过所附带的文件名不是eicar.com。
    #如果qmail-scanner安装正确,管理员就应该能收到关于后面的两个邮件的警告邮件。
    #如果系统出错,能查看/var/spool/qmailscan/qmail-queue.log日志文件。
    #qmail-scanner的特征过滤在/var/spool/qmailscan/quarantine-attachments.txt

    #主要的排错监测日志

    /var/spool/qmailscan/quarantine.log
    /var/spool/qmailscan/qmail-queue.log
    /var/spool/qmailscan/qms-events.log
    /var/log/clamav/clamd.log
    /var/log/maillog

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

    • QmailAnalog & qlogtools

    Qmailanalog针对qmail的日志进行一些最基本的分析,并将结果发送到你指定的位置。在我的方案中,设置qmailanalog每天晚上运行,并将结果发送给管理员。 在使用qmailanalog时,我们还将会用到qlogtools软件包。

    qlogtools提供一系列分析qmail日志的工具,这些工具将文件中诲涩难懂的日志转换成便於我们阅读和能够理解的报告。当安装完成Qmailstats和Qlogtools后,我将会创建一个脚本让他每天晚上运行,并将报告发送到管理

    员邮箱。这个脚本也可用到我们先前安装的qms-analog,qms-analog将会提供qmail-scanner运行状态报告。

    #先安装qmailanalog

    cd /home/pkg/
    tar zxvf qmailanalog-0.70.tar.gz
    cd qmailanalog-0.70

    patch < /home/pkg/qmailanalog-0.70.errno.patch
    make && make setup check

    #安装qlogtools

    cd /home/pkg/
    tar zxvf qlogtools-3.1.tar.gz
    cd qlogtools-3.1
    patch < /home/pkg/qlogtools_errno.patch

    make

    ./installer

    #目前我们要创建一个脚本,并将他添加到cron,让其每天晚上运行并产生报告。

    #下面是个可靠的脚本,他将会收集qmailanalog输出的信息并产生报告。

    #红色部份改成你的域名
    vi /var/qmail/bin/qmailstats

    #!/bin/sh
    # Qmailanalog invocation script
    PATH=/usr/local/qmailanalog/bin:/var/qmail/bin:/bin:/usr/bin:/usr/local/bin
    QMAILSTATS="/tmp/q.$$"
    EMAILMSG="/tmp/qms.$$"
    umask 077
    cat /var/log/qmail/* /var/log/qmail/pop3d/* /var/log/qmail/pop3ds/* /var/log/qmail/smtpd/* | tai64n2tai | awk ’’ | matchup > $QMAILSTATS 5>/dev/null

    DATE=`date +’%D’`

    echo "To: postmaster@yourdomain.com" > $EMAILMSG
    echo "From: postmaster@yourdomain.com" >> $EMAILMSG
    echo "Subject: Nightly Qmail Stats Report for $DATE" >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
    zoverall < $QMAILSTATS >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
    zfailures < $QMAILSTATS >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
    zdeferrals < $QMAILSTATS >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "" >> $EMAILMSG
    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~ L a s t 2 4 H o u r s ~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
    cat /var/spool/qmailscan/qms-events.log | qms-analog 24 >> $EMAILMSG
    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A l l R e c o r d s ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
    cat /var/spool/qmailscan/qms-events.log | qms-analog 0 >> $EMAILMSG
    cat $EMAILMSG | qmail-inject

    rm -f $QMAILSTATS
    rm -f $EMAILMSG

    #设置此脚本可执行

    chmod 750 /var/qmail/bin/qmailstats

    #目前,让我们运行脚本

    /var/qmail/bin/qmailstats

    #确认你的管理员邮箱,你将会收到一份非常详尽的报告。

    #如果测试运行正常,那就加入cron让其每天早上3点运行。

    crontab -e
    0 3 * * * /var/qmail/bin/qmailstats 1>/dev/null 2>/dev/null

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

    • isoqlog

    isoqlog是个qmail日志分析工具,他是用perl写的,能分析和统计qmail的运行日志,并生成漂亮的HTML格式的报表,如果服务器上已安装WEB服务,管理员就能通过浏览器来查看这些报表。相对于

    qmailanalog,isoqlog分析的项目稍微少一些。

    isoqlog能生成多个邮件域的报表;对于每个邮件域,isoqlog能统计出每天、每月、每年的邮件流量及字节数,还生成相应的统计柱状图;对于每天的报表,isoqlog能根据邮件投递的数量及字节数的多少来对邮

    件用户进行排列。

    #安装isoqlog

    cd /home/pkg
    tar zxvf isoqlog-2.1.1.tar.gz
    cd isoqlog-2.1.1
    ./configure
    make
    make install
    make clean

    cd isoqlog

    mkdir /var/www/html/isoqlog
    cp -pr ./htmltemp/images ./htmltemp/library /var/www/html/isoqlog

    #设置isoqlog
    cd /usr/local/etc
    mv isoqlog.conf-dist isoqlog.conf

    vi isoqlog.conf

    #将下面红色部份改成你的安装目录和主机名称。

    #isoqlog Configuration file

    logtype = "qmail-multilog" #log type qmai-multilog, qmail-syslog, sendmail, postfix
    logstore = "/var/log/qmail" #
    domainsfile = "/usr/local/etc/isoqlog.domains" #
    outputdir = "/var/www/html/isoqlog" #html outpur directory
    htmldir = "/usr/local/share/isoqlog/htmltemp"
    langfile = "/usr/local/share/isoqlog/lang/english"
    hostname = "mail.domain.com"

    maxsender = 100
    maxreceiver = 100
    maxtotal = 100

    maxbyte = 100

    #保存并退出。

    #下一步是告诉isoqlog哪些虚拟域需要产生统计报表,我希望我的mail服务器能够报告每个域的状态,所以只需要简单的创建了个链接即可:

    ln -s /var/qmail/control/rcpthosts isoqlog.domains

    #目前,isoqlog应该能够正常运行了,运行如下命令测试一下效果:

    /usr/local/bin/isoqlog

    #通过如下页面查看输出结果:

    http://domain.com/isoqlog

    #你能点击各个虚拟域名称显示其报表。

    #我们希望isoqlog能够即时提供报表,将如下内容加入crontab

    crontab -e
    58 * * * * /usr/local/bin/isoqlog 1>/dev/null 2>/dev/null

    #每个小时的第58分钟运行一次

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


    • MRTG

    安装 MRTG
    多路由器通信监视器(MRTG)是在网络链路上监视通信负载的一件工具。 MRTG 产生包含图表的HTML网页,他能将系统中的通信情况实时的显示在页面上。 我们能在我们的系统上使用他来监视电子邮件和spam情况。

    # 安装 zlib (压缩的图像文件包)
    cd /home/pkg
    tar -xzf zlib-1.1.4.tar.gz
    mv zlib-1.1.4/ zlib
    cd zlib
    ./configure
    make
    cd ..

    # 安装 libpng (PNG图片格式包)
    tar -xzf libpng-1.2.7.tar.gz
    mv libpng-1.2.7/ libpng
    cd libpng
    make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib
    rm *.so.* *.so
    cd ..

    # 安装 gd (制图软件包)
    tar -xzf gd-1.8.3.tar.gz
    mv gd-1.8.3/ gd
    cd gd
    make INCLUDEDIRS="-I. -I../zlib -I../libpng" LIBDIRS="-L../zlib -L. -L../libpng" LIBS="-lgd -lpng -lz -lm"
    make install
    cd ..

    # 编译 MRTG
    tar -xzf mrtg-2.10.15.tar.gz
    cd mrtg-2.10.15/
    ./configure --prefix=/usr/local/mrtg-2 ?-with-gd=/home/pkg/gd/ --with-z=/home/pkg/zlib/ --with-png=/home/pkg/libpng/
    make
    make install
    #所有MRTG需要的软件包都安装在了 /usr/local/mrtg-2 目录下. 你目前能安全的删除上面编译的源码. 不过你最佳留着,以便你编译下一个版本的MRTG时所需.

    #通过安装inter7的qmailmrtg ,我们将在我们的系统上安装MRTG

    # 编译 qmailmrtg
    cd /home/pkg
    tar -xzf qmailmrtg7-4.0.tar.gz
    cd qmailmrtg7-4.0
    make
    make install
    mkdir /var/www/html/qmailmrtg
    cp qmail.mrtg.cfg index.html /var/www/html/qmailmrtg
    cd /var/www/html/qmailmrtg/
    #修改 qmail.mrtg.cfg 和 index.html文件, 将所有出现FQDN 的地方都改成你的完整域名(例如: test.com). 如果你的HTTP MRTG目录并不是默认的 (例如: 你并没有把 /var/www/html/作为你的web根目录), 则必须在/var

    /www/html/qmailmrtg/qmail.mrtg.cfg 文件中修改WorkDir变量为正确的路径. 如果你不必记录某项服务, 你能在所不必记录的服务每一行的前面加一个# 来注释掉他,并删除index.html中对应的服务项目。

    #你能修改 pop3和smtp所在的行, 设置MaxBytes参数来重写tcpserver中-cX所在行.

    #你还能修改concurrency来重写concurrencyremote或concurrencylocal 的值. 如果这些文件在/var/qmail/control 目录下并不存在,则qmail默认的值为20.

    #下面是我们的最后一步,将下面一段添加到crontab中, 以使我们能每五分钟升级一次MRTG数据. 运行如下命令:

    crontab -e
    #添加下面一段 (使MRTG每五分钟运行一次) 然后退出crontab:

    */5 * * * * /usr/local/mrtg-2/bin/mrtg /var/www/html/qmailmrtg/qmail.mrtg.cfg 2>&1 > /dev/null
    #目前运行MRTG三次来安装他. 你将会收到3次警告消息. 之后,你将不会再收到警告了.

    env LANG=C /usr/local/mrtg-2/bin/mrtg /var/www/html/qmailmrtg/qmail.mrtg.cfg
    #目前应该安装好了. 为了能显示些信息,我们等待15分钟的日志记录. 你能通过下面的地址来检查图像监视情况:

    http://your.host.name/qmailmrtg/
    查看他们的图像监视情况!

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

    • 测试


    测试igenus

    http://domain.com/

    测试qmailadmin

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

    测试vQadmin

    http://domain.com/cgi-bin/vqadmin/vqadmin.cgi

    测试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.

    测试IMAP
    # telnet localhost 143
    Trying 127.0.0.1...
    Connected to localhost.localdomain(127.0.0.1).
    Escape character is ’^]’.
    * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2004 Double Precision,

    Inc. See COPYING for distribution information.
    a001 login user@test.com [password]
    a001 OK LOGIN Ok.
    a001 logout
    * BYE Courier-IMAP server shutting down
    a001 OK LOGOUT completed
    Connection closed by foreign host.

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

    • 邮件系统维护:

    邮件系统相关日志

    /var/log/maillog
    /var/log/qmail/current
    /var/log/qmail/pop3d/current
    /var/log/qmail/pop3ds/current
    /var/log/qmail/smtpd/current
    /var/spool/qmailscan/qmail-queue.log
    /var/spool/qmailscan/qms-events.log
    /var/spool/qmailscan/quarantine.log

    设置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: domain datafile"
    exit 1
    fi
    domain=
    datafile=
    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//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

    WebMail上传附件大小限制 (解决上传文件不能大于512KB的问题)
    更改/etc/httpd/conf.d/php.conf:

    LimitRequestBody 524288中的524288正好跟512KB相等,将其更改为10485760,设置允许最大上传的附件为10MB。

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


  • 以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。

      “华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为25大IDC服务商之一。

    华夏名网网址导航: 虚拟主机 双线主机 主机 域名注册 cn域名 域名 服务器租用 酷睿服务器 vps vps主机

  • (阅读次数:1004)
  • 上一篇: debian 下的 apache2 + ssl 配置方法    下一篇: 商业周刊:IBM 开源行动给 Windows 迎头棒击
  • [收藏] [推荐] [评论] [打印本页] [返回上一页][关闭窗口]
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。