Come modificare il filtro per parolacce in SpamAssassin?


10

Come posso aggiungere diverse parole "cattive" personalizzate in SpamAssassin, così le e-mail che contengono quelle parole sono contrassegnate come spam?

AGGIORNARE

una delle chiavi è quella di modificare il file / etc / mail / spamassassin e aggiungere il filtro badword come descritto sopra

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

MA, in questo caso, la posta è contrassegnata solo come spam, va comunque nella mia Posta in arrivo ...

Cosa devo fare per non ricevere e-mail che contengono affatto parolacce?

AGGIORNAMENTO 2

My SpamAssassin cambia argomento se l'email è classificata come spam e ora funziona bene. Il file /etc/mail/spamassassin/local.cf è simile al seguente:

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

Quindi, ora ho bisogno di aiuto per:

  1. sposta quelle e-mail nella cartella Spam
  2. crea automaticamente la cartella Spam per ogni nuovo account di posta aggiunto sul server

Il file / etc / mail / mailfilter è simile al seguente:

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]#

E .qmail-default è simile al seguente:

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

Potete aiutarmi per favore come risolvere questo problema e spostare i messaggi spam nella cartella spam?


/viagra, sex, xxx, penis, puss, greekajob, greekajobs, perazdera/un OR logico non è una virgola. È una pipa. = "|". Le virgole sono di solito prese come virgole letterali e spazi uguali. Stai cercando una riga esattamente come questa nel corpo: "viagra, sesso, xxx, pene, puss, greekajob, greekajobs, perazdera". Prova /(viagra|sex|xxx|penis|puss.|greekajob|greekajobs|perazdera)/iinvece?
bshea,

Risposte:


1

In SpamAssassin puoi creare regole che aggiungono il punteggio N all'intestazione della classificazione spam dopo che è stato attivato.

Sta a te impostare la soglia per quando deve essere classificato come spam e cosa fare con esso (cancellare, passare alla cartella, inoltrare ?, ecc.).

Se vuoi spostare le e-mail di spam sospette in una cartella specifica, sospetto che tu le abbia agganciate al tuo server POP3 / IMAP (es: dovecot) o all'utilizzo del client POP3 / IMAP (es: fetchmail + procmail).

Esempio Dovecot usando gli script setaccio:

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

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

Regola Procmail per filtrare lo spam nella cartella SPAM (~ / .procmailrc)

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

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

Spero che questo si riveli utile.


0

Con SpamAssassin puoi semplicemente riscrivere una mail rilevata come spam ma non puoi eliminarla. Postfix o cpanel usano SpamAssassin per rilevare gli spam non per gestirli. Ma puoi creare una regola in cpanel (ad esempio) per eliminare la posta elettronica con un titolo riscritto da SpamAssassin. Secondo me, è una cattiva idea, puoi perdere i falsi positivi. Basta inserirlo in una cartella specifica con una regola di base.


Hai ragione, perché sono riuscito a riscrivere oggetto (e corpo) e contrassegnare le e-mail appropriate come spam. Potete indicarmi come riuscire a spostare automaticamente quei messaggi nella cartella spam (per ogni account e-mail)? Non ho Cpanel, il server è sotto la mia manutenzione.
user48058

Dato che ho alcuni aggiornamenti su questo problema, ho modificato un po 'la mia domanda ...
user48058

Sembra che la posta elettronica non "raggiunga" / etc / mail / mailfilter script nel caso in cui sia spam ... Sembra che qualcosa lo elimini prima di raggiungerlo. Nel caso in cui la posta non sia spam, tutto funziona bene ...
user48058

Se si utilizza doveco come server pop / imap, è possibile utilizzare sieve per spostare le e-mail con tag spam in una cartella spam separata, ignorando la casella di posta in arrivo
Tutul

0

Lo spostamento dei messaggi non ha nulla a che fare con Spamassassin ed è interamente dipendente da LDA o MUA (Agente di consegna locale o Agente utente di posta). La tua posta viene recapitata a un account POP3, un account IMAP? il tuo server usa Dovecot o Cyrus o qualcos'altro?

Troppe domande e variabili, e questo non è il posto per quelle domande.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.