qmailscanner lokale kopien und weiterleitungen nach draussen

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
redhat99
Posts: 112
Joined: 2003-02-17 12:58
Location: Meckenheim

qmailscanner lokale kopien und weiterleitungen nach draussen

Post by redhat99 » 2004-02-20 16:54

Hallo,

habe den qmailtoaster nach der anleitung zusammengeschraubt. Alles geht auch soweit.

Nur werden leider die lokalen kopien, also Mails die per /var/vpopmail/ ... ins verzeichniss kopiert werden natürlich nicht gescannt. ( vor allem Spamassassin)

das heisst wenn jemand eine weiterleitung macht an ein anderes konzo auf dem Rechner per &email@host.tld wird diese gescannt. Die kopie die auch noch in der .qmail Datei steht aber leider ja nicht.

Diese auch nochmal per & ans selbe konto zu leiten, geht auch nicht, das merk qmail :-)

Habt ihr das hinbekommen?

Gruss Mario

kenzo
RSAC
Posts: 530
Joined: 2003-07-15 20:30

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by kenzo » 2004-02-20 18:40

Auch wenn ich mir nicht absolut sicher bin, Dich richtig verstanden zu haben: Versuchs mal mit den Umgebungsvariablen

Code: Select all

QS_SPAMASSASSIN="on"
export QS_SPAMASSASSIN
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
in Deinem smtpd-Runskript.

redhat99
Posts: 112
Joined: 2003-02-17 12:58
Location: Meckenheim

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by redhat99 » 2004-02-23 10:30

Hallo Kenzo,

danke für Deine Antwort. Leider hat das noch nix bewirkt, aber ich denke ich habe mich warscheinlich schlecht ausgedrückt.

Also:

Gehen wir mal von einer Mail an: user2@domain.tld aus.

Im Toaster ist es ja so konfiguriert, das die Mail an einen lokalen Benutzer
in das Verzeichniss der Domaine geht, dort nach .qmail-default schaut, diese dann angewiesen wird maildrop mit der datei mailfilter zu benutzen.

Darauf hin wird die Mail nach den Regeln der Datei .mailfilter die im ./Maildir des Benutzers user liegt behandelt.

Soweit so gut, geht auch alles...

Wenn ich jetzt aber möchte, das die Mail im Postkonto landet + eine Kopie weitergeleitet wird, lege ich eine datei mit Format:
.qmail-user
in dem Verzeichniss der domaine an.

Der Inhalt wäre dann:
&user2@domain.tld <-- Weitergeleitete Kopie
/var/vpopmail/domains/domain/user/Maildir <-- Nachricht ins Postfach
So die Mail die mit &user2@domain.tld weitergeschickt wird, läuft daduch natürlich auch durch Spammassassin, und wird nach den Regeln von user2@domain.tld behandelt.

Die richtige Mail ans Postfach geht aber direkt in Maildir ohne Spamassassin, klar die datei geht ja auch komplett an maildrop vorbei.

Verschicke ich die Kopie an Konto: user2@domain.tld mit &user2@domain.tld nochmal, merkt das qmail und die mail kommt zurück.

Meine Frage, wie erreiche ich eine checken per spamassassin, bei den Kopien, und wie bekomme ich es hin, das wenn eine Mail an user2@domain.tld geht, und dort eine weiterleitung oder ein catchall eingerichtet ist, die mail nach den Regeln von user2@domain.tld gecheckt wird, und dann weitergeleitet wird (auch an extern [web.de oder so])

Ich hoffe ich konnte es schildern ...

Gruss Mario

kenzo
RSAC
Posts: 530
Joined: 2003-07-15 20:30

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by kenzo » 2004-02-23 12:57

Okay, nochmal ganz langsam (habe Dich immer noch nicht verstanden):
1.) Benutzt Du nun, wie im Subject angedeutet, qmail-scanner oder nicht?
2.) Nach welchem Howto hast Du den Server zusammengebastelt?
3.) Was steht in Deinen diversen .qmail Dateien?

IMHO ist folgendes Procedere das einfachste:
1.) .qmail anlegen mit den gewünschten Weiterleitungen, z.B.

