mysql_virtual_sender_acl.cf.j2 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. user = {{ DBUSER }}
  2. password = {{ DBPASS }}
  3. hosts = unix:/var/run/mysqld/mysqld.sock
  4. dbname = {{ DBNAME }}
  5. # First select queries domain and alias_domain to determine if domains are active.
  6. query = SELECT goto FROM alias
  7. WHERE id IN (
  8. SELECT COALESCE (
  9. (
  10. SELECT id FROM alias
  11. WHERE address='%s'
  12. AND (active='1' OR active='2')
  13. ), (
  14. SELECT id FROM alias
  15. WHERE address='@%d'
  16. AND (active='1' OR active='2')
  17. )
  18. )
  19. )
  20. AND active='1'
  21. AND (domain IN
  22. (SELECT domain FROM domain
  23. WHERE domain='%d'
  24. AND active='1')
  25. OR domain in (
  26. SELECT alias_domain FROM alias_domain
  27. WHERE alias_domain='%d'
  28. AND active='1'
  29. )
  30. )
  31. UNION
  32. SELECT logged_in_as FROM sender_acl
  33. WHERE send_as='@%d'
  34. OR send_as='%s'
  35. OR send_as='*'
  36. OR send_as IN (
  37. SELECT CONCAT('@',target_domain) FROM alias_domain
  38. WHERE alias_domain = '%d')
  39. OR send_as IN (
  40. SELECT CONCAT('%u','@',target_domain) FROM alias_domain
  41. WHERE alias_domain = '%d')
  42. AND logged_in_as NOT IN (
  43. SELECT goto FROM alias
  44. WHERE address='%s')
  45. UNION
  46. SELECT username FROM mailbox, alias_domain
  47. WHERE alias_domain.alias_domain = '%d'
  48. AND mailbox.username = CONCAT('%u','@',alias_domain.target_domain)
  49. AND (mailbox.active = '1' OR mailbox.active ='2')
  50. AND alias_domain.active='1';