maildrop + vdelivermail

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

maildrop + vdelivermail

Post by redhat99 » 2004-02-26 15:14

Hallo,

ich habe eine Catchall Adresse eingerichtet. Dafür habe ich eine Datei .qmail-catchall angelegt mit folgendem Inhalt:

&konto1.abc.de
&konto2.abc.de

Wenn ich jetzt in der .qmaildefault eintrage:

| /var/vpopmail/bin/vdelivermail '' catchall@abc.de

werden die Mails auch weitertransportiert.


Nun folgendes Problem

Ich brauche diese Umleitung aber erst in der mailfilterdatei. Und wenn ich in der .qmail-default eintrage:

| maildrop mailfilter

und dann in der mailfilter:

VPOP="| /var/vpopmail/bin/vdelivermail ' ' catchall@abc.de
to "$VPOP"

werden die Mails nicht ausgeliefert. Wenn ich ins send-log sehe, merke ich auch das er die Mails anders behandelt.

Warum ist das so, und wie kann ich das umgehen?

Gruss Mario

squize
Userprojekt
Userprojekt
Posts: 741
Joined: 2003-05-19 16:46
Location: Karlsruhe

Re: maildrop + vdelivermail

Post by squize » 2004-02-26 21:00

Als erstes würde ich maildrop mit dem kompletten Pfad aufrufen:

Meine .qmail für einen User mit maildrop filter

|/usr/bin/preline /usr/bin/maildrop /var/vpopmail/bin/xfilter
Dann würde ich mir überlegen, ob du beim copy&paste etwas unterschlagen hast, oder ob es wirklich fehlt und og das Leerzeichen zwischen den single quote da hin gehört.
Als nächstes musst du auch sicherstellen, dass dein Filterfile vom user vpopmail lesbar ist.

VPOP="| /var/vpopmail/bin/vdelivermail ' ' catchall@abc.de
VPOP="| /var/vpopmail/bin/vdelivermail '' catchall@abc.de"
Gruss

Marc

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

Re: maildrop + vdelivermail

Post by redhat99 » 2004-02-27 17:47

Hallo Marc,

danke für Deine Antwort. Aber leider liegts net daran.

Also meine Konfiguration:

es gibt eine .qmail-default:
| maildrop mailfilter
maildrop und die Datei Mailfilter wird auch ohne Probleme gefunden und benutzt:

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


# Ist ein Catchall vorhanden?
if ($VCATCHALL ne "aus")
{
#Gibts das Konto lokal, damit nicht weggefangen wird!
if ( $VHOME eq "" )
{
VHOME=`/var/vpopmail/bin/vuserinfo -d $VCATCHALL`
VPOP="| /var/vpopmail/bin/vdelivermail '' $VCATCHALL"
to "$VPOP"
}
}

# 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
}
Wie mann sieht wird geschaut ob es ein Catchall gibt.

Mit dem Befehl
VHOME=`/var/vpopmail/bin/vuserinfo -d $VCATCHALL`
VPOP="| /var/vpopmail/bin/vdelivermail '' $VCATCHALL"
to "$VPOP"
wird die Mail weitergeschickt, wenn es ein Catchall gibt + der Empfänger kein existierendes Konto ist, wäre ja Schwachsinn.

Wenn ich jetzt gerade so gucke, könnte ich mir das VHOME in der Schleife sparen 8O

So nun der Punkt:

Wenn ich eine "normale Adresse habe z.B.: info@abc.de lege ich diese an und mache eine Datei: .qmail-info in der root der Domaine.

Schreibe ich da: &webmaster@abc.de rein, wird diese auch perfekt weitergeleitet.

Es wird also für das Konto wie angegeben die .mailfilterdatei includiert:

# Ist ein Catchall vorhanden?
if ($VCATCHALL ne "aus")
{
if ( $SIZE < 262144 )
{
#Gibts das Konto lokal, damit nicht weggefangen wird!
if ( $VHOME eq "" )
{
xfilter "/usr/local/bin/spamc -f -u $VCATCHALL"
}
else
{
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`
}
}
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
}
normale Mails kommen also an. Aber bei catchall wird eben die
.qmail-info nicht benutzt bzw. ignoriert.

Das raff ich nicht. Ich habe in vielen Mailinglisten ähnliche Probleme gefunden aber keine Ansätze... bis jetzt.

Habt Ihr Ideen, oder gehts bei Euch?

Im Moment kann man eben Catchall "nur" per POP3 oder IMAP abholen. zur Not würde es gehen, aber naja ...

An alle Freaks: Ja der Code kann optimiert werden :-D

Grüsse Mario