快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

linux-qmail 病毒/垃圾邮件处理

自从安装qmail邮件系统后,使用上一直没有问题,可是后来部分帐户每天都会出现大量的垃圾邮件(所说的广告),病毒邮件(附件是木马等病毒),大量的垃圾邮件使邮件队列出现诸塞现象。后来安装了clamav杀毒软件,定时每天临晨对邮件队列进行一次杀毒,对病毒邮件和垃圾邮件全部转移到我自己定义的一个文件夹中。经过几天的观察效果一般。最后还是决定重新制作一套时时杀毒并且具有防火墙功能的邮件杀毒系统。经过一边研究(google很多次,虽然网上有很多的案例,各有千秋。不过大部分都是相互转载,也就是说大部分雷同。我测试没有一套可以生效,并且很多都是比较老的。最后查看官方文档。总算制作完成。写出来对有需要的人提供帮助。)一边琢磨。废话不说。开始。。。

    实现的前提条件,你有一套收发都没有问题的qmail系统,我以前文档有这套qmail系统的安装配置过程。
    实现的功能:对进入邮件队列的邮件第一步杀毒,第二步打分,审核是否是垃圾邮件。第三步通过。

    实现以上功能需要的软件如下:
    全部可以从官方下载
    clamav-0.95.2.tar.gz           杀毒软件最新版,
    qmail-scanner-2.06.tgz        邮件队列扫描软件
    q-s-2.06st-20090419.patch.gz      邮件队列扫描软件的补丁文件
    perl-suidperl-5.8.0-55.1.i586.rpm
    http://dag.wieers.com/rpm/rpmforge.php
    spamassassin-3.0.6-1.el4.rf.i386.rpm 过滤垃圾邮件的防火墙
    DB_File-1.820.tar.gz
    Mail-SPF-v2.006.tar.gz
    MIME-Base64-3.08.tar.gz
    Time-HiRes-1.9719.tar.gz
    Sys-Syslog-0.27.tar.gz

    安装 perl-Time-HiRes-1.38-3.i386.rpm
    rpm -ivh perl-Time-HiRes-1.38-3.i386.rpm


    安装杀毒软件
    创建用户
    useradd -s /bin/false clamav
    安装:
    ./configure --prefix=/usr/local/clamav
    make
    make install

    配置如下:
    编辑:clamd.conf  杀毒配置文件
    在 Example 前面加 #
    LogFile /var/log/clamd.log
    LogVerbose yes
    TemporaryDirectory /var/tmp
    DatabaseDirectory /usr/local/clamav/share/clamav
    LocalSocket /tmp/clamd
    FixStaleSocket true
    User clamav
    ScanMail yes
    ScanHTML yes
    ScanArchive yes

    配置:freshclam.conf   升级配置文件
    在 Example 前面加 #
    DatabaseDirectory /usr/local/clamav/share/clamav
    UpdateLogFile /var/log/freshclam.log
    LogVerbose yes
    PidFile /var/run/clamav/freshclam.pid     注意clamav目录全县修改
    DatabaseOwner clamav
    DatabaseMirror database.clamav.net
    DatabaseMirror db.cn.clamav.net
    DatabaseMirror database.clamav.net
    DatabaseMirror clamav.irontec.com
    DatabaseMirror clamav.inet6.fr
    DatabaseMirror clamav.netopia.pt
    DatabaseMirror clamav.sonic.
    Checks 4
    完成配置

    执行 /usr/local/clamav/bin/freshclam -d -c 6 -l /var/log/freshclam.log 6
    启动杀毒软件每天更新6次

    我是安装到/usr/local/clamav 下,然后将clamscan杀毒程序软连接到/usr/local/bin下,以配合扫描程序可以直接找到调用。

    安装
    spamassassin-3.0.6-1.el4.rf.i386.rpm
    用它来过滤邮件

    先安装如下
    DB_File-1.820.tar.gz
    Mail-SPF-v2.006.tar.gz
    MIME-Base64-3.08.tar.gz
    Time-HiRes-1.9719.tar.gz
    Sys-Syslog-0.27.tar.gz
    全部使用如下:
    perl Makefile
    make
    make test
    make install

    rpm安装spamassassin
    rpm -ivh spamassassin-3.0.6-1.el4.rf.i386.rpm就完成。

 配置
    #修改起动脚本使spamassassin支持vpopmail
    #修改如下一行:
    vi /etc/init.d/spamassassin
    SPAMDOPTIONS="-d -c -m5 -H -x -u vpopmail -v"

    vi /etc/sysconfig/spamassassin
    SPAMDOPTIONS="-d -c -m5 -H -x -u vpopmail -v"
    #spamassassin的过滤模板在/etc/mail/spamassassin/local.cf,修改为:
    vi /etc/mail/spamassassin/local.cf
    # These values can be overridden by editing ~/.spamassassin/user_prefs.cf
    # (see spamassassin(1) for details)
    # These should be safe assumptions and allow for simple visual sifting
    # without risking lost emails.
    required_score 7.0    以7.0为分界限,评分超过7.0的就会在邮件标题开头加入 ******SPAM*****字样,已提示为垃圾邮件,不过也有被误认为的时候。所以建议不要做对垃圾邮件删除。
    rewrite_header Subject ********SPAM********
    report_safe 1
    use_bayes 1
    auto_learn 1
    skip_rbl_checks 0
    rewrite_subject 1
    report_header 1
    use_terse_report 1
    defang_mime 1
    dns_available yes
    dcc_add_header 1
    #use_pyzor 1 (Only if you have installed pyzor)
    #use_razor2 (Only if you have installed razor2)
    use_dcc 1

    #ok_languages zh en
    #ok_locales en ko
    ok_languages all
    ok_locales all
    score HEAD_ILLEGAL_CHARS 0
    score SUBJ_ILLEGAL_CHARS 0
    score DATE_IN_PAST_03_06 0
    score UPPERCASE_25_50 0
    score UPPERCASE_50_75 0
    score UPPERCASE_75_100 0
    score X_MSMAIL_PRIORITY_HIGH 0
    score X_PRIORITY_HIGH 0
    score TO_TXT 100
    score RATWARE_HASH_2 100
    score RATWARE_HASH_2_V2 100
    score BAYES_99 0.1
    score BAYES_80 0.1
    score BAYES_60 0.1
    score FROM_ILLEGAL_CHARS 0.1
    score MIME_BASE64_TEXT 0.1
    score NO_RDNS_DOTCOM_HELO 0.1
    score CHINA_HEADER 0.1
    score NO_REAL_NAME 0.2
    score HTML_MESSAGE 0.2
    score MIME_HTML_ONLY 0.2
    score MIME_HTML_ONLY_MULTI 0.2
    score FORGED_MUA_OUTLOOK 0.2
    score FORGED_HOTMAIL_RCVD 0.2
    score FORGED_OUTLOOK_TAGS 0.2
    score MAILTO_TO_SPAM_ADDR 0.2

    header   RCVD_IN_CASA_CBLLESS eval:check_rbl('CBLLESS','cblless.anti-spam.org.cn.','127.0.8.5')
    describe RCVD_IN_CASA_CBLLESS Relay has be listed in CASA CBL-, http://anti-spam.org.cn/
    tflags   RCVD_IN_CASA_CBLLESS net
    score    RCVD_IN_CASA_CBLLESS 4.0
    配置完成。以上具体解释请看相关文档。

    #使用CCERT 中文垃圾邮件过滤规则集Chinese_rules.cf
    wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

    #启动SpamAssassin
    service spamassassin start

    #定期自动更新中文反垃圾邮件规则
    crontab –e
    0 0 1 * * (wget -N -P /usr/share/spamassassin http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf)

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

    安装邮件队列扫描程序:
    qmail-scanner-2.06.tgz
    q-s-2.06st-20090419.patch.gz

    首先安装
    rpm -ivh perl-suidperl-5.8.0-55.1.i586.rpm
    否则会出现
    Error was:
    Can't do setuid
    创建用户
    useradd –g qscand –s /bin/false qscand
    解压打补丁
    tar zxvf      qmail-scanner-2.06.tgz
    gunzip  q-s-2.06st-20090419.patch.gz
    patch -p0 < q-s-2.06st-20090419.patch 打补丁

    安装:
    ./configure --qmail-queue-binary /var/qmail/bin/qmail-queue --setuidgid-path /usr/local/bin/setuidgid --admin postmaster --domain domain.com.cn --notify sender,admin --local-domains domain.com.cn --lang en_GB --debug yes --unzip yes --scanners clamscan,fast_spamassassin --virus-to-delete yes --sa-forward [email protected]  --sa-reject yes  --sa-subject "*** SPAM *** "
    以上个别配置解释;
    --admin : 邮件帐户名,可以任意存在的
    --domain:邮件帐户的域名,
    以上会自动生成一个邮件帐户,可以用来接收被删除的垃圾邮件。
    --local-domains :你所有的邮件域名。
    --scanners :杀毒程序名,垃圾邮件过滤程序名。
    其他参数就不详细说了,./configure --help下有解释
    通过输入2个 Y ,如无问题,会出现 install 1

    开始安装
    ./configure --qmail-queue-binary /var/qmail/bin/qmail-queue --setuidgid-path /usr/local/bin/setuidgid --admin postmaster --domain domain.com.cn --notify sender,admin --local-domains domain.com.cn --lang en_GB --debug yes --unzip yes --scanners clamscan,fast_spamassassin --virus-to-delete yes --sa-forward [email protected]  --sa-reject yes  --sa-subject "*** SPAM *** "  install yes

    看看是否在/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
      
    如果没有Can't do setuid出现,完成
    然后修改vpopmail的配置文件,如下:
    vi tcp.smtp
    添加:
    127.0.0.1:allow,RELAYCLIENT=””,RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

    10.:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

    :allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

    重新生成tcp.smtp.cdb,tcp.smtp.tmp
    tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

    完成后
    重起qmail
    查看日志
    cat /var/log/clamd.log
    cat /var/log/freshclam.log
    cat /var/log/qmail/qmail-send/current
    以及
    /var/spool/qscan/ 中的日志(扫描邮件日志从这里可以看到)主要为
    以下这个文件
    qmail-queue.log
    经测试邮件查看,发现邮件扫描出现错误clamscan_options的选项无法识别。

   

继续修改
    vi /var/qmail/bin/qmail-scanner-queue.pl
    my $clamscan_options="-r --disable-summary --max-recursion=10 --max-space=100000";

    重新启动qmail

    发送一个病毒邮件测试
    查看tail -f  /var/spool/qscan/qmail-queue.log
    可以看到病毒邮件被扫描发现,而且转发并且删除。可以在quarantine.log 文件中发现有记录。

    发送一个垃圾邮件测试
    查看tail -f  /var/spool/qscan/qmail-queue.log
    可以看到邮件经过SA,评分。发现评分超过7.0,我接收到垃圾邮件发现标题开头加入了SPAM字样。而且查看邮件属性,可以发现邮件有经过处理的记录。。到此完成。。。。我这里上传相关部分软件。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论