def execute(*args, **kw): """ Transfer mailbox """ if len(conf.cli_args) > 1: mailfolder = conf.cli_args.pop(0) target_server = conf.cli_args.pop(0) if len(conf.cli_args) > 0: target_partition = conf.cli_args.pop(0) imap = IMAP() imap.connect() mbox_parts = imap.parse_mailfolder(mailfolder) if mbox_parts['domain'] == None: domain = conf.get('kolab', 'primary_domain') user_identifier = mbox_parts['path_parts'][1] else: domain = mbox_parts['domain'] user_identifier = "%s@%s" % (mbox_parts['path_parts'][1], mbox_parts['domain']) auth = Auth(domain=domain) auth.connect() user = auth.find_recipient(user_identifier) source_server = imap.user_mailbox_server(mailfolder) imap.connect(server=source_server) imap.imap.xfer(mailfolder, target_server) if not user == None and not len(user) < 1: auth.set_entry_attributes(domain, user, {'mailhost': target_server})
def execute(*args, **kw): try: primary_rcpt_address = conf.cli_args.pop(0) try: secondary_rcpt_address = conf.cli_args.pop(0) except: print >> sys.stderr, _("Specify the (new) alias address") sys.exit(1) except: print >> sys.stderr, _("Specify the existing recipient address") sys.exit(1) if len(primary_rcpt_address.split('@')) > 1: primary_rcpt_domain = primary_rcpt_address.split('@')[-1] else: primary_rcpt_domain = conf.get('kolab', 'primary_domain') auth = Auth(domain=primary_rcpt_domain) domains = auth.list_domains() #print domains if len(secondary_rcpt_address.split('@')) > 1: secondary_rcpt_domain = secondary_rcpt_address.split('@')[-1] else: secondary_rcpt_domain = conf.get('kolab', 'primary_domain') # Check if either is in fact a domain if not primary_rcpt_domain.lower() in domains.keys(): print >> sys.stderr, _("Domain %r is not a local domain") % ( primary_rcpt_domain) sys.exit(1) if not secondary_rcpt_domain.lower() in domains.keys(): print >> sys.stderr, _("Domain %r is not a local domain") % ( secondary_rcpt_domain) sys.exit(1) if not primary_rcpt_domain == secondary_rcpt_domain: if not domains[primary_rcpt_domain] == domains[secondary_rcpt_domain]: print >> sys.stderr, _( "Primary and secondary domain do not have the same parent domain" ) sys.exit(1) primary_recipient_dn = auth.find_recipient(primary_rcpt_address) if primary_recipient_dn == [] or len(primary_recipient_dn) == 0: print >> sys.stderr, _("No such recipient %r") % (primary_rcpt_address) sys.exit(1) secondary_recipient_dn = auth.find_recipient(secondary_rcpt_address) if not secondary_recipient_dn == [] and not len( secondary_recipient_dn) == 0: print >> sys.stderr, _("Recipient for alias %r already exists") % ( secondary_rcpt_address) sys.exit(1) rcpt_attrs = conf.get_list('ldap', 'mail_attributes') primary_rcpt_attr = rcpt_attrs[0] if len(rcpt_attrs) >= 2: secondary_rcpt_attr = rcpt_attrs[1] else: print >> sys.stderr, _("Environment is not configured for " + \ "users to hold secondary mail attributes") sys.exit(1) primary_recipient = auth.get_entry_attributes(primary_rcpt_domain, primary_recipient_dn, rcpt_attrs) if not primary_recipient.has_key(primary_rcpt_attr): print >> sys.stderr, _( "Recipient %r is not the primary recipient for address %r") % ( primary_recipient, primary_rcpt_address) sys.exit(1) if not primary_recipient.has_key(secondary_rcpt_attr): auth.set_entry_attributes( primary_rcpt_domain, primary_recipient_dn, {secondary_rcpt_attr: [secondary_rcpt_address]}) else: if isinstance(primary_recipient[secondary_rcpt_attr], basestring): new_secondary_rcpt_attrs = [ primary_recipient[secondary_rcpt_attr], secondary_rcpt_address ] else: new_secondary_rcpt_attrs = \ primary_recipient[secondary_rcpt_attr] + \ [ secondary_rcpt_address ] auth.set_entry_attributes( primary_rcpt_domain, primary_recipient_dn, {secondary_rcpt_attr: new_secondary_rcpt_attrs})
mail_attributes = conf.get_list(conf.get('kolab', 'auth_mechanism'), 'mail_attributes') log.debug(_("Using the following mail attributes: %r") % (mail_attributes), level=8) if isinstance(recipients, basestring): recipient = recipients # Only a single recipient found, remove the address attributes = auth.get_entry_attributes(domain, recipient, mail_attributes) # See which attribute holds the value we're trying to remove for attribute in attributes.keys(): if isinstance(attributes[attribute], list): if email_address in attributes[attribute]: attributes[attribute].pop(attributes[attribute].index(email_address)) replace_attributes = { attribute: attributes[attribute] } auth.set_entry_attributes(domain, recipient, replace_attributes) else: if email_address == attributes[attribute]: auth.set_entry_attributes(domain, recipient, {attribute: None}) pass else: print >> sys.stderr, _("Found the following recipients:") for recipient in recipients: print recipient
def execute(*args, **kw): try: primary_rcpt_address = conf.cli_args.pop(0) try: secondary_rcpt_address = conf.cli_args.pop(0) except: print >> sys.stderr, _("Specify the (new) alias address") sys.exit(1) except: print >> sys.stderr, _("Specify the existing recipient address") sys.exit(1) if len(primary_rcpt_address.split('@')) > 1: primary_rcpt_domain = primary_rcpt_address.split('@')[-1] else: primary_rcpt_domain = conf.get('kolab', 'primary_domain') auth = Auth(domain=primary_rcpt_domain) domains = auth.list_domains() #print domains if len(secondary_rcpt_address.split('@')) > 1: secondary_rcpt_domain = secondary_rcpt_address.split('@')[-1] else: secondary_rcpt_domain = conf.get('kolab', 'primary_domain') # Check if either is in fact a domain if not primary_rcpt_domain.lower() in domains.keys(): print >> sys.stderr, _("Domain %r is not a local domain") % (primary_rcpt_domain) sys.exit(1) if not secondary_rcpt_domain.lower() in domains.keys(): print >> sys.stderr, _("Domain %r is not a local domain") % (secondary_rcpt_domain) sys.exit(1) if not primary_rcpt_domain == secondary_rcpt_domain: if not domains[primary_rcpt_domain] == domains[secondary_rcpt_domain]: print >> sys.stderr, _("Primary and secondary domain do not have the same parent domain") sys.exit(1) primary_recipient_dn = auth.find_recipient(primary_rcpt_address) if primary_recipient_dn == [] or len(primary_recipient_dn) == 0: print >> sys.stderr, _("No such recipient %r") % (primary_rcpt_address) sys.exit(1) secondary_recipient_dn = auth.find_recipient(secondary_rcpt_address) if not secondary_recipient_dn == [] and not len(secondary_recipient_dn) == 0: print >> sys.stderr, _("Recipient for alias %r already exists") % (secondary_rcpt_address) sys.exit(1) rcpt_attrs = conf.get_list('ldap', 'mail_attributes') primary_rcpt_attr = rcpt_attrs[0] if len(rcpt_attrs) >= 2: secondary_rcpt_attr = rcpt_attrs[1] else: print >> sys.stderr, _("Environment is not configured for " + \ "users to hold secondary mail attributes") sys.exit(1) primary_recipient = auth.get_entry_attributes(primary_rcpt_domain, primary_recipient_dn, rcpt_attrs) if not primary_recipient.has_key(primary_rcpt_attr): print >> sys.stderr, _("Recipient %r is not the primary recipient for address %r") % (primary_recipient, primary_rcpt_address) sys.exit(1) if not primary_recipient.has_key(secondary_rcpt_attr): auth.set_entry_attributes(primary_rcpt_domain, primary_recipient_dn, {secondary_rcpt_attr: [ secondary_rcpt_address ] }) else: if isinstance(primary_recipient[secondary_rcpt_attr], basestring): new_secondary_rcpt_attrs = [ primary_recipient[secondary_rcpt_attr], secondary_rcpt_address ] else: new_secondary_rcpt_attrs = \ primary_recipient[secondary_rcpt_attr] + \ [ secondary_rcpt_address ] auth.set_entry_attributes( primary_rcpt_domain, primary_recipient_dn, { secondary_rcpt_attr: new_secondary_rcpt_attrs } )