Re: [exim] interface and greylistning

Top Page
Delete this message
Reply to this message
Author: Jasen Betts
Date:  
To: exim-users
Subject: Re: [exim] interface and greylistning
On 2022-11-21, Laura Williamson via Exim-users <exim-users@???> wrote:
> Have a bit of an issue. When sending out emails out exim select an
> interface like this
>
> interface = ${lookup sqlite {SQLITE_Q_USERINTERFACE select ip from
> interface where active='Y' order by random() limit 1}{$value}}
> helo_data = ${lookup
> dnsdb{ptr=$sending_ip_address}{$value}{$primary_hostname}}
>
> Which works perfectly fine, however, if the server we send to has
> greylisting it will try again but every time it will select a new
> interface IP and therefore might get greylisted again (as the IP now is
> different), is there a way around this?


don't use random, use somethign repeatable instead eg:

   ${listextract{${eval:1+(${base62d:${substr_14_2:$message_exim_id}}%5)}}{\
    10.0.0.1:10.0.0.2:10.0.0.3:10.0.0.4:10.0.0.5}{$value}{10.0.0.1}}


Here the feactional-seconds part of $message_exim_id is used as a
repeatable pseudo-random number. the range is (0..499)

you can possibly use the sha1 function to get repeatable pseudo-random
values by salting the ip-address with the exim-id of the message.

 interface = ${lookup sqlite {SQLITE_Q_USERINTERFACE select ip from \
     interface where active='Y' \
     order by sha1(ip || '${quote_sqlite:$message_exim_id}' ) \
     limit 1}{$value}}


--
Jasen.