[Mailman-Users] Postfix and Mailman tips in FAQ have a mistake?

Mark Sapiro mark at msapiro.net
Tue Dec 28 21:08:31 CET 2010


Konstantin Vasilyev wrote:
>Here is requested content
># less virtual_to_transport
>#!/bin/sh
>/usr/bin/sed -E -e 's/(^[^#][^ \t]+[ \t]+).+$/\1local/' $1 >
>/usr/local/mailman/data/transport-mailman
>/usr/local/sbin/postmap /usr/local/mailman/data/transport-mailman
>
[...]
># less virtual-mailman
[...]
># LOOP ADDRESSES START
>mailman-loop at cellnetrix.com     mailman-loop
># LOOP ADDRESSES END
>
># STANZA START: mailman
># CREATED: Mon Dec 27 11:34:25 2010
>mailman at cellnetrix.com              mailman
>mailman-admin at cellnetrix.com        mailman-admin
>mailman-bounces at cellnetrix.com      mailman-bounces
>mailman-confirm at cellnetrix.com      mailman-confirm
>mailman-join at cellnetrix.com         mailman-join
>mailman-leave at cellnetrix.com        mailman-leave
>mailman-owner at cellnetrix.com        mailman-owner
>mailman-request at cellnetrix.com      mailman-request
>mailman-subscribe at cellnetrix.com    mailman-subscribe
>mailman-unsubscribe at cellnetrix.com  mailman-unsubscribe
># STANZA END: mailman
>
># less transport-mailman
[...]
># LOOP ADDRESSES START
>mailman-loop at cellnetlocal
># LOOP ADDRESSES END
>
># STANZA START: mailman
># CREATED: Mon Dec 27 11:34:25 2010
>mailman at cellnetlocal
>mailman-admin at cellnetlocal
>mailman-bounces at cellnetlocal
>mailman-confirm at cellnetlocal
>mailman-join at cellnetlocal
>mailman-leave at cellnetlocal
>mailman-owner at cellnetlocal
>mailman-requestlocal
>mailman-subscribe at cellnetlocal
>mailman-unsubscribe at cellnetlocal
># STANZA END: mailman

It appears that your sed does not recognize the '\t' escape as meaning
a 'tab' character, but rather recognizes it as a literal 't'. This
causes that portion of the pattern in parentheses to be treated as
(^[^#][^ t]+[ t]+) which in turn matches non-comment lines through the
first string of one or more 't' characters instead of matching through
the first string of whitespace. Thus you end up with the above instead
of

# LOOP ADDRESSES START
mailman-loop at cellnetrix.com     local
# LOOP ADDRESSES END

# STANZA START: mailman
# CREATED: Mon Dec 27 11:34:25 2010
mailman at cellnetrix.com              local
mailman-admin at cellnetrix.com        local
mailman-bounces at cellnetrix.com      local
mailman-confirm at cellnetrix.com      local
mailman-join at cellnetrix.com         local
mailman-leave at cellnetrix.com        local
mailman-owner at cellnetrix.com        local
mailman-request at cellnetrix.com      local
mailman-subscribe at cellnetrix.com    local
mailman-unsubscribe at cellnetrix.com  local
# STANZA END: mailman

Fortunately, the whitespace in virtual-mailman is all spaces and no
tabs so you can change the expression in the sed command to

 -e 's/(^[^#][^ ]+[ ]+).+$/\1local/'

(i.e., just drop the two '\t's and it should work.

-- 
Mark Sapiro <mark at msapiro.net>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan



More information about the Mailman-Users mailing list