import cyruslib # without SSL imap = cyruslib.CYRUS("imap://localhost:143") # with SSL imap = cyruslib.CYRUS("imaps://localhost:993")
# Admin login (virtdomains: yes) imap.login("admin@example.com", "password") # Logon as user with admin password (virtdomains: yes) # SSL required! imap.login_plain("admin@example.com", "password", "user@example.com") # Admin login (virtdomains: no) imap.login("admin", "password") # Logon as user with admin password (virtdomains: no) # SSL required! imap.login_plain("admin", "password", "user")
try: imap = cyruslib.CYRUS("imap://localhost:143") imap.login("admin@example.com", "password") # do anything here (cm, dm, lam, ...) except cyruslib.CYRUSError, e: print "%s: %s" % (e[1], e[2])
# To list all mailboxes lm() # To list users top mailboxes lm("user/%") # To list all users mailboxes lm("user/*") # To list users mailboxes startwith a word lm("user/word*") # To list global top folders lm("%") # To list global startwith a word unsupported by server # suggestion (take care) lm("word*") for mbx in imap.lm(): print mbx
for mbx in imap.lm("user/rei/*"): print mbx > user/rei/caf&AOk- > user/rei/ma&AOc-a imap.setEncoding('utf-8') # utf-8, iso-8859-1 for mbx in imap.lm("user/rei/*"): print mbx > user/rei/café > user/rei/maça
# unixhierarchysep: yes imap.cm("user/rei") # unixhierarchysep: no imap.cm("user.rei") # or delimiter independent imap.cm("user%srei" % imap.SEP) # also imap.cm("user%srei%sSent" % (imap.SEP, imap.SEP)) # Global Mailbox (also availble to others commands) imap.cm("Notices")
# User Mailbox imap.dm("user/rei")
imap.rename("user/rei/sent-mail", "user/rei/Sent") # Changing Imap-Partition (partition-label2 should be configured imapd.conf) imap.rename("user/rei", "user/rei", "label2")
ACLdict = imap.lam("user/rei") for acl in ACLdict.keys(): print "%s: %s" % (acl, ACLdict.get(acl))
# virtdomains: yes imap.sam("user/rei", "johndoe@example.com", "lrsw") # virtdomains: no imap.sam("user/rei", "johndoe", "lrsw")
# If quota does not exist then Exception is called print imap.lq("user/rei") for mailbox in imap.lm("user/%"): try: used, limit = imap.lq(mailbox) print "%s:\t%s\t%s\t%s%%" % (mailbox, used, limit, used * 100/ limit) except: print "%s:\t%s\t%s\t%s%%" % (mailbox, 0, 0, 0)
# Value in Kbytes imap.sq("user/rei", "10240000") # Unlimited imap.sq("user/rei", "0") # for all for mbx in imap.lm("user/%"): if mbx not in ['user/rei', 'user/boss']: imap.sq(mbx, "102400")
# Server Annotation - ALL print imap.getannotation("", "*") # also annotations = imap.getannotation("", "*").get("") for annot in annotations: print "%s: %s" % (annot, annotations.get(annot)) # especific print imap.getannotation("", "/motd") print imap.getannotation("", "/vendor/cmu/cyrus-imapd/shutdown") # Mailbox Annotation - ALL print imap.getannotation("user/rei", "*") # From ALL subfolders print imap.getannotation("user/rei/*", "*") # also annotations = imap.getannotation("user/rei/*", "*") for mailbox in annotations.keys(): for annot in annotations.get(mailbox).keys(): print "%s: %s: %s" % (mailbox, annot, annotations.get(mailbox).get(annot)) # especific print imap.getannotation("user/rei", "/vendor/cmu/cyrus-imapd/expire") print imap.getannotation("user/rei", "/vendor/cmu/cyrus-imapd/partition") # also print imap.getannotation("user/rei", "/vendor/cmu/cyrus-imapd/partition").get("user/rei").get("/vendor/cmu/cyrus-imapd/partition")
# Server Annotation imap.setannotation("", "/motd", "The server will be unavailable tomorrow.") imap.setannotation("", "/vendor/cmu/cyrus-imapd/shutdown", "The server is unavailble until 9am.") # Unset imap.setannotation("", "/motd", "") imap.setannotation("", "/vendor/cmu/cyrus-imapd/shutdown", "") # Mailbox Annotation imap.setannotation("user/rei/Trash", "/vendor/cmu/cyrus-imapd/expire", "60") imap.setannotation("user/rei/Spam", "/vendor/cmu/cyrus-imapd/expire", "30") # Unset imap.setannotation("user/rei/Trash", "/vendor/cmu/cyrus-imapd/expire", "") imap.setannotation("user/rei/Spam", "/vendor/cmu/cyrus-imapd/expire", "")
imap.reconstruct("user/rei")
imap = cyruslib.CYRUS("imaps://localhost:993") imap.login_plain("admin@example.com", "password", "rei@example.com") imap.lsub()
imap = cyruslib.CYRUS("imap://localhost:143") imap.login("admin@example.com", "password") imap.cm("user%srei" % imap.SEP) imap.cm("user%srei%sTrash" % (imap.SEP, imap.SEP)) imap.cm("user%srei%sSent" % (imap.SEP, imap.SEP)) imap.cm("user%srei%sDrafts" % (imap.SEP, imap.SEP)) imap.cm("user%srei%sSpam" % (imap.SEP, imap.SEP)) del imap # ssl only imap = cyruslib.CYRUS("imaps://localhost:993") imap.login_plain("admin@example.com", "password", "rei@example.com") imap.subscribe("INBOX") imap.subscribe("INBOX%sTrash" % imap.SEP) imap.subscribe("INBOX%sSent" % imap.SEP) imap.subscribe("INBOX%sDrafts" % imap.SEP) imap.subscribe("INBOX%sSpam" % imap.SEP) del imap
imap = cyruslib.CYRUS("imaps://localhost:993") imap.login_plain("admin@example.com", "password", "rei@example.com") imap.unsubscribe("INBOX%sSpam" % imap.SEP)
Authors
Reinaldo de Carvalho (reinaldoc{NOSPAM}gmail.com)