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.