I'm trying to get dynamic tagging (user+sometag@example.com) to work on a mail server I'm setting up, however it only works as long as it's sent to the main user and not to aliases.
virtual-alias-maps query: SELECT get_email_alias_dyn('%s') virtual-mailbox-domains query: SELECT 1 FROM domain WHERE name='%s' virtual-mailbox-maps query: SELECT 1 FROM user_alias INNER JOIN domain ON user_alias.domainID = domain.id WHERE user_alias.primary = 1 AND CONCAT(user_alias.name, '@', domain.name)='%s'
"get_email_alias_dyn()" is a stored function which returns the destination email, so alias+tag@example.com returns user@example.com, alias@example.com returns user@example.com and so on.
It works perfectly fine when the mail does not contain any tags (alias@example.com or user@example.com) or if it's the primary email which contains tags (user+sometag@example.com), but when it's tags on an alias the mail is bounced due to "user unknown".
I tried modifying the dovecot service in master.cf so the addresses can be filtered with Sieve (http://wiki2.dovecot.org/LDA/Postfix), but that did not solve the issue either, so I have not idea where it goes wrong or how to solve it.
I have included the logs from when I sent to alias+tag@example.com below:
Oct 25 19:54:20 xx postfix/smtpd[10987]: connect from mail-wg0-f50.google.com[74.125.82.50] Oct 25 19:54:21 xx postfix/smtpd[10987]: 10585DFA63: client=mail-wg0-f50.google.com[74.125.82.50] Oct 25 19:54:21 xx postfix/cleanup[10995]: 10585DFA63: message-id=CAGPeO-YcJwbRJb-Gfga+G_vKqj9cm80rMZf9LAfENRCFfxLVAg@mail.gmail.com Oct 25 19:54:25 xx postfix/qmgr[9945]: 10585DFA63: from=xx@gmail.com, size=1743, nrcpt=1 (queue active) Oct 25 19:54:25 xx postfix/smtpd[10987]: disconnect from mail-wg0-f50.google.com[74.125.82.50] Oct 25 19:54:25 xx dovecot: auth-worker(11000): mysql(127.0.0.1): Connected to database mailcp Oct 25 19:54:25 xx postfix/pipe[10998]: 10585DFA63: to=xx+test@xx.com, relay=dovecot, delay=5.4, delays=5.4/0/0/0.03, dsn=5.1.1, status=bounced (user unknown) Oct 25 19:54:25 xx postfix/cleanup[10995]: D39B2DFC7D: message-id=20141025175425.D39B2DFC7D@xx.com Oct 25 19:54:25 xx postfix/bounce[11002]: 10585DFA63: sender non-delivery notification: D39B2DFC7D Oct 25 19:54:25 xx postfix/qmgr[9945]: D39B2DFC7D: from=<>, size=3937, nrcpt=1 (queue active) Oct 25 19:54:25 xx postfix/qmgr[9945]: 10585DFA63: removed Oct 25 19:54:26 xx postfix/smtp[11004]: D39B2DFC7D: to=xx@gmail.com, relay=gmail-smtp-in.l.google.com[74.125.195.27]:25, delay=0.24, delays=0/0/0.16/0.07, dsn=2.0.0, status=sent (250 2.0.0 OK 1414259666 d8si5463492wiv.41 - gsmtp) Oct 25 19:54:26 xx postfix/qmgr[9945]: D39B2DFC7D: removed
The dovecot-sql.conf.ext file looks like this:
driver = mysql connect = host=127.0.0.1 dbname=mailcp user=mailcp password=xxx default_pass_scheme = SHA512-CRYPT password_query = SELECT CONCAT(user_alias.name, '@', domain.name) as user, user.password as password, concat('*:bytes=', (CASE WHEN user.quota -1 THEN user.quota ELSE domain.quota END)*1000000) AS userdb_quota_rule FROM user INNER JOIN user_alias ON user.id = user_alias.userID AND user_alias.primary = 1 INNER JOIN domain ON user_alias.domainID = domain.id WHERE CONCAT(user_alias.name, '@', domain.name) ='%u' AND user.status = 1 user_query = SELECT CONCAT('/var/mail/vmail/', domain.name, '/', user_alias.name) as home, 5000 AS uid, 5000 AS gid, concat('*:bytes=', (CASE WHEN user.quota != -1 THEN user.quota ELSE domain.quota END)*1000000) AS userdb_quota_rule FROM user INNER JOIN user_alias ON user.id = user_alias.userID AND user_alias.primary = 1 INNER JOIN domain ON user_alias.domainID = domain.id WHERE CONCAT(user_alias.name, '@', domain.name) ='%u' AND user.status = 1