Code: Select all

&user2@domain.de
&someone_invalid@gmx.de
Wenn ich Dich richtig verstehe, möchtest Du auch die Mail an den Originalempfänger scannen lassen. Dann kannst Du z.B. etwas wie

Code: Select all

|preline /usr/bin/maildrop /etc/maildroprc
ans Ende Deiner .qmail-Datei hängen, wenn in Deinem Maildrop-Skript die Anweisungen zum scannen stehen.
Wenn Du qmail-scanner nutzt, mußt Du die von mir anfangs genannten Umgebungsvariablen nehmen, damit auch von intern nach intern gescannt wird. HTH&HAND :)

redhat99
Posts: 112
Joined: 2003-02-17 12:58
Location: Meckenheim

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by redhat99 » 2004-02-24 10:06

Hallo Kenzo,

vielen Dank für Deine Hilfe. Ok also, ich habe den Qmailtoaster nach dem Howtos von scythe42 installiert.

Zum scannen der Mails benutze ich den qmailscanner.
---

Nehmen wir mal die virtuelle Domain abc.de mit popkonten user1 und user2 als Beispiel.

Konfiguration:

Also in jeder virtuellen domain gibt es die .qmail-default Datei.

Beispiel: /var/vpopmail/domains/abc.de/.qmail-default

Diese wird ja verwendet wenn es keine extra für das Postfach gibt.

In dieser steht:
| maildrop mailfilter
damit wird maildrop angewiesen, die Datei mailfilter zu benutzen die im selben Verzeichniss liegt und somit für alle Popkonten verwendet wird für die es keine extradatei gibt.

Beispiel: /var/vpopmail/domains/abc.de/mailfilter

In dieser steht:

import EXT
import HOST
VPOP="| /var/vpopmail/bin/vdelivermail '' bounce-no-mailbox"
VHOME=`/var/vpopmail/bin/vuserinfo -d $EXT@$HOST`

if ( $VHOME eq "" )
{
to "$VPOP"
}
else
{
exception {
include $VHOME/.mailfilter
}
exception {
to "$VPOP"
}
}
Dadurch wird ja im Maildir des Benutzers die .mailfilter Datei benutzt, und dort steht dann der eigentlich scannvorgang.

Beispiel: /var/vpopmail/domains/abc.de/user1/.mailfilter
if ( $SIZE < 262144 )
{

xfilter "/usr/local/bin/spamc -f -u $EXT@$HOST"

if (/^X-Spam-Flag: YES/)
{
cc "|/usr/local/bin/spamassassin -d |/usr/bin/spamprobe -c -d $VHOME -8 spam"
xfilter "/usr/local/bin/spamassassin -d"
}
else
SCORE = `/usr/bin/spamprobe -c -d $VHOME -8 receive`
}

if ( /^X-Status: SPAM/ )
{
to "$VHOME/Maildir/.Spam"
exit
}
else
{
to "$VPOP"
exit
}

Meine Probleme: 8O

1. qmailadmin

Wenn ich eine Weiterleitung mit dem qmailadmin einrichte legt er die Datei .qmail-user nach /var/vpopmail/domains/abc.de/user1 funktionieren tut es aber erst wenn ich die Datei nach /var/vpopmail/domains/abc.de verschiebe.

2. Weiterleitungen

Wenn ich eine Weiterleitung anlege, also die datei .qmail-user1 und dort rein schreibe:


dann funktioniert das tadellos. Ist die Weiterleitung auch eine lokale Adresse wird diese natürlich auch gescannt.

Jetzt aber der Fall ich mache eine Weiterleitung, und möchte zusätzlich die Kopie in Postfach:

Also Empfänger: user1@abc.de
Weiterleitung nach: user2@abc.de
und Kopie ins Postfach von user1@abc.de

dann lautet der Inhalt der .qmail-user1 Datei ja:

&user2@abc.de
/var/vpopmail/domains/abc.de/user1
damit wird aber die Kopie nicht gescannt. Diese soll aber nach den Regeln von user1@abc.de gescannt werden.

Mache ich es mit:
erzeugt das einen Loop der dann als Fehlermeldung zurück kommt...

