qmail-smtp-chkusr

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
zipp0r
Posts: 33
Joined: 2004-06-08 11:20

qmail-smtp-chkusr

Post by zipp0r » 2004-07-28 12:37

Hallo.

Da wir auf ein paar Domains recht schwere Spam-Bruteforce Attacken bekommen, habe ich überlegt den qmail-smtp-chkusr Patch einzuspielen (http://www.interazioni.it/qmail/). Problem wäre jedoch, das wir für ein paar Domains die Catchall Funktionalität benötigen, weil diese Ihre Mails intern nochmal weiterverteilen. Ist es nun möglich für spezielle Domains trotzdem alle RCPTS zuzulassen oder gilt dies nur global? Oder nimmt Qmail alles an sobald ein Catchall gesetzt ist?

Danke im Vorraus...

zipp0r

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

Re: qmail-smtp-chkusr

Post by squize » 2004-07-28 15:22

Es gibt unter http://netdevice.com/qmail/rcptck/ eine Reihe Patches, die dein Feature beinhalten. Vielleicht bringt es dich weiter.

Gruss

Marc

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

Re: qmail-smtp-chkusr

Post by kenzo » 2004-07-28 21:37

Problem wäre jedoch, das wir für ein paar Domains die Catchall Funktionalität benötigen
Geht mit chkusr.

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

Re: qmail-smtp-chkusr

Post by redhat99 » 2004-07-30 09:32

Hallo Kenzo,

ich hatte/habe auch das Problem das ich chkusr verwende aber leider keine Catchall mehr geht. (ich brauchs nicht aber [Spam]Mailgeile Kunden)

Ich habe hier schon mal einen Thread verfasst, in dem ich auch schreibe warum: http://www.rootforum.org/forum/viewtopic.php?t=26744

Ich nutze neben chkusr auch maildrop + mailfilterdateien und dadurch bin ich am Catchall gescheitert.

Wie geht das mit chkusr + Catchall?

Grüsse Mario

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

Re: qmail-smtp-chkusr

Post by kenzo » 2004-07-30 11:37

Wie geht das mit chkusr + Catchall?
Eigentlich muss man nur, wie in Deinem Fall

Code: Select all

| maildrop mailfilter
in die .qmail-Datei des Catchall-Accounts einfügen - damit werden halt, je nach mailfilter, alle Mails gecheckt. Oder habe ich da eine Besonderheit Deines Setup übersehen?

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

Re: qmail-smtp-chkusr

Post by redhat99 » 2004-07-30 11:58

Hallo Kenzo,

habs gerade nochmal getestet. Es geht bei MIR definitiv kein Catchall. Ich nehme an das resultiert daraus, dass in der .qmail-default ja nicht nach dem Standart bounce-no-mailbox geschaut wird. Das musste ich ja rausnehmen, da sonst der chkusr-patch nicht funktioniert wenn ich in der .qmail-default | maildrop mailfilter reinschreibe um die mail mit maildrop zu behandeln.

Standartmassig steht ja schon in der .qmail-default der bounce-no-mailbox string, bei mir ja | maildrop mailfilter.

Ich habe zum testen nochmal ein Konto Catchall@domain.tld angelegt, und eine Datei .qmail-catchall unter der domain. Dort steht | maildrop mailfilter drin. Ich bekomme aber bekannte "Fehlermeldung" von chkusr, das die Mailbox nicht existiert.

Grüsse Mario

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

Re: qmail-smtp-chkusr

Post by kenzo » 2004-07-30 12:08

Ich habe zum testen nochmal ein Konto Catchall@domain.tld angelegt, und eine Datei .qmail-catchall unter der domain.
Und was steht in der dazugehörigen .qmail-default? Leg doch einfach den Nutzer komplett an und schreib die mailfilter-Klamotten in die .qmail-Datei in seinem Verzeichnis.

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

Re: qmail-smtp-chkusr

Post by redhat99 » 2004-07-30 13:27

Hallo Kenzo:

User ist angelegt, und folgende Dateien:

.qmail-default:

Code: Select all

| maildrop mailfilter
.qmail-catchall

Code: Select all

| maildrop mailfilter
mailfilter:

Code: Select all

import EXT
import HOST
VPOP="| /var/vpopmail/bin/vdelivermail '' catchall@domain.tdl"
VHOME=`/var/vpopmail/bin/vuserinfo -d $EXT@$HOST`

# 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
}
.mailfilter (unter Catchall)

