如何将几个自定义的“坏”字添加到SpamAssassin中,这样,包含该字的电子邮件被标记为垃圾邮件?
UPDATE
其中一个关键是编辑文件/ etc / mail / spamassassin,并按照上面的描述添加坏字符filter
但是,在这种情况下,邮件只被标记为垃圾邮件,它仍然会进入我的收件箱…
我必须做什么,不接收包含坏话的电子邮件?
更新2
如果电子邮件被分类为垃圾邮件,我的SpamAssassin确实会改变主题,现在它工作的很好。 文件/etc/mail/spamassassin/local.cf看起来像这样:
ok_locales all skip_rbl_checks 0 required_score 5 report_safe 1 rewrite_header Subject ***SPAM*** use_pyzor 1 use_razor2 1 use_auto_whitelist 0 use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 blacklist_from *@kupiizaradi.cjb.net blacklist_from *@hallmark.com whitelist_from *@*hrgworldwide.com whitelist_from *@bluehost.com #blacklist_from *@greekajob.com header CONTAINS_VIG Subject =~ /viagra, Cialix Pills, sex, xxx, penis, pussy, greekajob, greekajobs, pera zdera/ body CONTAINS_PEN /viagra, sex, xxx, penis, puss, greekajob, greekajobs, perazdera/ score CONTAINS_VIG 1.5 score CONTAINS_PEN 1.5 describe CONTAINS_VIG Bad Word describe CONTAINS_PEN Bad Word
所以,现在我需要帮助如何:
文件/ etc / mail / mailfilter看起来像这样:
SHELL="/bin/sh" import EXT import HOST VHOME=`pwd` TIMESTAMP=`date "+%b %d %H:%M:%S"` #VERBOSE=9 logfile "/var/log/maildrop/maildrop.log" log "$TIMESTAMP - BEGIN maildrop processing for $EXT@$HOST ===" `test -r $VHOME/.mailfilter` if($RETURNCODE == 0) { log "including $VHOME/.mailfilter" exception { include $VHOME/.mailfilter } } # does maildirsize exist? `test -e $VHOME/Maildir/maildirsize` # if maildirsize doesn't exist if($RETURNCODE == 1) { # does vuserinfo exist? `test -x /home/vpopmail/bin/vuserinfo` # if vuserinfo exists if($RETURNCODE == 0) { # does the user exist? `/home/vpopmail/bin/vuserinfo $EXT@$HOST` if($RETURNCODE == 0) { # find out what the user's quota is $QUOTA=`/home/vpopmail/bin/vuserinfo -Q $EXT@$HOST` log "QUOTA = $QUOTA" # does maildirmake exists? `test -x /usr/bin/maildirmake` # if maildirmake exists if($RETURNCODE == 0) { # does Maildir exist? `test -d $VHOME/Maildir` # if Maildir exists if($RETURNCODE == 0) { # make the maildirsize file `/usr/bin/maildirmake -q $QUOTA $VHOME/Maildir` `test -s "$VHOME/Maildir/maildirsize"` # if maildirsize exists if($RETURNCODE == 0) { `/bin/chown vpopmail:vchkpw $VHOME/Maildir/maildirsize` `/bin/chmod 640 $VHOME/Maildir/maildirsize` # else } else { log "Problem making 'maildirsize' for $VHOME" } # end if maildirsize exists } else { log "Maildir does not exist for $VHOME" } # end if Maildir exists } else { log "maildirmake does not exist" # end if maildirmake exists } } else { log "user $EXT@HOST does not exist" # end if user exists } } else { log "vuserinfo does not exist" # end if vuserinfo exists } } # does maildirsize exist? `test -e $VHOME/Maildir/maildirsize` if($RETURNCODE == 0) { MAILDIRQUOTA=`/usr/bin/head -n1 $VHOME/Maildir/maildirsize` log "MAILDIRQUOTA = $MAILDIRQUOTA" } #-------------------------------------------------------- # Filter spam - scores >= SPAMLIMIT is not delivered # # If you DO NOT want to send mail that is over the spam limit # to spamassassin autolearn, comment: 'cc "|sa-learn -spam"' #-------------------------------------------------------- ########################################################################## # Below is where I found some of the main problem, ie apparently the # regex logic changed, do a diff against this one and the old one, # the old one was delimited with the '!' (bang) and grouped as a whole. # it failed the match always. By using standard regex grouping, I was able # to get the filter working. By grouping the score accordingly, it # breaks it into a number and precision, eg MATCH1 and MATCH2 ########################################################################## if(/^X-Spam-Status: Yes, score=([0-9]+)\.([0-9]+)/:h) { if($MATCH1 >= 5) { cc "|sa-learn --spam" } # if the user doesnt' have a Spam folder `test -d $VHOME/Maildir/.Spam` if($RETURNCODE == 1) { `test -x /usr/bin/maildirmake` if($RETURNCODE == 0) { `/usr/bin/maildirmake -f Spam $VHOME/Maildir` `test -x /usr/bin/subscribeIMAP.sh` if($RETURNCODE == 0) { `/usr/bin/subscribeIMAP.sh Spam $VHOME` } } } # make sure the deliverquota binary exists and is executable `test -x /usr/bin/deliverquota` if($RETURNCODE == 1) { exception { to "$VHOME/Maildir/.Spam" } } else { cc "|/usr/bin/deliverquota -w 90 $VHOME/Maildir/.Spam" if($RETURNCODE == 0) { log "=== END === $EXT@$HOST success (quota)" EXITCODE=0 exit } else { if($RETURNCODE == 77) { log "$TIMESTAMP - $EXT@$HOST bounced (quota)" to "|/var/qmail/bin/bouncesaying '$EXT@$HOST is over quota'" } else { log \ "$TIMESTAMP - $EXT@$HOST failure (unknown deliverquota error)" to "$VHOME/Maildir/.Spam" } } } } ########################################################################## # Same as above ########################################################################## if(/^X-Spam-Status: No, score=([\-]*[0-9]+)\.([0-9]+) /:h) { log " message is clean ($MATCH1.$MATCH2)" } #-------------------------------------------------------- # Include any user rules #-------------------------------------------------------- `test -r $VHOME/Maildir/.mailfilter` if($RETURNCODE == 0) { log " including $VHOME/Maildir/.mailfilter" exception { include $VHOME/Maildir/.mailfilter } } `test -x /usr/bin/deliverquota` if ($RETURNCODE == 1) { log "$TIMESTAMP - $EXT@$HOST WARNING: no deliverquota!" log "=== END === $EXT@$HOST success" exception { to "$VHOME/Maildir" } } else { exception { log "RETCODE = $RETURNCODE delivering to $VHOME/Maildir" xfilter "/usr/bin/deliverquota -w 90 $VHOME/Maildir" } #-------------------------------------------------------- # check to make sure the message was delivered # returncode 77 means that out maildir was overquota - bounce mail #-------------------------------------------------------- if($RETURNCODE == 77) { log "$TIMESTAMP - BOUNCED: bouncesaying '$EXT@$HOST is over quota'" log "$TIMESTAMP - $EXT@$HOST bounced" to "|/var/qmail/bin/bouncesaying '$EXT@$HOST is over quota'" } else { log "=== END === $EXT@$HOST success (quota)" EXITCODE=0 exit } } log "$TIMESTAMP - $EXT@$HOST - WARNING: This message should never be printed!" [root@um-1027 /etc/mail]#
.qmail-default看起来像这样:
|/var/qmail/bin/preline /usr/bin/maildrop /etc/mail/mailfilter
你能帮助我请如何解决这个问题,并将垃圾邮件移动到垃圾邮件文件夹?
在SpamAssassin中,您可以创build规则,在触发后将N分数附加到垃圾邮件分类标题。
设置垃圾邮件归类的门槛,以及如何处理(删除,移动到文件夹,转发?等)。
如果您想将可疑的垃圾邮件移动到特定的文件夹,我怀疑您将其挂载到POP3 / IMAP服务器(例如dovecot)或POP3 / IMAP客户端使用(例如:fetchmail + procmail)。
if header :contains "X-Spam-Level" "**********" { discard; stop; }
参考: https : //wiki2.dovecot.org/Pigeonhole/Sieve/Examples#Direct_filtering_using_message_header
:0: * ^X-Spam-Status: Yes SPAM
参考: https : //www.cs.rutgers.edu/~watrous/procmail-spam.html
我希望这certificate有帮助。
使用SpamAssassin,您可以将被检测为垃圾邮件的邮件重写,但无法删除。 Postfix或cPanel使用SpamAssassin来检测垃圾邮件而不是处理垃圾邮件。 但是你可以在cpanel中创build一个规则(例如),用SpamAssassin重写一个标题来删除邮件。 在我看来,这是一个坏主意,你可能会错过假阳性。 只要把它放在一个基本规则的特定文件夹。
移动消息与Spamassassin无关,完全依赖于您的LDA或MUA(本地交付代理或邮件用户代理)。 您的邮件是否被传送到POP3帐户,IMAP帐户? 是你的服务器使用达夫科特或赛勒斯还是别的什么?
太多的问题和variables,这不是这些问题的地方。