So ich hoffe das war anschaulich geschildert, ich weiss das es schwer ist, wenn man das nicht selber konfiguriert hat.

Hoffe auf Hilfe,

Grüsse Mario

kenzo
RSAC
Posts: 530
Joined: 2003-07-15 20:30

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by kenzo » 2004-02-24 11:19

Mache ich es mit:
erzeugt das einen Loop der dann als Fehlermeldung zurück kommt...
Dann mach es doch mal so, wie ich es oben beschrieben habe:

Code: Select all

&user2@abc.de
|preline maildrop mailfilter

redhat99
Posts: 112
Joined: 2003-02-17 12:58
Location: Meckenheim

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by redhat99 » 2004-02-24 11:59

hi Kenzo,

danke das hat super geklappt.

Was genau bewirkt preline? eine Rückgabe an maildrop?

Nur noch eine kleine Sache.

Catchall

das habe ich im Moment so gelöst: :-D

Beispiel: /var/vpopmail/domains/abc.de/mailfilter

Ich habe die Mailfilterdatei angepasst:
import EXT
import HOST
VCATCHALL="catchall@abc.de"
VPOP="| /var/vpopmail/bin/vdelivermail '' catchall@abc.de"
VHOME=`/var/vpopmail/bin/vuserinfo -d $EXT@$HOST`

if (-z $VCATCHALL)
{
VHOME=`/var/vpopmail/bin/vuserinfo -d $VCATCHALL`
exception {
include $VHOME/.mailfilter
}
}

if ( $VHOME eq "" )
{
to "$VPOP"
}
else
{
exception {
include $VHOME/.mailfilter
}
exception {
to "$VPOP"
}
}
Dadurch geht die Mail durch die .mailfilterdatei unter:

/var/vpopmail/domains/abc.de/catchall/.mailfilter und damit an spamassassin.

Nun das Problem:

Schicke ich eine Mail an: kontogibtsnet@abc.de

dann scannt er die Mail nach den Regeln des Kontos kontogibtsnet@abc.de
und nicht nach den von catchall@abc.de?

Kennst du eine Lösung?

Danke im voraus, Deine hilfe ist echt super und bringt mich wirklich weiter!

Grüsse Mario

kenzo
RSAC
Posts: 530
Joined: 2003-07-15 20:30

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by kenzo » 2004-02-24 12:17

Was genau bewirkt preline? eine Rückgabe an maildrop?
Siehe

Code: Select all

man dot-qmail
Nur noch eine kleine Sache.

Catchall
Das ist einigermaßen difficult - aber auch dafür gibt's eine (zumindest hier) funktionierende Lösung;
Schau Dir mal http://marc.theaimsgroup.com/?l=vchkpw& ... 721509&w=2 an, vor allem die ersten Zeilen des Skripts. EXT und HOST sind für Catchalls ziemlich unbrauchbar.

redhat99
Posts: 112
Joined: 2003-02-17 12:58
Location: Meckenheim

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by redhat99 » 2004-02-25 18:24

Hallo Kenzo,

danke nochmal für die schnelle Antwort. Ich habe mich nun an dem Artikel orientiert, aber eine eigene Konfiguration gemacht.

Folgende:

Als Beispiel wieder die Konten user1@abc.de und user2@abc.de

Meine .qmail-default sieht bei jeder Domain so aus:
| maildrop mailfilter
danach wechselt er ja in die mailfilterdatei:
import EXT
import HOST
VCATCHALL="user1@abc.de"
VPOP="| /var/vpopmail/bin/vdelivermail '' bounce-no-mailbox"
VHOME=`/var/vpopmail/bin/vuserinfo -d $EXT@$HOST`

# Ist ein Catchall vorhanden?
if ($VCATCHALL ne "aus")
{
VHOME=`/var/vpopmail/bin/vuserinfo -d $VCATCHALL`
VPOP="| /var/vpopmail/bin/vdelivermail '' $VCATCHALL"
}

# Nachsehen ob Spamfilter eingeschaltet ist?
`test -e $VHOME/spamfilter-aktiv`

