В postfixadmin есть возможность создавать алиасы доменов, но exim и dovecot c таблицей alias_domain не общаются (пока) и соотв. user@aliasdomain.ru для них не существует.
Вот как они проверяют наличие пользователя в базе сейчас:
dovecot
Код: Выделить всё
password_query = SELECT password, concat('*:bytes=', quota) as userdb_quota_rule FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/var/mail/exim/',LCASE(`maildir`)) as home, 26 AS uid, 26 AS gid, concat('*:bytes=',CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE
username = '%u' AND active = '1'
Код: Выделить всё
map {
pattern = priv/quota/storage
table = quota2
username_field = username
value_field = bytes
}
map {
pattern = priv/quota/messages
table = quota2
username_field = username
value_field = messages
}
Код: Выделить всё
GET_QUOTA=${lookup mysql{SELECT `maxquota` FROM `domain` \
WHERE domain='${quote_mysql:$domain}'}{${value}M}}
MAILDIR_SIZE=${lookup mysql{SELECT `bytes` FROM `quota_domain` \
WHERE domain='${quote_mysql:$domain}'}}
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}
virtual_user_quota_defer:
driver = redirect
domains = +local_domains
condition = ${if and{{>{GET_QUOTA}{0}}{>={MAILDIR_SIZE}{GET_QUOTA}}}}
data = :fail: Domain over quota!
verify_sender = false
allow_fail
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM \
`alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery
Единственное что нарыл, это для dovecot:
Код: Выделить всё
password_query = SELECT DISTINCT mb.username as user, mb.password AS password, concat('/usr/local/mail/domains/', mb.maildir) as userdb_home, concat('maildir:/usr/local/mail/domains/', mb.maildir) as userdb_mail, FROM mailbox mb LEFT JOIN alias_domain ad ON mb.domain = ad.target_domain AND ad.active = 1 WHERE ((mb.username = '%u') OR (mb.local_part = '%n' AND ad.alias_domain = '%d')) AND mb.active = 1Думаю насчет создания view в mysql, но может у кого есть рабочее и элегантное решение?
