diff --git a/data/templates/slapd/mailserver.schema b/data/templates/slapd/mailserver.schema index 23d0d24bd..432dd1934 100644 --- a/data/templates/slapd/mailserver.schema +++ b/data/templates/slapd/mailserver.schema @@ -86,3 +86,10 @@ objectclass ( 1.3.6.1.4.1.40328.1.1.2.3 DESC 'Mail Group' MUST ( mail ) ) + +# Mail Alias Objectclass +objectclass ( 1.3.6.1.4.1.40328.1.2.4.4 + NAME 'mailAlias' + SUP top + STRUCTURAL + ) diff --git a/locales/en.json b/locales/en.json index 4cd1e85cc..b34245770 100644 --- a/locales/en.json +++ b/locales/en.json @@ -239,9 +239,9 @@ "yunohost_installing": "Installing YunoHost...", "yunohost_not_installed": "YunoHost is not or not correctly installed. Please execute 'yunohost tools postinstall'.", "ask_alias_name" : "Alias name", - "ask_alias_mailforward" : "List of email to forward", + "ask_alias_mailforward" : "List of email addresses to forward to", "pattern_listemail" : "Must be a valid email address list delimited by commas", - "pattern_name" : "Must be a valid name", + "alias_init" : "Initializing aliases in LDAP", "alias_created" : "Alias successfully created", "alias_creation_failed" : "Unable to create alias", "alias_deletion_failed" : "Unable to delete alias", diff --git a/src/yunohost/alias.py b/src/yunohost/alias.py index 25ead18b3..01a6281bd 100644 --- a/src/yunohost/alias.py +++ b/src/yunohost/alias.py @@ -62,7 +62,7 @@ def alias_list(auth, fields=None, filter=None, limit=None, offset=None): if limit is None: limit = 1000 if filter is None: - filter = '(&(objectclass=mailAccount)(!(uid=root))(!(uid=nobody)))' + filter = '(&(objectclass=mailAccount)(objectclass=mailAlias))' if fields: keys = alias_attrs.keys() for attr in fields: @@ -101,7 +101,6 @@ def alias_create(auth, alias, mailforward): # Validate uniqueness of alias and mail in LDAP auth.validate_uniqueness({ - 'uid' : alias, 'mail' : alias }) @@ -112,10 +111,9 @@ def alias_create(auth, alias, mailforward): alias[alias.find('@')+1:])) # Adapt values for LDAP - rdn = 'uid=%s,ou=aliases' % alias + rdn = 'mail=%s,ou=aliases' % alias attr_dict = { - 'objectClass' : ['mailAccount'], - 'uid' : alias, + 'objectClass' : ['mailAccount', 'mailAlias'], 'mail' : alias } @@ -137,7 +135,7 @@ def alias_delete(auth, alias): """ - if auth.remove('uid=%s,ou=aliases' % alias): + if auth.remove('mail=%s,ou=aliases' % alias): pass else: raise MoulinetteError(169, m18n.n('alias_deletion_failed')) @@ -154,13 +152,14 @@ def alias_info(auth, alias): """ alias_attrs = [ - 'mail', 'uid', 'maildrop' + 'mail', 'maildrop' ] if len(alias.split('@')) is 2: filter = 'mail=' + alias else: - filter = 'uid=' + alias + # TODO better exception + raise MoulinetteError(167, m18n.n('alias_info_failed')) result = auth.search('ou=aliases,dc=yunohost,dc=org', filter, alias_attrs)