Debugging address_data

Peter Thomassen via Exim-users <[email protected]>
Newsgroups gmane.mail.exim.user
Organization a4a GmbH
Message-ID <[email protected]>
Hi,

I have the following router:

srs_forward:
   debug_print = "R: srs_forward for $local_part@$domain"
   no_verify
   senders = ! : ! *@+local_domains
   address_data = ${readsocket{/tmp/srsd}\
                 {FORWARD $sender_address_local_part@$sender_address_domain $primary_hostname\n}\
                                         {5s}{\n}{:defer: SRS daemon failure}}
   errors_to = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data}
   headers_add = "X-SRS: Sender address rewritten from <$sender_address> to <${quote_local_part:${local_part:$address_data}}@${domain:$address_data}> by $primary_hostname."
   driver = redirect
   repeat_use = false
   allow_defer
   data = ${quote_local_part:$local_part}@$domain

... where /tmp/srsd relates to srsd from Ubuntu's srs package.

I find that Return-path rewrite does not work. The added X-SRS header contains the expression

	<${quote_local_part:${local_part:$address_data}}@${domain:$address_data}>

which, in actual email, expands to: <""@>

This is since I upgraded to Ubuntu 24.04. The problem did not occur with Ubuntu 22.04.


One reason this can happen is when $address_data does not contain the expected address (tested here using CLI string expansion, where I expect this variable to be empty):

Debian-exim@mail:~$ exim4 -be
> ${quote_local_part:${local_part:$address_data}}@${domain:$address_data}
""@

As the result is not a valid address, errors_to presumably has no effect.

So I suspected the that the socket lookup is not working, but actually is does:

Debian-exim@mail:~$ exim4 -be
> ${readsocket{/tmp/srsd}{FORWARD [email protected] $primary_hostname\n}{5s}{\n}{:defer: SRS daemon failure}}
[email protected]

Feeding this back into the other expansion test, the result is as expected:

Debian-exim@mail:~$ exim4 -be
> ${quote_local_part:${local_part:[email protected]}}@${domain:[email protected]}
[email protected]

So, the question is: why does $address_data appear to be not filled?

(The socket lookup returns an extra newline, which I suspected to be at fault. However, if I add newlines manually in the last expansion test, they don't hurt. I also tried replacing them with spaces via the 4th argument of readsocket{}, but that made no difference.)

Thanks for any help!

Best,
Peter

PS: I know that srs_encode is now available, https://www.exim.org/exim-html-current/doc/html/spec_html/ch-dkim_spf_srs_and_dmarc.html#SECTSRS. But I'd still like to understand what's wrong with my config / why it stopped working.

-- 
## subscription configuration (requires account):
##   https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
##   [email protected]
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.