On 2021-11-04 11:20, Viktor Dukhovni wrote:
On Thu, Nov 04, 2021 at 10:52:03AM -0700, sru...@gemneye.org wrote:

In main.cf I have:

sender_canonical_classes = envelope_sender
sender_canonical_maps = pcre:/etc/postfix/generic-pcre

In /etc/postfix/generic-pcre I have:

/^(.*)@(\w+).([.\w]+)/ ${1}+${2}@other.domain

This rule is sloppy, fails to handle recursion, and does not handle
valid labels with hyphens.  In a regular expression, when you mean to
match a "." write either "\." or "[.]", but never just ".".  Regular
expressions are fragile, don't wing it.

Instead use:

    # Presumably this is internal only, and never butchers external
    # envelope sender addresses.  Perhaps mention why it is OK to lop
    # off the parent domain suffix of the original sender domain...
    #
# This only matches valid multi-label DNS names. What should happen
    # with invalid forms (e.g., <user@foo.-bar>, <user@-foo+bar.net>)?
    #
    if !/@other\.domain$/
    /^(.*)@([a-z0-9](-*[a-z0-9]+)*)\.[a-z0-9]/ ${1}+${2}@other.domain
    endif

Thank you for the reply. Let me take a looks at this. For sure, my regular expressions knowledge is extremely limited at best. Appreciate the feedback.


As documented, canonical rewriting is recursive.

Reply via email to