Hallo Nicola,

Nicola Tiling schrieb:
>> Ich bin mir da gerade nicht so sicher, ob Du in einer DATA-ACL
>> $local_part und $domain überhaupt hast. Denn es könnten ja auch  
>> mehrere
>> Empfänger sein.
> 
> 
> 
> Ich glaube nicht. Ich mach die Abfrage auf die user Datenbank in  
> "acl_check_rcpt" und schreibe das Ergebnis dort in eine acl_m Variable  
> die ich in "acl_check_data" abfrage.

Ich glaube auch, das in einer acl_smtp_data die einzelnen Empfänger 
einer Mail nicht über $local_part und $domain verfügbar sind. Aber in 
einer acl_smtp_rcpt. Zum Beispiel aus dem Abschnitt "11.9 Expansion 
variables" der spec.txt:

<snip>
$local_part

When an address is being routed, or delivered on its own, this variable
contains the local part. When a number of addresses are being delivered
together (for example, multiple RCPT commands in an SMTP session),
$local_part is not set.
</snip>

> Unten auch die SQL Abfrage. Wobei  
> die DB von mir angepasst wurde. ich finds auch praktischer /  
> übersichtlicher die Abfragen am Anfang der exim configure in Macros zu  
> definieren, statt in der Konfiguration von acls, routern usw. auch  
> noch SQL lesen zu müssen.
> 
> acl_check_rcpt:
> ===============
> set acl_m4     = ${lookup pgsql{HEAD_SCORE}}
> 
> 
> acl_check_data:
> ===============
> condition      = ${if > {$spam_score_int}{$acl_m4} {1}{0}}
> 
> 
> 
> HEAD_SCORE = select users.sa_tag * 10 FROM users INNER JOIN  
> domains_view \
>         ON (users.domain_id=domains_view.domain_id) \
>         WHERE users.localpart = '${quote_pgsql:$local_part}' \
>         AND domains_view.domain = '${quote_pgsql:$domain}' \
>         AND users.on_spamassassin = '1' \
>         AND users.enabled = '1'

Die Frage hierbei ist, was die Variable acl_m4 enthält, falls die Mail 
mehr als einen Empfänger hat. Tom Kistner hat in der Doku zu exiscan 
schon vor Jahren geschrieben, dass die acl_smtp_rcpt für jeden einzelnen 
Empfänger durchlaufen wird, aber die acl_smtp_data nur einmal pro Mail 
(dies steht auch in der spec.txt). Der Wert der Variable acl_m4 wird 
wahrscheinlich der Wert des letzten Empfängers sein.

In der Doku stehen zwei Alternativen: entweder wird das Exim so 
konfiguriert, dass Mail grundsätzlich immer nur für einen Empfänger 
angenommen wird, oder man gruppiert die Empfänger. Der "HEAD_SCORE" des 
ersten Empfängers wird in die acl-Variable gespeichert. Wenn der 
"HEAD_SCORE" eines folgenden Empfängers ungleich diesem Wert ist, wird 
dieser Empfänger in der acl_check_rcpt "defered", also temporär 
abgelehnt. In meiner Konfig sieht dies so aus (aus der acl_smtp_rcpt):

<snip>
# vol 041210 defer, wenn adressat andere scanprefs hat
#            nicht testen, wenn von relay_hosts (enthaelt av_hosts)
#            was passiert bei der ersten adresse (acl_m0 ist leer!)?
   defer  condition = ${if eq {${acl_m0}}{}{0}{1}}
          condition = ${if eq {${acl_m0}}{CDB_SCANPREFS}{0}{1}}
          log_message = [EMAIL PROTECTED] hat nicht scanpref $acl_m0
          message = please try this address in the next batch
</snip>

Deine acl_m4 ist meine acl_m0. Wenn die Variable leer ist, ist dies der 
erste Enmpfänger einer Mail und die defer-Regel greift nicht. Wenn der 
Wert der Variable ungleich des neuen HEAD_SCOREs ist (bei mir ist die 
Abfrage hinter CDB_SCANPREFS versteckt), dann wird dieser Empfänger 
temporär abgelehnt.

Der Nachteil wird in der Doku genau benannt. Wenn eine Mail zum Beispiel 
10 Empfänger hat, die alle unterschiedliche HEAD_SCOREs haben, dann muss 
die Mail vom absendenden Server 10 mal übertragen werden :-(( Es liegt 
am Wiederholungsinterval des absendenden Servers, wie lange dies dauert 
:-(( Ich halte deswegen die unterschiedlichen HEAD_SCOREs sehr klein, 
ich glaube, ich habe zur Zeit nur drei unterschiedliche Werte. Dadurch 
muss eine Mail im ungünstigsten Fall dreimal übertragen werden. Man kann 
die Zeit etwas verkürzen, in dem man mehrere MX-Records (mit 
unterschiedlichen Namen und Adressen) für die Domain hat, weil viele 
MTAs bei einem "defer" sofort einen anderen MX versuchen (dies konnte 
ich in den Log-Dateien genau beobachten).

Gruß -vol

_______________________________________________
Exim-users-de mailing list
[email protected]
http://lists.exim.org/mailman/listinfo/exim-users-de

Antwort per Email an