diff options
-rw-r--r-- | pykolab/setup/setup_mta.py | 37 | ||||
-rw-r--r-- | share/templates/imapd.conf.tpl | 1 |
2 files changed, 35 insertions, 3 deletions
diff --git a/pykolab/setup/setup_mta.py b/pykolab/setup/setup_mta.py index 35df4fb..d50217f 100644 --- a/pykolab/setup/setup_mta.py +++ b/pykolab/setup/setup_mta.py @@ -52,6 +52,8 @@ def execute(*args, **kw): resource_filter = conf.get('ldap', 'resource_filter') + sharedfolder_filter = conf.get('ldap', 'sharedfolder_filter') + server_host = utils.parse_ldap_uri(conf.get('ldap', 'ldap_uri'))[1] files = { @@ -67,7 +69,7 @@ domain = ldap:/etc/postfix/ldap/mydestination.cf bind_dn = %(service_bind_dn)s bind_pw = %(service_bind_pw)s -query_filter = (&(|(mail=%%s)(alias=%%s))(|%(kolab_user_filter)s%(kolab_group_filter)s%(resource_filter)s)) +query_filter = (&(|(mail=%%s)(alias=%%s))(|%(kolab_user_filter)s%(kolab_group_filter)s%(resource_filter)s%(sharedfolder_filter)s)) result_attribute = mail """ % { "base_dn": conf.get('ldap', 'base_dn'), @@ -77,6 +79,7 @@ result_attribute = mail "kolab_user_filter": user_filter, "kolab_group_filter": group_filter, "resource_filter": resource_filter, + "sharedfolder_filter": sharedfolder_filter, }, "/etc/postfix/ldap/mydestination.cf": """ server_host = %(server_host)s @@ -189,6 +192,27 @@ result_attribute = mail "service_bind_dn": conf.get('ldap', 'service_bind_dn'), "service_bind_pw": conf.get('ldap', 'service_bind_pw'), }, + "/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf": """ +server_host = %(server_host)s +server_port = 389 +version = 3 +search_base = %(base_dn)s +scope = sub + +domain = ldap:/etc/postfix/ldap/mydestination.cf + +bind_dn = %(service_bind_dn)s +bind_pw = %(service_bind_pw)s + +query_filter = (&(|(mail=%%s)(alias=%%s))(objectclass=kolabsharedfolder)) +result_attribute = kolabtargetfolder +result_format = shared+%%s +""" % { + "base_dn": conf.get('ldap', 'base_dn'), + "server_host": server_host, + "service_bind_dn": conf.get('ldap', 'service_bind_dn'), + "service_bind_pw": conf.get('ldap', 'service_bind_pw'), + }, } if not os.path.isdir('/etc/postfix/ldap'): @@ -199,12 +223,19 @@ result_attribute = mail fp.write(files[filename]) fp.close() + fp = open('/etc/postfix/transport', 'a') + fp.write("\n# Shared Folder Delivery for %(domain)s:\nshared@%(domain)s\t\tlmtp:unix:/var/lib/imap/socket/lmtp\n" % {'domain': conf.get('kolab', 'primary_domain')}) + fp.close() + + subprocess.call(["postmap", "/etc/postfix/transport"]) + postfix_main_settings = { "inet_interfaces": "all", + "recipient_delimiter": "+", "local_recipient_maps": "ldap:/etc/postfix/ldap/local_recipient_maps.cf", "mydestination": "ldap:/etc/postfix/ldap/mydestination.cf", - "transport_maps": "ldap:/etc/postfix/ldap/transport_maps.cf", - "virtual_alias_maps": "$alias_maps, ldap:/etc/postfix/ldap/virtual_alias_maps.cf, ldap:/etc/postfix/ldap/mailenabled_distgroups.cf, ldap:/etc/postfix/ldap/mailenabled_dynamic_distgroups.cf", + "transport_maps": "ldap:/etc/postfix/ldap/transport_maps.cf, hash:/etc/postfix/transport", + "virtual_alias_maps": "$alias_maps, ldap:/etc/postfix/ldap/virtual_alias_maps.cf, ldap:/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf, ldap:/etc/postfix/ldap/mailenabled_distgroups.cf, ldap:/etc/postfix/ldap/mailenabled_dynamic_distgroups.cf", "smtpd_tls_auth_only": "yes", "smtpd_sasl_auth_enable": "yes", "smtpd_sender_login_maps": "$relay_recipient_maps", diff --git a/share/templates/imapd.conf.tpl b/share/templates/imapd.conf.tpl index 8d4e30b..4da3341 100644 --- a/share/templates/imapd.conf.tpl +++ b/share/templates/imapd.conf.tpl @@ -48,3 +48,4 @@ deletedprefix: DELETED delete_mode: delayed expunge_mode: delayed flushseenstate: 1 +postuser: shared |