I'm trying to get dynamic tagging (user+some...@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+...@example.com returns u...@example.com,
al...@example.com returns u...@example.com and so on.
It works perfectly fine when the mail does not contain any tags
(al...@example.com or u...@example.com) or if it's the primary email
which contains tags (user+some...@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+...@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_vkqj9cm80rmzf9lafenrcffxl...@mail.gmail.com>
Oct 25 19:54:25 xx postfix/qmgr[9945]: 10585DFA63: from=<x...@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+t...@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.d39b2df...@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=<x...@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