Das ist ja das Problem..
Wenn ich einen Query auf den mail_acc mache, dann bekomme ich mehrere domaindid's und die erste holt er sich ran.
Es lautet ja ganz klar
Code:
WHERE mail_acc='%n'
Mir ist das erst aufgefallen wo ich das mail.info mir angesehen habe.
Dort sieht man genau das er auf das falsche Verzeichnis (/var/mail/virtual/) und die falsche Quota ausliest.
Richtig müssten die Queries wie folgt lauten:
dovecot-sql-domain.conf
Code:
user_query = SELECT concat('/var/mail/virtual/', domain.domain_name, '/',mail_acc) as home, '1000' as uid, '8' as gid, concat('*:bytes=', quota) AS quota_rule FROM mail_users inner join domain on mail_users.domain_id = domain.domain_id WHERE mail_addr='%u' and (mail_type='normal_mail' OR mail_type='normal_mail,normal_forward');
dovecot-sql-subdomain.conf
Code:
user_query = SELECT concat('/var/mail/virtual/', subdomain.subdomain_name, ".", domain.domain_name, '/',mail_acc) as home, '1000' as uid, '8' as gid, concat('*:bytes=', quota) AS quota_rule FROM (mail_users INNER JOIN subdomain ON mail_users.sub_id = subdomain.subdomain_id) INNER JOIN domain ON mail_users.domain_id = domain.domain_id WHERE mail_addr='%u' and concat(subdomain.subdomain_name,".",domain.domain_name)='%d';
dovecot-sql-aliasdomain.conf
Code:
user_query = SELECT concat('/var/mail/virtual/', domain_aliasses.alias_name, '/',mail_acc) as home, '1000' as uid, '8' as gid, concat('*:bytes=', quota) AS quota_rule FROM (mail_users INNER JOIN domain_aliasses ON mail_users.sub_id = domain_aliasses.alias_id) INNER JOIN domain ON mail_users.domain_id = domain.domain_id WHERE mail_addr='%u' and domain_aliasses.alias_name ='%d';