# 安装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 -H" 修改其中一行为上所示。
chmod 755 /etc/rc.d/init.d/spamd
chkconfig --add spamd
spamassassin的过滤模板在/etc/mail/spamassassin/local.cf,修改为:
required_hits 5.0 rewrite_subject 1 subject_tag ********SPAM******** report_safe 1 defang_mime 0 rewrite_subject 0 report_header 1 use_terse_report 1 use_bayes 1 auto_learn 1 skip_rbl_checks 1 use_razor2 0 use_dcc 0 use_pyzor 0
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 HEAD_ILLEGAL_CHARS 0.5 score MIME_BASE64_TEXT 0.5 ok_locales en zh
chmod 755 /etc/rc.d/init.d/spamd chkconfig --add spamd service spamd start
# 进行一个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
安装软件 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/clamav.conf文件,去掉下面选项前面的#:
vi /usr/local/etc/clam.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 \去掉前面的#
升级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 clamav.clamav -R /var/log/clamav/
touch /var/log/freshclam.log chmod 644 /var/log/freshclam.log chown clamav:clamav /var/log/freshclam.log
创建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
--------------------------------------------------------------------------------
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 yes \ --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.23/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-atachments.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
--------------------------------------------------------------------------------
MailDrop and TNEF reader
TNEF是一个从"application/ms-tnef". 类型中找出MIME附件的程序.这仅仅是微软系统中的一种附件.
TNEF程序允许将封装成TNEF的附件提取出来. 安装TNEF并不是必须的, 但我强烈推荐安装它!
# 安装 maildrop cd /home/pkg tar -jzvf 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 nef-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
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/.Spam/" } # 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
--------------------------------------------------------------------------------
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 /usr/local/apache/htdocs/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。
|