Exim-Frage: sender/callout

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
metrix
Posts: 94
Joined: 2002-10-26 15:52

Exim-Frage: sender/callout

Post by metrix » 2005-03-15 22:09

Hallo,

benutze Exim4 und habe mir da selbst greylisting eingebaut. Ich möchte greylisting nur durchführen, wenn der Host in einer DUL-Liste ist ODER ein Sender-Verify fehltschlägt.

Mein ACL für das greylisting lautet: greylist_acl


Hier die beiden ACLs für die Aufrufe:

Code: Select all

  defer message = [DUL] greylisting in process - please try again later ...
        !authenticated = *
        !hosts = +relay_from_hosts
        dnslists = dul.dnsbl.sorbs.net
        acl = greylist_acl

  defer message = greylisting in process - please try again later ...
        !authenticated = *
        !hosts = +relay_from_hosts
        !dnslists = dul.dnsbl.sorbs.net
    -->    !verify = sender/callout=30s   <--
        acl = greylist_acl

Funktioniert so alles wunderbar. Es gibt jedoch ein Problem. In der markierten Zeile mache ich das Verify. Liefert der Server ein User exists, dannwird greylisting ausgelassen - bei user unknown greylisting ausgeführt.

Problem ist nun wenn es einen Timeout gibt. Dann sendet mir Exim ein temporarily rejected RCPT <mail@mail>: Could not complete sender verify callout und macht kein greylisting. ein defer_ok würde hier das Gegenteil erreichen. Ich bräuchte quasi ein defer_fail ;-)

Gibt es sowas?


Danke![/quote]

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Exim-Frage: sender/callout

Post by dodolin » 2005-03-16 01:48

Ich bräuchte quasi ein defer_fail

Gibt es sowas?
Nein, gibt es nicht. Aber man kann es sich quasi selber bauen, dank der Flexibilität von Exim. :)

Dein Grundproblem wird in sämtlichen Varianten regelmäßig auf exim-users diskutiert, du bist also nicht allein. ;)

Ich empfehle, nochmals in Ruhe Kapitel 39.14 ACL verbs der spec.txt zu lesen, insbesondere zu defer (in deinem Fall) und warn.

Der Trick besteht nun darin, zuerst ein warn statement einzufügen (gegebenenfalls ohne message modifier, sodass kein Header in die Mail eingefügt wird) und in diesem warn statement per set modifier eine acl_mX Variable zu setzen. Da das warn statement immer ausgeführt wird, kann man dann im nächsten statement die acl_mX Variable testen und weiß somit, ob der defer case des verifys eingetreten ist oder nicht.

Hm... ist das klar, wie ich es meine oder muss ich mich deutlicher ausdrücken oder gleich ein Beispiel hinschreiben?

metrix
Posts: 94
Joined: 2002-10-26 15:52

Re: Exim-Frage: sender/callout

Post by metrix » 2005-03-16 07:11

danke, werde es die tage mal ausprobieren. habe es aber glaube verstanden ;-)

metrix
Posts: 94
Joined: 2002-10-26 15:52

Re: Exim-Frage: sender/callout

Post by metrix » 2005-03-16 23:25

habe es jetzt wie folgt eingebaut. vorschläge oder kritik?

Code: Select all

greylist_callout_acl:
  warn set acl_m6 = TEMP
  accept verify = sender/callout=30s
  set acl_m6 = OK
  warn set acl_m6 = FAIL


  warn
        acl = greylist_callout_acl

  defer message = greylisting in process - please try again later ...
        !authenticated = *
        !hosts = +relay_from_hosts
        !condition = ${if eq{$acl_m6}{OK}{1}{0}}
        !dnslists = dul.dnsbl.sorbs.net
#       !verify = sender/callout=30s
        acl = greylist_acl

einzigster schönheitsfehler ist nun noch, dass er mir im fall von nicht erreichbar im log schreibt: Warning: ACL "warn" statement skipped: condition test deferred: Could not complete sender verify callout

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Exim-Frage: sender/callout

Post by dodolin » 2005-03-16 23:38

IMHO sind für meinen Geschmack in deiner greylist_callout_acl einige Statements zuviel. Ein einziges warn sollte genügen. Ein accept und ein zweites warn sind eigentlich überflüssig. Warum machst du dafür überhaupt eine eigene ACL mit Namen? Sie kommt doch nur ein einziges Mal in der ganzen Konfig vor, oder?

Was er im Log schreibt, sollte sich mit log_message bzw. message beeinflussen lassen.

metrix
Posts: 94
Joined: 2002-10-26 15:52

Re: Exim-Frage: sender/callout

Post by metrix » 2005-03-16 23:42

hmm, alles ohne acl wüsste ich gerade nicht wie.


sieht es so besser aus?

Code: Select all

  warn set acl_m6 = FAIL
  verify = sender/callout=30s
  set acl_m6 = OK

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Exim-Frage: sender/callout

Post by dodolin » 2005-03-17 12:29

Sieht jedenfalls schonmal wesentlich einfacher aus. Auswendig weiß ich jetzt aber gerade auch nicht, wie sich Exim verhält, wenn man in einem Statement zwei Mal set verwendet.

metrix
Posts: 94
Joined: 2002-10-26 15:52

Re: Exim-Frage: sender/callout

Post by metrix » 2005-03-19 20:16

also es tut was es soll - auch wenn das warning weiterhin kommt ;-)

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Exim-Frage: sender/callout

Post by dodolin » 2005-03-20 14:10

Die einzige Möglichkeit, das warning zu unterdrücken, wäre mit log_selector. Es gibt aber bisher noch keine Option solche warn warnings zu unterdrücken. Du könntest es ja mal auf exim-dev als Wishlist Item vorschlagen, sofern du sichergestellt hast, dass es nicht bereits in der (sehr üppigen) Whishlist enthalten ist. :)