Bagaimana cara mengedit filter kata-kata buruk di SpamAssassin?


10

Bagaimana saya bisa menambahkan beberapa kata "buruk" khusus ke dalam SpamAssassin, sehingga email yang berisi kata-kata itu ditandai sebagai spam?

MEMPERBARUI

salah satu kuncinya adalah mengedit file / etc / mail / spamassassin, dan menambahkan filter badword seperti dijelaskan pada

http://linuxguruz.wordpress.com/2008/09/16/spamassassin-example/

TETAPI, dalam hal ini, surat hanya ditandai sebagai spam, masih masuk ke Kotak Masuk saya ...

Apa yang harus saya lakukan, untuk tidak menerima email yang mengandung kata-kata buruk sama sekali?

PEMBARUAN 2

SpamAssassin saya berubah perihal jika email diklasifikasikan sebagai Spam, dan sekarang berfungsi dengan baik. File /etc/mail/spamassassin/local.cf terlihat seperti ini:

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

Jadi, sekarang saya perlu bantuan cara:

  1. pindahkan email tersebut ke folder Spam
  2. secara otomatis membuat folder Spam untuk setiap akun email baru yang ditambahkan di server

File / etc / mail / mailfilter terlihat seperti ini:

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, i.e 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, e.g. 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]#

Dan .qmail-default terlihat seperti ini:

|/var/qmail/bin/preline /usr/bin/maildrop /etc/mail/mailfilter

Bisakah Anda membantu saya, bagaimana cara memperbaikinya dan memindahkan pesan spam ke folder spam?


/viagra, sex, xxx, penis, puss, greekajob, greekajobs, perazdera/OR logis bukan koma. Ini sebuah pipa. = "|" Koma biasanya dianggap sebagai koma literal dan spasi sama. Anda sedang mencari satu baris persis seperti ini di tubuh: "viagra, sex, xxx, penis, kucing, greekajob, greekajobs, perazdera". Coba /(viagra|sex|xxx|penis|puss.|greekajob|greekajobs|perazdera)/isaja?
bshea

Jawaban:


1

Di SpamAssassin Anda dapat membuat aturan yang menambahkan skor N ke header klasifikasi spam setelah dipicu.

Terserah Anda sendiri untuk menetapkan ambang batas kapan harus diklasifikasikan sebagai spam, dan apa yang harus dilakukan dengannya (menghapus, pindah ke folder, maju ?, dll).

Jika Anda ingin memindahkan email spam yang dicurigai ke folder tertentu, saya curiga Anda mengaitkannya ke server POP3 / IMAP Anda (mis: dovecot), atau penggunaan klien POP3 / IMAP (mis: fetchmail + procmail).

Contoh Dovecot menggunakan skrip saringan:

if header :contains "X-Spam-Level" "**********" { discard; stop; }

Ref: https://wiki2.dovecot.org/Pigeonhole/Sieve/Examples#Direct_filtering_using_message_header

Aturan procmail untuk memfilter spam ke folder SPAM (~ / .procmailrc)

:0: * ^X-Spam-Status: Yes SPAM

Ref: https://www.cs.rutgers.edu/~watrous/procmail-spam.html

Saya harap ini terbukti bermanfaat.


0

Dengan SpamAssassin Anda hanya dapat menulis ulang email yang terdeteksi sebagai spam tetapi Anda tidak dapat menghapusnya. Postfix atau cpanel menggunakan SpamAssassin untuk mendeteksi spam bukan untuk menanganinya. Tetapi Anda dapat membuat aturan dalam cpanel (misalnya) untuk menghapus email dengan judul ditulis ulang oleh SpamAssassin. Menurut pendapat saya, itu ide yang buruk, Anda bisa kehilangan false positive. Letakkan saja di folder tertentu dengan aturan dasar.


Anda benar, karena saya berhasil menulis ulang perihal (dan tubuh), dan menandai email yang tepat sebagai spam. Dapatkah Anda menunjukkan kepada saya bagaimana mengelola untuk secara otomatis memindahkan pesan-pesan itu ke folder spam (untuk setiap akun email)? Saya tidak punya Cpanel, server sedang dalam pemeliharaan.
user48058

Karena saya memiliki beberapa pembaruan tentang masalah ini, saya mengubah sedikit pertanyaan saya ...
user48058

Sepertinya email tidak "menjangkau" / etc / mail / mailfilter script jika itu adalah spam ... Sepertinya ada sesuatu yang menghapusnya sebelum mencapai itu. Jika email bukan spam, semuanya berfungsi dengan baik ...
user48058

Jika Anda menggunakan doveco sebagai server pop / imap, Anda dapat menggunakan ayakan untuk memindahkan email yang ditandai spam ke folder spam terpisah, memintas kotak masuk
Tutul

0

Memindahkan pesan tidak ada hubungannya dengan Spamassassin dan sepenuhnya bergantung pada LDA atau MUA Anda (Agen Pengiriman Lokal atau Agen pengguna Mail). Apakah surat Anda dikirim ke akun POP3, akun IMAP? apakah server Anda menggunakan Dovecot atau Cyrus atau yang lainnya?

Terlalu banyak pertanyaan dan variabel, dan ini bukan tempat untuk pertanyaan itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.