Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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