Hello, list.
I'm using Postfix with one hosted virtual domain and a few
virtual alias domains. All my data is stored in LDAP catalog.
Right now it is a bit tedious to add new virtual alias domain.
I need to map each user in virtual alias domain to corresponding
user in hosted domain (different domains with shared virtual
mailboxes).
Right now I have following virtual setup (no local users):
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_alias_domains = $myhostname, my1aliasdom.ru, my2aliasdom.ru
virtual_alias_maps = ldapl:/etc/postfix/virtual-alias-maps.cf
virtual_mailbox_domains = mydom.ru
virtual_mailbox_maps = ldap:/etc/postfix/virtual-mailbox-maps.cf
My domain object looks like this:
dn: dc=mydom.ru,ou=mail,dc=myorg,dc=ru
objectClass: domain
objectClass: dcObject
dc: mydom.ru
Typical mailbox object looks like this:
dn: uid=user,ou=users,dc=mydom.ru,ou=mail,dc=myorg,dc=ru
...
objectClass: qmailUser
mail: u...@mydom.ru
uid: user
...
Right now if I want to add new alias domain I have to add
to each mailbox object an mailAlternateAddress which is
a left-hand side value of search:
dn: uid=user,ou=users,dc=mydom.ru,ou=mail,dc=myorg,dc=ru
...
objectClass: qmailUser
uid: user
mail: u...@mydom.ru
mailAlternateAddress: u...@mail.mydom.ru
mailAlternateAddress: u...@my1aliasdom.ru
mailAlternateAddress: u...@my2aliasdom.ru
...
In virtual-alias-maps.cf I do following search:
...
search_base = ou=users,dc=mydom.ru,ou=mail,dc=myorg,dc=ru
query_filter =
(&(objectClass=qmailUser)(accountStatus=active)(mailAlternateAddress=%s))
result_attribute = mail
So I maps each user in my1aliasdom.ru to corresponding user in mydom.ru.
It works so far, but it is a bit tedious to maintain data in LDAP.
Each time when i add new alias domain or remove one that exists I have to
modify each mailbox object.
Just to reduce administrative burden, is it possible somehow to just
rewrite virtual alias domain to hosted domain, of course with check
for existing recipients?
Just do not know if I go for canonical maps with PCRE would it be a
good solution for my problem:
# postconf -e 'canonical_maps = pcre:/etc/postfix/canonical'
# cat /etc/postfix/canonical
/^(.*)@mail\.mydom\.ru$/ {$1}@mydom.ru
/^(.*)@my1alias\.ru$/ {$1}@mydom.ru
/^(.*)@my2alias\.ru$/ {$1}@mydom.ru