One approach to handling virtual domains is to use a separate Mailman installation for each virtual domain. Currently, this is the only way to have lists with the same name in different virtual domains handled by the same machine.
In this case, the MAILMAN_HOME and MAILMAN_WRAP macros are useless - you can remove them. Change your director (router) to something like this:
require_files = /virtual/${domain}/mailman/lists/${lc:$local_part}/config.pck
and change your transport like this:
command = /virtual/${domain}/mailman/mail/mailman \ ${if def:local_part_suffix \ {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} {post}} \ $local_part current_directory = /virtual/${domain}/mailman home_directory = /virtual/${domain}/mailman