# Ist Spamfilter ist aktiv dann scannen
if( $RETURNCODE eq 0 )
{

if ( $VHOME eq "" )
{
to "$VPOP"
}
else
{
exception {
include $VHOME/.mailfilter
}
exception {
to "$VPOP"
}

}
}
else
{
to "$VPOP"
exit
}
Das klappt auch alles super, er guckt ob unter VCATCHALL ein Catchall eingesetzt ist, default steht da "aus" und wenn ja schreibt er VHOME und VPOP um. Danach schaut er bei dem Empfänger nach ob die Datei "spamfilter-aktiv" da ist, wenn ja included er folgende .mailfilterdatei in dem Homeverzeichniss des Benutzers (user1)

Wenn nicht, liefert er die Mail an VPOP ab.

Das habe ich so gemacht damit ich die Mails immer nach den Regeln des entgültigen Emfängers scanne. Jetzt schickt er die Mail
nach den Regeln der .mailfilter datei von user1@abc.de


.mailfilter:

SHELL="/bin/sh"
VDIR=`pwd` # grab PWD by running the pwd command

log "== $EXT - $HOST - $VCATCHALL =="


# Ist ein Catchall vorhanden?
if ($VCATCHALL ne "aus")
{
if ( $SIZE < 262144 )
{
xfilter "/usr/local/bin/spamc -f -u $VCATCHALL"
log "== nach Spamassassin schicken =="
if (/^X-ChemSoft-Spam-Flag: YES/)
{
cc "|/usr/local/bin/spamassassin -d |/usr/bin/spamprobe -c -d $VHOME -8 spam"
xfilter "/usr/local/bin/spamassassin -d"
}
else
SCORE = `/usr/bin/spamprobe -c -d $VHOME -8 receive`
log "== In schleife catchall 2 ==="
}
}
else
{

if ( $SIZE < 262144 )
{
xfilter "/usr/local/bin/spamc -f -u $EXT@$HOST"

if (/^X-ChemSoft-Spam-Flag: YES/)
{
cc "|/usr/local/bin/spamassassin -d |/usr/bin/spamprobe -c -d $VHOME -8 spam"
xfilter "/usr/local/bin/spamassassin -d"
}
else
SCORE = `/usr/bin/spamprobe -c -d $VHOME -8 receive`
}
}

# Auslieferung an Postfach/Spamordner
if ( /^X-Chemsoft-Antispam-Status: SPAM/ )
{
to "$VHOME/Maildir/.Spam"
exit
}
else
{
to "$VPOP"
exit
}

So wenn scannen aktiv wird gescannt und je nach dem verschoben.

SOOOOOOO nun mein kleines (grosses) Problem über dem ich jetzt schon 4,5 Stunden hänge.

Die Mail wird jetzt nach den Regeln von user1@abc.de gescannt, aber landet direkt im postfach und ignoriert
meine in .qmail-user1 gemachten weiterleitungen. Diese funktionieren, wenn ich statt dem Catchall das bounce-no-mailbox habe.

Hast du eine Idee?

Danke im Voraus

Grüsse Mario

kenzo
RSAC
Posts: 530
Joined: 2003-07-15 20:30

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by kenzo » 2004-02-25 21:00

Um ehrlich zu sein, steige ich da nicht richtig durch - es scheint auch ein wenig (zu) kompliziert geworden zu sein. Aber: Fehlt in der zweiten .mailfilter nicht die Deklaration von "$VPOP" und "$VHOME" oder übersehe ich da etwas angesichts der (für mich) recht fortgeschrittenen Vergreisung?

redhat99
Posts: 112
Joined: 2003-02-17 12:58
Location: Meckenheim

Re: qmailscanner lokale kopien und weiterleitungen nach draussen

Post by redhat99 » 2004-02-26 09:07

Hallo Kenzo,

ja ist alles etwas kompakt geworden.

Die Variablen stehen zur Verfügung, da die zweite .mailfilter ja in die erste includiert wird.

Funktionier auch alles, bis auf das catchall macht Ã?rger 8O


Also, funktionieren tuts ja, nur wenn ich es weiterleiten will nicht :-(

Jemand ne Idee?

Grüsse Mario