Code: Select all

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

        # Testen ob Absender in der Whitelist steht
        if (/USER_IN_WHITELIST/)
        {
        to "$VPOP"
        exit
        }

        # Testen ob Absender in der Blacklist steht
        if (/USER_IN_BLACKLIST/)
        {
        to "$VHOME/Maildir/.Spam"
        exit
        }

        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"
        xfilter "/usr/bin/reformail -I "X-Antispam-Probe: SPAM""
        }
        else
        {
        SCORE = `/usr/bin/spamprobe -c -d $VHOME -8 receive`
        xfilter "/usr/bin/reformail -I "X-Antispam-Probe: $SCORE""
            if ( /^X-Antispam-Probe: SPAM/ )
            {
            subject = `/usr/bin/reformail -x Subject:`
            xfilter "/usr/bin/reformail -I "Subject: *** SPAM *** $subject""
            }
        }
}

# Auslieferung an Postfach/Spamordner
if ( /^X-Antispam-Probe: SPAM/ )
{
to "$VHOME/Maildir/.Spam"
exit
}
else
{
to "$VPOP"
exit
}
Aber es geht eben kein Catchall...ist auch nicht soo wichtig, aber wenns sich beheben lässt wärs natürlich besser.


Grüsse Mario

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

Re: qmail-smtp-chkusr

Post by kenzo » 2004-07-30 14:17

Catchall mit maildrop ist einigermaßen mühsam - EXT und HOST helfen nicht allzu viel, da der User ja nicht existiert - vuserinfo kann keine verwertbaren Ergebnisse bringen. Versuchs mal so:
.qmail-default:

Code: Select all

| /var/vpopmail/bin/vdelivermail '' catchall@domain.tdl
mailfilter:
Als Replacement für EXT und HOST:

Code: Select all

VHOME=`pwd` (maildrop befindet sich schließlich im Zielverzeichnis)
USERNAME=`echo ${VHOME##*/}`
USERHOST=`PWDTMP=${VHOME%/*}; echo ${PWDTMP##*/}`
Quelle: http://marc.theaimsgroup.com/?l=vchkpw& ... 721509&w=2
Damit kannst Du ggf. mehr anfangen - die Frage jedoch bleibt: Was genau funktioniert bei Deinem Catchall nicht?

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

Re: qmail-smtp-chkusr

Post by redhat99 » 2004-07-30 15:02

Hallo kenzo,

danke für Deine Hilfe,

werde das dann mal testen. Was nicht funktionier ist folgendes. Ich habe wie oben beschrieben das catchallkonto eingerichtet.

Nun verschicke ich 2 Mails:

eine an:

catchall@domain.tld -> kommt an

eine an:

sdlsdlsd@domain.tld -> wird verweigert mit der Meldung von chkusr dass das konto nicht existiert

Grüsse Mario

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

Re: qmail-smtp-chkusr

Post by kenzo » 2004-07-30 16:29

Kann es mit deinen Ã?nderungen am Patch zusammenhängen? Schon eine "vanilla"-Version ausprobiert?

tastengott
Posts: 19
Joined: 2003-07-26 07:51
Location: MD

Re: qmail-smtp-chkusr

Post by tastengott » 2004-07-30 16:57

Also wenn der originale Patch von http://www.interazioni.it/qmail/ verwendet wurde, wird kein Catchall funktionieren.

Wie auch?

Beim Empfang einer E-Mail wird geprüft, ob der User in der Vpopmail Datenbank vorhanden ist.
Ist er nicht vorhanden, weißt qmail-smtpd den Empfang sofort zurück. <- Ist ja auch Sinn der Sache.

Wenn überhaupt, müßte man doch die Vpopmail Datenbank "verbiegen" bzw. einen Eintrag machen.

Oder hab ich hier einen Denkfehler?

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

Re: qmail-smtp-chkusr

Post by kenzo » 2004-07-30 20:36

Also wenn der originale Patch von http://www.interazioni.it/qmail/ verwendet wurde, wird kein Catchall funktionieren.
Das halte ich für ein Gerücht ...
Ist er nicht vorhanden, weißt qmail-smtpd den Empfang sofort zurück. <- Ist ja auch Sinn der Sache.
Das stimmt nur zur Hälfte:
Wenn das rcpt-Kommando ankommt, passiert folgendes:

Code: Select all

open("/home/vpopmail/domains/jaja.invalid/.qmail-default", O_RDONLY|O_NONBLOCK) = 3
read(3, "| /home/vpopmail/bin/vdelivermai"..., 1023) = 55
und es wird geprüft, ob in der .qmail-default ein "bounce-no-mailbox" vorhanden ist. Ist das nicht der Fall, geht es weiter mit

Code: Select all

open("/home/vpopmail/domains/jaja.invalid/.qmail-user", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/home/vpopmail/domains/jaja.invalid/.qmail-user", F_OK) = -1 ENOENT (No such file or directory)
write(1, "550 sorry, no mailbox here by th"..., 50) = 50
Läßt sich übrigens hervorragend im Code / per strace nachvollziehen.
Oder hab ich hier einen Denkfehler?
s.o.