def ldif_maildomain( domain, cn=None, mtaTransport=settings.default_mta_transport, enabledService=['mail'], ): domain = web.safestr(domain).lower() minPasswordLength = settings.min_passwd_length ldif = [ ('objectClass', ['mailDomain']), ('domainName', [domain]), ('mtaTransport', [mtaTransport]), ('accountStatus', ['active']), ('enabledService', enabledService), ('accountSetting', ['minPasswordLength:%s' % minPasswordLength]), ] ldif += ldaputils.get_ldif_of_attr( attr='cn', value=cn, default=domain, ) return ldif
def ldif_mailadmin(mail, passwd, cn, preferredLanguage='en_US', domainGlobalAdmin='no'): mail = web.safestr(mail).lower() ldif = [ ('objectClass', ['mailAdmin']), ('mail', [mail]), ('userPassword', [str(passwd)]), ('accountStatus', ['active']), ('preferredLanguage', [web.safestr(preferredLanguage)]), ('domainGlobalAdmin', [web.safestr(domainGlobalAdmin)]), ] ldif += ldaputils.get_ldif_of_attr(attr='cn', value=cn, default=mail.split('@', 1)[0],) return ldif
def ldif_mailadmin(mail, passwd, cn, preferredLanguage='en_US', domainGlobalAdmin='no'): mail = web.safestr(mail).lower() ldif = [('objectClass', ['mailAdmin']), ('mail', [mail]), ('userPassword', [str(passwd)]), ('accountStatus', ['active']), ('preferredLanguage', [web.safestr(preferredLanguage)]), ('domainGlobalAdmin', [web.safestr(domainGlobalAdmin)])] ldif += ldaputils.get_ldif_of_attr(attr='cn', value=cn, default=mail.split('@', 1)[0]) return ldif
def ldif_maildomain(domain, cn=None, mtaTransport=settings.default_mta_transport, enabledService=['mail'], ): domain = web.safestr(domain).lower() minPasswordLength = settings.min_passwd_length ldif = [ ('objectClass', ['mailDomain']), ('domainName', [domain]), ('mtaTransport', [mtaTransport]), ('accountStatus', ['active']), ('enabledService', enabledService), ('accountSetting', ['minPasswordLength:%s' % minPasswordLength]), ] ldif += ldaputils.get_ldif_of_attr(attr='cn', value=cn, default=domain,) return ldif
def ldif_mailuser(domain, username, cn, passwd, quota=0, aliasDomains=None, groups=None, storageBaseDirectory=None, mailbox_format=None): domain = str(domain).lower() username = str(username).strip().replace(' ', '').lower() mail = username + '@' + domain if storageBaseDirectory is None: tmpStorageBaseDirectory = settings.storage_base_directory.lower() else: tmpStorageBaseDirectory = storageBaseDirectory splitedSBD = tmpStorageBaseDirectory.rstrip('/').split('/') storageNode = splitedSBD.pop() storageBaseDirectory = '/'.join(splitedSBD) mailMessageStore = storageNode + '/' + iredutils.generate_maildir_path( mail) homeDirectory = storageBaseDirectory + '/' + mailMessageStore # Generate basic LDIF. ldif = [ ('objectClass', ['inetOrgPerson', 'mailUser', 'shadowAccount', 'amavisAccount']), ('mail', [mail]), ('userPassword', [str(passwd)]), ('sn', [username]), ('uid', [username]), ('storageBaseDirectory', [storageBaseDirectory]), ('mailMessageStore', [mailMessageStore]), ('homeDirectory', [homeDirectory]), ('accountStatus', ['active']), ( 'enabledService', [ 'mail', 'deliver', 'lda', 'lmtp', 'smtp', 'smtpsecured', 'pop3', 'pop3secured', 'pop3tls', 'imap', 'imapsecured', 'imaptls', 'managesieve', 'managesievesecured', 'sogo', # ManageService name In dovecot-1.2. 'sieve', 'sievesecured', 'forward', 'senderbcc', 'recipientbcc', 'internal', 'lib-storage', 'indexer-worker', 'doveadm', 'dsync', 'shadowaddress', 'displayedInGlobalAddressBook' ]), # shadowAccount integration. ('shadowLastChange', ['0']), # Amavisd integration. ('amavisLocal', ['TRUE']) ] # Append `shadowAddress` if aliasDomains: _shadowAddresses = [ username + '@' + d for d in aliasDomains if iredutils.is_domain(d) ] ldif += [('shadowAddress', _shadowAddresses)] # Append quota. No 'mailQuota' attribute means unlimited. quota = str(quota).strip() if quota.isdigit(): quota = int(quota) * 1024 * 1024 ldif += [('mailQuota', [str(quota)])] # Append mailbox format. if not mailbox_format: mailbox_format = settings.MAILBOX_FORMAT ldif += [('mailboxFormat', [str(mailbox_format)])] # Append cn. ldif += ldaputils.get_ldif_of_attr(attr='cn', value=cn, default=username) # Append groups. if groups and isinstance(groups, list): # Remove duplicate items. grps = [str(g).strip() for g in groups] ldif += [('memberOfGroup', list(set(grps)))] return ldif
def ldif_mailuser(domain, username, cn, passwd, quota=0, aliasDomains=[], groups=[], storageBaseDirectory=None, ): domain = str(domain).lower() username = str(username).strip().replace(' ', '').lower() mail = username + '@' + domain if storageBaseDirectory is None: tmpStorageBaseDirectory = settings.storage_base_directory.lower() else: tmpStorageBaseDirectory = storageBaseDirectory splitedSBD = tmpStorageBaseDirectory.rstrip('/').split('/') storageNode = splitedSBD.pop() storageBaseDirectory = '/'.join(splitedSBD) mailMessageStore = storageNode + '/' + iredutils.generate_maildir_path(mail) homeDirectory = storageBaseDirectory + '/' + mailMessageStore # Generate basic LDIF. ldif = [ ('objectClass', ['inetOrgPerson', 'mailUser', 'shadowAccount', 'amavisAccount', ]), ('mail', [mail]), ('userPassword', [str(passwd)]), ('sn', [username]), ('uid', [username]), ('storageBaseDirectory', [storageBaseDirectory]), ('mailMessageStore', [mailMessageStore]), ('homeDirectory', [homeDirectory]), ('accountStatus', ['active']), ('enabledService', ['mail', 'deliver', 'lda', 'lmtp', 'smtp', 'smtpsecured', 'pop3', 'pop3secured', 'imap', 'imapsecured', 'managesieve', 'managesievesecured', # ManageService name In dovecot-1.2. 'sieve', 'sievesecured', 'forward', 'senderbcc', 'recipientbcc', 'internal', 'lib-storage', 'indexer-worker', 'doveadm', 'dsync', 'shadowaddress', 'displayedInGlobalAddressBook', ] ), # shadowAccount integration. ('shadowLastChange', ['0']), # Amavisd integration. ('amavisLocal', ['TRUE']), ] # Append @shadowAddress. shadowAddresses = [] for d in aliasDomains: if iredutils.is_domain(d): shadowAddresses += [username + '@' + d] if len(shadowAddresses) > 0: ldif += [('shadowAddress', shadowAddresses)] # Append quota. No 'mailQuota' attribute means unlimited. quota = str(quota).strip() if quota.isdigit(): quota = int(quota) * 1024 * 1024 ldif += [('mailQuota', [str(quota)])] # Append cn. ldif += ldaputils.get_ldif_of_attr(attr='cn', value=cn, default=username,) # Append groups. if isinstance(groups, list) and len(groups) >= 1: # Remove duplicate items. grps = set() for g in groups: grps.update([str(g).strip()]) ldif += [('memberOfGroup', list(grps))] return ldif