From a28833b162928c9ea6f2eba6e4956684f7972828 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Sun, 24 Aug 2014 14:30:58 +0200 Subject: [PATCH] New map file. see #599 --- doc/getting_started/upgrade.rst | 11 +++++++++++ doc/integration/imap_and_smtp.rst | 1 + modoboa/core/commands/postfix_maps.py | 7 +++++++ modoboa/extensions/admin/lib.py | 2 +- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/getting_started/upgrade.rst b/doc/getting_started/upgrade.rst index fb1643141..db1d0ec6b 100644 --- a/doc/getting_started/upgrade.rst +++ b/doc/getting_started/upgrade.rst @@ -48,6 +48,17 @@ Finally, follow the common procedure:: $ python manage.py syncdb --migrate $ python manage.py collectstatic +1.1.6: Few bugfixes +=================== + +Catchall aliases were not really functional until this version as they +were eating all domain traffic. + +To fix them, a postfix map file (``sql-mailboxes-self-aliases.cf``) +has been re-introduced and must be listed into the +``virtual_alias_maps`` setting. See :ref:`postfix_config` for the +order. + 1.1.2: Audit trail issues ========================= diff --git a/doc/integration/imap_and_smtp.rst b/doc/integration/imap_and_smtp.rst index 4412a851e..345077d0b 100644 --- a/doc/integration/imap_and_smtp.rst +++ b/doc/integration/imap_and_smtp.rst @@ -443,6 +443,7 @@ Use the following configuration in the :file:`/etc/postfix/main.cf` file virtual_alias_domains = :/etc/postfix/sql-domain-aliases.cf virtual_alias_maps = :/etc/postfix/sql-aliases.cf, :/etc/postfix/sql-domain-aliases-mailboxes.cf, + :/etc/postfix/sql-mailboxes-self-aliases.cf, :/etc/postfix/sql-catchall-aliases.cf smtpd_recipient_restrictions = diff --git a/modoboa/core/commands/postfix_maps.py b/modoboa/core/commands/postfix_maps.py index 5ac75ce8a..964731b37 100644 --- a/modoboa/core/commands/postfix_maps.py +++ b/modoboa/core/commands/postfix_maps.py @@ -118,6 +118,13 @@ class DomainAliasesMailboxesMap(MapFile): sqlite = "(SELECT mb.address || '@' || dom.name FROM admin_domainalias domal INNER JOIN admin_domain dom ON domal.target_id=dom.id INNER JOIN admin_mailbox mb ON mb.domain_id=dom.id WHERE domal.name='%d' AND dom.enabled=1 AND mb.address='%u') UNION (SELECT al.address || '@' || dom.name FROM admin_domainalias domal INNER JOIN admin_domain dom ON domal.target_id=dom.id INNER JOIN admin_alias al ON al.domain_id=dom.id WHERE domal.name='%d' AND dom.enabled=1 AND al.address='%u')" +class MailboxesSelfAliasesMap(MapFile): + filename = "sql-mailboxes-self-aliases.cf" + mysql = "SELECT email FROM core_user u INNER JOIN admin_mailbox mb ON mb.user_id=u.id WHERE u.email='%s' AND u.is_active=1" + postgres = "SELECT email FROM core_user u INNER JOIN admin_mailbox mb ON mb.user_id=u.id WHERE u.email='%s' AND u.is_active" + sqlite = "SELECT email FROM core_user u INNER JOIN admin_mailbox mb ON mb.user_id=u.id WHERE u.email='%s' AND u.is_active=1" + + class CatchallAliasesMap(MapFile): filename = 'sql-catchall-aliases.cf' mysql = "(SELECT concat(mb.address, '@', dom.name) FROM admin_mailbox mb INNER JOIN admin_domain dom ON mb.domain_id=dom.id WHERE mb.id IN (SELECT al_mb.mailbox_id FROM admin_alias al INNER JOIN admin_domain dom ON al.domain_id=dom.id INNER JOIN admin_alias_mboxes al_mb ON al.id=al_mb.alias_id WHERE al.enabled=1 AND al.address='*' AND dom.name='%d' AND dom.enabled=1)) UNION (SELECT al.extmboxes FROM admin_alias al INNER JOIN admin_domain dom ON al.domain_id=dom.id WHERE al.enabled='1' AND al.extmboxes<>'' AND al.address='*' AND dom.name='%d' AND dom.enabled=1)" diff --git a/modoboa/extensions/admin/lib.py b/modoboa/extensions/admin/lib.py index d1634f69f..5d0bc2ed5 100644 --- a/modoboa/extensions/admin/lib.py +++ b/modoboa/extensions/admin/lib.py @@ -10,7 +10,7 @@ from modoboa.lib import parameters, events from modoboa.lib.exceptions import PermDeniedException from modoboa.lib.emailutils import split_mailbox from modoboa.extensions.admin.models import ( - Domain, DomainAlias, Alias + Domain, Alias )