[exim] PRDR config example

Top Page
Delete this message
Reply to this message
Author: Yves Goergen
Date:  
To: Exim-users list
Subject: [exim] PRDR config example
Hello,

I'm trying to get the PRDR extension to work but can't find any
documentation about its ACL. All I see is the global option
'prdr_enable' and the ACL 'acl_smtp_data_prdr'. But I don't know how to
use it.

Currently, the ACL 'acl_smtp_data' has this:

>     # Add marker to the subject above the configured threshold
>     warn
>         !authenticated = *
>         condition = ${if <{$message_size}{5242880}{1}{0}}
>         spam = nobody:true
>         condition = ${if >={${lookup pgsql{SQL_SPAMMRK}{$value}}}{10}{1}{0}}
>         condition = ${if >={$spam_score_int}{${lookup pgsql{SQL_SPAMMRK}{$value}}}{1}{0}}
>         set acl_m_subject = $header_Subject: *** Spam $spam_score
>         remove_header = Subject
>         add_header = Subject: $acl_m_subject

>
>     # Reject spam at high scores (see database value, minimum score for reject is 10 = 1.0)
>     deny
>         !authenticated = *
>         condition = ${if <{$message_size}{5242880}{1}{0}}
>         spam = nobody:true
>         condition = ${if >={${lookup pgsql{SQL_SPAMFLT}{$value}}}{10}{1}{0}}
>         condition = ${if >={$spam_score_int}{${lookup pgsql{SQL_SPAMFLT}{$value}}}{1}{0}}
>         add_header = X-Spam-Score: $spam_score ($spam_bar)
>         add_header = X-Spam-Report: $spam_report
>         message = Your message was rejected by recipient preference because it scored $spam_score spam points.


Here's the referenced SQL queries:

> SQL_SPAMFLT = \
>     select spam_filter \
>     from mail_entries \
>     where local || '@' || domain = '${quote_pgsql:$acl_m_rcpt_addr}'
> SQL_SPAMMRK = \
>     select spam_marker \
>     from mail_entries \
>     where local || '@' || domain = '${quote_pgsql:$acl_m_rcpt_addr}'


This adds a marker to the subject and/or rejects the message depending
on the database record. The $acl_m_rcpt_addr value is set in the RCPT
ACL, but it can only be set once. I need another way to know the current
recipient for each recipient.

It's also unclear how the PRDR and DATA ACLs interoperate. I don't
understand what the documentation says about it, it's very vague.

An example for this would be very helpful. I could not find any
configuration info on the web for Exim with PRDR. Looks like nobody uses it.

I want to set this up so that multiple recipients in a single message
can be delivered in one go. Previously, I had to defer all from the
second recipient so that content filtering works properly. This delays
additional recipients by many minutes.

Would this check in the RCPT ACL be correct then?

>     defer
>         message = only one recipient at a time, or use PRDR
>         condition = $prdr_requested
>         condition = ${if def:acl_m_rcpt_addr {1}{0}}


I think the first condition needs to be inverted but how does that work?

-Yves