m4_ifdef(<:_head:$1/$2:>, <:<:##:> m4_indir(<:_head:$1/$2:>)
:>)m4_define(<:_done:$1/$2:>):>):>):>)
+## RENAME_HEADERS_ADD(list)
+##
+## Return a newline-separated list of message header additions of the form
+## X-Distorted-Renamed-HEADER: VALUE
+## for each HEADER in the LIST which appears in the current message, where
+## VALUE is the HEADER's current value.
+m4_define(<:RENAME_HEADERS_ADD:>, <:m4_dnl
+CLRSEP<::>FOREACH(<:\
+ ${if def:h_$:><:1:{X-Distorted-Renamed-$:><:1: $h_$:><:1:\n}}:>,
+ <:$1:>):>)
+
+## RENAME_HEADERS_REMOVE(list)
+##
+## Return the LIST, with items separated by colons.
+m4_define(<:RENAME_HEADERS_REMOVE:>, <:m4_dnl
+CLRSEP<::>FOREACH(<:SEP(:)$:><:1:>, <:$1:>):>)
+
## LOOKUP_DOMAIN(dom, [if-found], [if-not-found])
##
## Look up DOM in the master domains file. If it's found, put the
SECTION(routers, deliver)m4_dnl
## Deliver mail to a user, in the absence of any other instructions.
-m4_define(<:STRIP_HEADERS:>, <:m4_dnl
+m4_define(<:DOVECOT_HEADERS:>, <:m4_dnl
Content-Length, Status, X-IMAP, X-IMAPbase, m4_dnl
X-Keywords, X-Status, X-UID:>)m4_dnl
deliver:
cannot_route_message = Unknown local part
## Strip headers used by Dovecot for its own purposes.
- headers_remove = CLRSEP<::>FOREACH(<:SEP(:)$1:>, <:STRIP_HEADERS:>)
- headers_add = CLRSEP<::>FOREACH(<:\
- ${if def:h_$1:{X-Distorted-Renamed-$1: $h_$1:\n}}:>,
- <:STRIP_HEADERS:>)
+ headers_remove = RENAME_HEADERS_REMOVE(<:DOVECOT_HEADERS:>)
+ headers_add = RENAME_HEADERS_ADD(<:DOVECOT_HEADERS:>)
DIVERT(null)
###----- That's all, folks --------------------------------------------------