it-swarm.com.de

Wie verschiebe ich Spam in einen Spam-Ordner?

ich habe bereits postfix, dovecot, clamav, spamassassin und amavisd-new auf meinem centos 5.10 installiert. Das Tutorial finden Sie hier: http://catatanlepas.com/komputer/aplikasi/server-mail/postfix/359-instalasi-postfix-menggunakan-dovecot-di-centos-5-5

Ich installiere Razor, Pyzor und DCC in diesem Tutorial einfach nicht.

In/var/log/maillog funktioniert alles einwandfrei, wenn eine Spam-E-Mail nicht in den Posteingang kommt, ich aber Spam-E-Mails in den Spam-Ordner verschieben möchte.

Meine Frage lautet: 1. So erstellen Sie automatisch einen Spam-Ordner in meinem Webmail, da nur Posteingang, Entwurf und gesendete Objekte erstellt werden und in meinem Webmail kein Spam-Ordner vorhanden ist. 2. So verschieben Sie Spam-E-Mails pro Benutzer in diesen Spam-Ordner (ich erstelle einen Benutzer unter/var/vmail)

Bitte helfen Sie mir, ich habe eine Suche in Google für 5 Tage und ich bin Stapel auf diese :(

Vielen Dank.

11
user3747101

I - Richten Sie Ihre E-Mail-Zustellung für die Verwendung von Dovecot LDA ein:

Die ursprüngliche Website, auf die das OP verlinkt ist, ist offline. Ich glaube jedoch, dass die E-Mail-Zustellung über das Programm sendmail erfolgte. Dies sollte über Dovecot LDA erfolgen, was Sie benötigen. (Um E-Mail-Origin-Header-Änderungen zu vermeiden).

Bearbeiten Sie den master.cf von Postfix (am Anfang):

smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamassassin

Und am Ende der Datei:

spamassassin unix -     n   n   -   -   pipe
    flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e 
    /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} 

Bearbeiten Sie nun main.cf von Postfix und fügen Sie (optional, überprüfen (3) unten) hinzu:

spamassassin_destination_recipient_limit = 1

Jetzt wird Ihre E-Mail ohne Änderungen am Header über Dovecot LDA zugestellt. Für die Neugierigen hier ein paar Details zu meiner Konfig:

  1. Diese config kann mit Plus-Adressierung/Unteradressierung/Empfänger-Trennzeichen verwendet werden (E-Mails, die an [email protected] adressiert sind, werden in [email protected]-Posteingang geliefert.) - Deshalb habe ich -d ${user}@${nexthop} hinzugefügt, wodurch der + und alles bis zur Domäne entfernt wird . Um diese Funktion zu aktivieren, müssen Sie unbedingt recipient_delimiter = + in main.cf hinzufügen.
  2. Meine Flags flags=DROhu, sie fügen nichts Ungewöhnliches hinzu, aber sie können hier verstanden werden: http://www.postfix.org/pipe.8.html ;
  3. spamassassin_destination_recipient_limit = 1 ist erforderlich, um sicherzustellen, dass jeder Empfänger individuell von Spamassassin verarbeitet wird. Dies ist aufgrund des oben angegebenen D-Flag (Includes X-Original-To-Header) erforderlich. Wenn Sie sich nicht für diesen Header interessieren, können Sie die Markierung entfernen und dies ist nicht erforderlich.

II - Verschieben Sie Ihren Spam in den Ordner Junk:

(Mit Hilfe von @Electronic Technologies unter https://stackoverflow.com/a/32470349/560745 )

Sie können Dovecot auch so konfigurieren, dass als Spam erkannte E-Mails in den IMAP-Ordner Junk verschoben werden. Folgen Sie einfach diesem:

  1. Bearbeiten Sie /etc/dovecot/conf.d/15-mailboxes.conf und entfernen Sie das Kommentarzeichen/fügen Sie den Junk-Ordner hinzu (sollte sich im Abschnitt namespace inbox in der Nähe von mailbox Trash befinden):

    mailbox Junk {
       special_use = \Junk
    }
    
  2. dovecot-sieve mit apt-get install dovecot-sieve installieren;

  3. Bearbeiten Sie /etc/dovecot/conf.d/90-sieve.conf und kommentieren Sie die Zeile: #sieve = ~/.dovecot.sieve

  4. /etc/dovecot/conf.d/90-plugin.conf als bearbeiten:

    plugin {
        sieve = /etc/dovecot/sieve/default.sieve
    }
    
  5. Bearbeiten Sie /etc/dovecot/conf.d/15-lda.conf und /etc/dovecot/conf.d/20-lmtp.conf entsprechend:

    protocol lda/lmtp { # do not copy/paste this line!
      mail_plugins = $mail_plugins sieve
    }
    

    WARNING: Möglicherweise haben Sie unter den protocol-Einstellungen andere Einstellungen. Behalten Sie sie. Die Zeile protocol lda/lmtp ändert sich in den Dateien und behält das Original.

  6. Ordner /etc/dovecot/sieve/ erstellen

  7. Erstellen Sie die Datei /etc/dovecot/sieve/default.sieve mit diesem Inhalt:

    require "fileinto";
    if header :contains "X-Spam-Flag" "YES" {
        fileinto "Junk";
    }
    
  8. Ändern Sie die Ordnerberechtigungen für Ihren virtuellen E-Mail-Benutzer und seine Gruppe wie folgt: chown vmail:vmail /etc/dovecot/sieve/ -R. Wenn Sie diesen Taubenschlag vermissen, wird er sich beschweren!

  9. Starten Sie alles neu: service postfix restart; service dovecot restart; service spamassassin restart

  10. Versuchen Sie, eine E-Mail an eine E-Mail auf dem Server (von einem externen Server) zu senden, zuerst eine normale E-Mail und dann eine andere mit diesem Betreff: XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X. Die zweite E-Mail sollte in den Ordner Junk und die erste in Ihren Posteingang verschoben werden.

Wenn dies beim ersten Versuch nicht funktioniert, schauen Sie sich die Protokolle an: tail -f /var/log/mail.log und senden Sie die E-Mail, während tail ausgeführt wird. Eine gute Arbeitsumgebung sollte stored mail into mailbox 'INBOX' oder stored mail into mailbox 'Junk' melden.

28
TCB13

für Dovecot 2.1 + ändern Sie /etc/dovecot/dovecot.conf:

namespace {
    type = private
    separator = .
    inbox = yes
  mailbox Trash {
    auto = subscribe # autocreate and autosubscribe
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
}

plugin {
    sieve = /home/spam/default.sieve
}

protocol lda {
            auth_socket_path = /var/run/dovecot/auth-master
            mail_plugins = $mail_plugins sieve
}

dann /etc/postfix/master.cf - add 

spamassassin unix -     n   n   -   -   pipe
  user=vmail argv=/usr/bin/spamc -f -e  /usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

(!!) user = vmail - Ändert den Benutzer in den für Spamassassin eingerichteten

und fügen Sie Inhaltsfilter zu SMTP hinzu

smtp  inet  n  - - - -  smtpd -o content_filter=spamassassin

in /etc/mail/spamassassin/local.cf

add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ version=_VERSION_
#rewrite_header Subject *****SPAM*****
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status

Ich werde der Nachricht X-Spam-Header hinzufügen, die für die spätere Siebfilterung verwendet werden sollen

Junk-Ordner werden automatisch erstellt. Alle Junk-E-Mails werden lokal an die Mailbox gesendet. Junk

Ich füge auch ein Beispiel für einen Siebfilter hinzu, um alle als Spam-Nachrichten markierten (Spam-Assassin-Konfiguration oben) in den Junk-Ordner zu verschieben.

require "fileinto";
  if exists "X-Spam-Flag" {
          if header :contains "X-Spam-Flag" "NO" {
          } else {
          fileinto "Junk";
          stop;
          }
  }
7
ETech

Nun, es gibt mehrere Möglichkeiten, aber ich habe festgestellt, dass dies funktioniert. Nachdem Sie Postfix, Dovecot, Spamassassin und (ich empfehle procmail) eingerichtet haben, können Sie procmail/Spamassassin mitteilen, wie Spam in verschiedene Ordner verteilt wird. Mit Taubenschlag. Ich verwende die folgenden 4 Ordner:

spam          (for known spam based on Bayes setting)
spam-learn    (for spam that slipped through, you move it here)
spam-probably (for spam ID'd as probably spam by Bayes setting)
spam-unlearn  (messages flagged as spam, that are NOT spam go here)

mit den Ordnern setup und postfix zum Filtern von E-Mails durch procmail konfiguriert mit:

mailbox_command = /usr/bin/procmail -a "$EXTENSION"

sie können jetzt Ihr procmailrc einrichten, um den Spam an der richtigen Stelle in Ihrem Posteingang abzulegen. Ihr ~/.procmailrc sollte ungefähr so ​​aussehen:

PATH=/usr/bin/vendor_Perl:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail/
LOGDIR=$HOME/log
#DEFAULT=$HOME/Mail/
LOGFILE=$LOGDIR/procmail.log
VERBOSE=ON
## with spamc
:0fw: spamc.lock
* < 256000
| spamc
#| /usr/bin/vendor_Perl/spamc
# Mails with a score of 15 or higher are almost certainly spam (with 0.05%
# false positives according to rules/STATISTICS.txt). Let's put them in a
# different mbox. (This one is optional.)
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
spam
#Mail/spam

# All mail tagged as spam (eg. with a score higher than the set threshold)
# is moved to "probably-spam".
:0:
* ^X-Spam-Status: Yes
spam-probably
#Mail/spam-probably

# Work around procmail bug: any output on stderr will cause the "F" in "From"
# to be dropped.  This will re-add it.
:0
* ^^rom[ ]
{
LOG="*** Dropped F off From_ header! Fixing up. "

:0 fhw
| sed -e '1s/^/F/'
}

Der letzte Schlüssel, damit alles automatisch funktioniert, ist fetchmail, um Nachrichten zu scannen, sobald sie in Ihrem Posteingang ankommen, und an procmail weiterzuleiten, um den Spam/Spam wahrscheinlich in die richtigen Ordner zu legen und die Nachrichten im Spam zu lesen (zum Löschen). und Spam-Unlearn (um als ham zu lernen). Ein typisches Fetchmail-Skript ist Ihr ~/.fetchmailrc. Es enthält lediglich Befehle zum Abfragen Ihrer Mailbox:

poll mail.yourserver.com protocol IMAP : user yourname with password yourpass ssl \
sslfingerprint "D9:73:1A:FE:C6:7C:E7:9B:F1:31:F8:A1:A0:E1:F9:27"

(Sie können Ihren Server-Fingerabdruck abrufen, indem Sie einfach fetchmail --verbose mit Ihrer .fetchmailrc-Datei ausführen. Der Server-Fingerabdruck wird gedruckt. Überprüfen Sie Ihren aktuellen Fingerabdruck. Informieren Sie sich, dass sie nicht übereinstimmen, und schließen Sie die Verbindung Fingerabdruck für das nächste Mal :-)

Als letzten Schritt richten Sie ein paar Cron-Jobs ein, um die gesamte Aufgabe auszuführen, indem Sie Ihre Spam-Learn- und Spam-Unlearn-Ordner lesen. Stündlich ist gut genug. Das Skript kann so aussehen:

#!/bin/bash

## log file location and per-user name
LDIR=/home/admin/log
LFN="${LDIR}/${USER}.log"

## Retrieve and Process Spam & Ham from 'spam-learn' & 'spam-unlearn' folders
/usr/bin/fetchmail -a -s -n --folder spam-learn -m '/usr/bin/vendor_Perl/sa-learn --spam' &>/dev/null
mss=$?
sleep 2
/usr/bin/fetchmail -a -s -n --folder spam-unlearn -m '/usr/bin/vendor_Perl/sa-learn --ham' &>/dev/null
mhs=$?

## test and create log dir in noexist
[[ -d "$LDIR" ]] || mkdir -p "$LDIR"
if [[ -w "$LDIR" ]]; then

## check return from fetchmail and write log info
if [[ $(($mhs+$mss)) -le 2 ]]; then
    echo "$(date +'%b %e %R:%S') $HOSTNAME ${0##*/}: sa-learn completed successfully for user $USER" >>$LFN
else
    echo "$(date +'%b %e %R:%S') $HOSTNAME ${0##*/}: sa-learn FAILED for user $USER" >>$LFN
fi
fi

Und der Cron-Job führt einfach die Datei spamv.sh aus:

05 * * * * /usr/local/bin/spamv.sh

Ich habe Server seit fast einem Jahrzehnt so laufen lassen und es funktioniert gut. Die Trainingsdateien befinden sich im Heimatverzeichnis des Benutzers und können problemlos von Box zu Box verschoben werden, um eine gute Basis für neue Benutzer zu schaffen. Viel Glück. Ich habe vor Jahren für openSuSE 11.0 ein kurzes Howto für dieses Setup gemacht. Es kann auch etwas mehr Informationen geben.

P.S. Rayzor ist das Laden wert.

0
David C. Rankin