.ifdef SRS # This exim config fragment is currently untested, but it lays # out approximately how one might go about setting up SRS in exim. # A redirect router which catches all SRS bounces. It requests an # address translation from the SRS daemon. The exim rule does NOT # have caseful_local_part because we want the local_part_prefix to # match caselessly. Exim will preserve case when passing requests # to the daemon. srs_bounce: driver = redirect allow_fail local_part_prefix = srs0+ : srs0- : srs0= : srs1+ : srs1- : srs1= address_data = ${readsocket{/tmp/srsd}\ {REVERSE $local_part@$domain\n}\ {5s}{\n}{:fail: SRS daemon failure}} data = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data} no_verify # Ideally, we want this only to match forwarded mail. Currently, it # matches only mail sourced nonlocally. srs_forward: senders = ! : ! *@+local_domains : ! *@+virtual_domains address_data = ${readsocket{/tmp/srsd}\ {FORWARD $sender_address_local_part@$sender_address_domain $primary_hostname\n}\ {5s}{\n}{:fail: SRS daemon failure}} errors_to = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data} headers_add = "X-SRS-Rewrite: Sender address rewritten from <$sender_address> by $primary_hostname." driver = redirect data = ${quote_local_part:$local_part}@$domain # Alternatively, we may simply be able to use the following # rewriting rules: # #^(?i:srs0[-+=]) ${readsocket{/tmp/srsd}{REVERSE $0\n}{5s}{\n}\ # {:fail: SRS daemon failure}} T #^(?i:srs1[-+=]) ${readsocket{/tmp/srsd}{REVERSE $0\n}{5s}{\n}\ # {:fail: SRS daemon failure}} T #* ${readsocket{/tmp/srsd}{FORWARD $0 SRSDOMAIN}{5s}{\n}\ # {:fail: SRS daemon failure}} F .endif // SRS