Read/sync your IMAP mailboxes (python2)

Overview

Upstream status (master branch): OfflineIMAP build status on Travis-CI.org OfflineIMAP code coverage on Codecov.io Gitter chat

Upstream status (next branch): OfflineIMAP build status on Travis-CI.org

Financial contributors: Financial Contributors on Open Collective

Links:

OfflineIMAP

"Get the emails where you need them."

Official offlineimap.

Description

OfflineIMAP is software that downloads your email mailbox(es) as local Maildirs. OfflineIMAP will synchronize both sides via IMAP.

Why should I use OfflineIMAP?

IMAP's main downside is that you have to trust your email provider to not lose your email. While certainly unlikely, it's not impossible. With OfflineIMAP, you can download your Mailboxes and make you own backups of your Maildir.

This allows reading your email offline without the need for your mail reader (MUA) to support IMAP operations. Need an attachment from a message without internet connection? No problem, the message is still there.

Project status and future

As one of the maintainer of OfflineIMAP, I'd like to put my efforts into imapfw. imapfw is software in development that I intend to replace OfflineIMAP with in the long term.

That's why I'm not going to continue OfflineIMAP development. I'll continue to maintain OfflineIMAP (fixing small bugs, reviewing patches and merging, and rolling out new releases), but that's all.

While I keep tracking issues for OfflineIMAP, you should not expect future support.

You won't be left at the side. OfflineIMAP's community is large enough so that you'll find people for most of your issues.

Get news from the blog.

                             Nicolas Sebrecht. ,-)

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License

GNU General Public License v2.

Downloads

You should first check if your distribution already packages OfflineIMAP for you. Downloads releases as tarball or zipball.

If you are running Linux Os, you can install offlineimap with:

  • openSUSE zypper in offlineimap
  • Arch Linux pacman -S offlineimap
  • fedora dnf install offlineimap

Feedbacks and contributions

The user discussions, development, announcements and all the exciting stuff take place on the mailing list. While not mandatory to send emails, you can subscribe here.

Bugs, issues and contributions can be requested to both the mailing list or the official Github project. Provide the following information:

  • system/distribution (with version)
  • offlineimap version (offlineimap -V)
  • Python version
  • server name or domain
  • CLI options
  • Configuration file (offlineimaprc)
  • pythonfile (if any)
  • Logs, error
  • Steps to reproduce the error

The community

Requirements & dependencies

  • Python v2.7+

  • six (required)

  • rfc6555 (required)

  • imaplib2 >= 2.57 (optional)

  • gssapi (optional), for Kerberos authentication

  • portalocker (optional), if you need to run offlineimap in Cygwin for Windows

  • Python v3.4+ [STALLED] (experimental: see known issues)

Documentation

All current and updated documentation is on the community's website.

Read documentation locally

You might want to read the documentation locally. Get the sources of the website. For the other documentation, run the appropriate make target:

$ ./scripts/get-repository.sh website
$ cd docs
$ make html  # Requires rst2html
$ make man   # Requires a2x (http://asciidoc.org)
$ make api   # Requires sphinx
Comments
  • "cannot operate on a closed database" error

    General informations

    • offlineimap version (offlineimap -V): 7.0.0-rc5
    • Python version: 2.7.11
    • server name or domain: Gmail
    • CLI options:

    Configuration file offlineimaprc

    [general]
    accounts = Gmail
    fsync = false
    ui = ttyui
    
    [Account Gmail]
    autorefresh = 0.5
    quick = 10
    localrepository = Gmail-Local
    remoterepository = Gmail-Remote
    status_backend = sqlite
    
    [Repository Gmail-Local]
    type = Maildir
    localfolders = ~/Mail
    nametrans = lambda folder: {'drafts':  '[Gmail]/Drafts',
                                'sent':    '[Gmail]/Sent Mail',
                                'important':    '[Gmail]/Important',
                                'spam':    '[Gmail]/Spam',
                                'starred': '[Gmail]/Starred',
                                'trash':   '[Gmail]/Trash',
                                'archive': '[Gmail]/All Mail',
                                }.get(folder, folder)
    sep = /
    
    [Repository Gmail-Remote]
    type = Gmail
    maxconnections = 2
    remoteuser = [email protected]
    remotepass =
    realdelete = no
    keepalive = 60
    holdconnectionopen = yes
    createfolders = False
    nametrans = lambda foldername: re.sub ('^\[gmail\]', 'bak',
                                   re.sub ('sent_mail', 'sent',
                                   re.sub ('fedora/', 'fedora-',
                                   re.sub ('starred', 'flagged',
                                   re.sub (' ', '_', foldername.lower())))))
    
    folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail', '[Gmail]/Important']
    # Necessary as of OfflineIMAP 6.5.4
    sslcacertfile = /etc/ssl/certs/ca-bundle.crt
    
    [mbnames]
    enabled = yes
    filename = ~/.mutt/mailboxes
    header = "mailboxes "
    peritem = "+%(accountname)s/%(foldername)s"
    sep = " "
    footer = "\n"
    

    pythonfile (if any)

    REMOVE PRIVATE DATA.
    

    Logs, error

    ul 16 13:18:20 localhost.localdomain offlineimap[3618]: Deleting 4 messages (1234:1236,1238) in Maildir[bak/sent]
    Jul 16 13:18:20 localhost.localdomain offlineimap[3618]: Syncing [Gmail]/Spam: Gmail -> Maildir
    Jul 16 13:18:20 localhost.localdomain ERROR[3618]: Copying message 1233 [acc: Gmail]
                                                         Cannot operate on a closed database.
    Jul 16 13:18:20 localhost.localdomain offlineimap[3618]: Syncing bak/spam: Gmail -> Maildir
    Jul 16 13:18:20 localhost.localdomain offlineimap[3618]: Thread 'Copy message from Gmail-Remote:[Gmail]/Sent Mail' terminated with exception:
                                                             Traceback (most recent call last):
                                                               File "/usr/lib/python2.7/site-packages/offlineimap/threadutil.py", line 163, in run
                                                                 Thread.run(self)
                                                               File "/usr/lib64/python2.7/threading.py", line 757, in run
                                                                 self.__target(*self.__args, **self.__kwargs)
                                                               File "/usr/lib/python2.7/site-packages/offlineimap/folder/Gmail.py", line 290, in copymessageto
                                                                 super(GmailFolder, self).copymessageto(uid, dstfolder, statusfolder, register)
                                                               File "/usr/lib/python2.7/site-packages/offlineimap/folder/Base.py", line 825, in copymessageto
                                                                 statusfolder.savemessage(new_uid, message, flags, rtime)
                                                               File "/usr/lib/python2.7/site-packages/offlineimap/folder/LocalStatusSQLite.py", line 315, in savemessage
                                                                 (uid,flags,mtime,labels))
                                                               File "/usr/lib/python2.7/site-packages/offlineimap/folder/LocalStatusSQLite.py", line 144, in __sql_write
                                                                 cursor = self.connection.execute(sql, vars)
                                                             ProgrammingError: Cannot operate on a closed database.
    
    
                                                             Last 4 debug messages logged for Copy message from Gmail-Remote:[Gmail]/Sent Mail prior to exception:
                                                             thread: Register new thread 'Copy message from Gmail-Remote:[Gmail]/Sent Mail' (account 'Gmail')
                                                             imap: Returned object from fetching 1233: 'MIME-Version: 1.0
                                                             Received: by 10.157.56.146 with HTTP; Fri, 15 Jul 2016 14:14:22 -0700 (PDT)
                                                             Received: by 10.157.56.146 with HTTP; Fri, 15 Jul 2016 1...gt;<br>
                                                             &gt;</p>
    
                                                             --001a113ef42e45b2c70537b31a52--'
                                                             maildir: Write mail 'bak/sent:1233' with flags set(['S'])
                                                             maildir: savemessage: returning uid 1233
    Jul 16 13:18:20 localhost.localdomain ERROR[3618]: Exceptions occurred during the run!
    Jul 16 13:18:20 localhost.localdomain ERROR[3618]: Copying message 1233 [acc: Gmail]
                                                         Cannot operate on a closed database.
    Jul 16 13:18:20 localhost.localdomain Traceback[3618]:   File "/usr/lib/python2.7/site-packages/offlineimap/folder/Base.py", line 825, in copymessageto
                                                               statusfolder.savemessage(new_uid, message, flags, rtime)
                                                             File "/usr/lib/python2.7/site-packages/offlineimap/folder/LocalStatusSQLite.py", line 315, in savemessage
                                                               (uid,flags,mtime,labels))
                                                             File "/usr/lib/python2.7/site-packages/offlineimap/folder/LocalStatusSQLite.py", line 144, in __sql_write
                                                               cursor = self.connection.execute(sql, vars)
    Jul 16 13:18:20 localhost.localdomain systemd[2244]: [email protected]: Main process exited, code=exited, status=100/n/a
    Jul 16 13:18:20 localhost.localdomain systemd[2244]: Failed to start Offlineimap Service for account amurdaca.
    Jul 16 13:18:20 localhost.localdomain systemd[2244]: [email protected]: Unit entered failed state.
    Jul 16 13:18:20 localhost.localdomain systemd[2244]: [email protected]: Failed with result 'exit-code'.
    

    Steps to reproduce the error

    • start offline imap via systemd timer + service
    • drop the connection or kill offlineimap process
    • restart
    • get that ugly error :(
    bug 
    opened by runcom 64
  • Database is locked

    Database is locked

    Since upgrading to 7.0.9 I keep getting the following error: 2016-11-05 11:35:29 WARNING: ERROR: Exceptions occurred during the run! 2016-11-05 11:35:29 WARNING: ERROR: ERROR in syncfolder for Exchange folder INBOX: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/offlineimap/accounts.py", line 536, in syncfolder statusfolder.openfiles() File "/usr/local/lib/python2.7/dist-packages/offlineimap/folder/LocalStatusSQLite.py", line 135, in openfiles self.__create_db() File "/usr/local/lib/python2.7/dist-packages/offlineimap/folder/LocalStatusSQLite.py", line 232, in __create_db """) OperationalError: database is locked

    database is locked

    I tried rebooting in the hopes that the database would unlock itself but that didn't help. Any thoughts on how to resolve this issue? Thanks.

    bug waiting submitter feedback 
    opened by mobamoba 46
  • Error APPEND -> BAD (invalid argument: unable to parse message) since 6.5.7rc2

    Error APPEND -> BAD (invalid argument: unable to parse message) since 6.5.7rc2

    I've been using Offlineimap for a few years and, since going to from 6.5.6. to 6.5.7rc2, I've started receiving the following error message when syncing one of my folders to Gmail:

    Establishing connection to imap.gmail.com:993 ERROR: Saving msg ([unknown message-id]) folder 'SMS', repo 'Remote'failed (error). Server responded: APPEND command error: BAD ['Invalid Arguments: Unable to parse message']. Data: LIGG20 APPEND SMS (\Seen) {1}

    Message content was: 4 ERROR: Saving msg ([unknown message-id]) folder 'SMS', repo 'Remote'failed (error). Server responded: APPEND command error: BAD ['Invalid Arguments: Unable to parse message']. Data: OJOA7 APPEND SMS (\Seen) {1}

    Message content was: 4

    bug waiting submitter feedback 
    opened by mobamoba 43
  • GSSAPI support doesn't work anymore

    GSSAPI support doesn't work anymore

    General informations

    OfflineIMAP will prompt for a password everytime I try to pull my mails, even though I have a valid kerberos ticket that should be used to avoid asking for a password.

    • system/distribution (with version): Archlinux
    • offlineimap version (offlineimap -V): 7.2.0
    • Python version: 2.7.14

    I'm using OfflineIMAP 7.1.5 in the meantime, which doesn't have this issue.

    Configuration file offlineimaprc

    [general]
    metadata = ~/.offlineimap
    accounts = abc
    
    [mbnames]
    enabled = yes
    filename = ~/mail/muttrc.mailboxes
    header = "mailboxes "
    peritem = "+%(accountname)s/%(foldername)s"
    sep = " "
    footer = "\n"
    incremental = no
    
    [Account abc]
    localrepository = LocalAbc
    remoterepository = RemoteAbc
    maxage = 365
    postsynchook = notmuch new
    
    [Repository LocalAbc]
    type = Maildir
    localfolders = ~/mail/abc
    
    [Repository RemoteAbc]
    type = IMAP
    ipv6 = False
    remotehost = imap.abc.fr
    ssl = yes
    cert_fingerprint = F418B0437670D1AA2DB8C1B6434001C63EAFC5D1
    tls_version = tls_compat
    remoteport = 993
    remoteuser = fle
    holdconnectionopen = yes
    expunge = yes
    subscribedonly = no
    createfolders = False
    

    Logs, error

    $ offlineimap -d imap -a abc                                          
    OfflineIMAP 7.2.0                                                                          
      Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)           
    imaplib2 v2.57 (bundled), Python v2.7.14, OpenSSL 1.1.0h  27 Mar 2018                      
    Debug mode: Forcing to singlethreaded.                                                     
    Now debugging for imap: IMAP protocol debugging                                            
    Now debugging for : Other offlineimap related sync messages                                
      imaplib2: 2.57 (bundled)                                                                 
    [imap]: Using authentication mechanisms ['GSSAPI', 'XOAUTH2', 'CRAM-MD5', 'PLAIN', 'LOGIN']
    Remote repository 'RemoteAbc': type 'IMAP'                                               
    Host: imap.abc.fr Port: 993 SSL: True                                                
    Establishing connection to imap.abc.fr:993 (RemoteAbc)                             
    [imap]: RemoteAbc: level 'tls_compat', version 'None'                                    
    [imap]: Attempting GSSAPI authentication                                                   
    [imap]: Attempting PLAIN authentication                                                    
    Enter password for account 'RemoteAbc':
    
    bug 
    opened by lenormf 42
  • Synchronize gmail labels

    Synchronize gmail labels

    Hi,

    This big pull-request adds functionality to store gmail labels in a special email header X-Keywords, and sync them just like IMAP flags.

    I sent patches to the offlineimap mailing list almost a year ago, here is the thread:

    http://comments.gmane.org/gmane.mail.imap.offlineimap.general/5943

    Last january X Ryl contacted me about merging this. He asked me to make the labels stuff available also for the plaintext backend, and well, I didn't find the time to do it, so nothing happened. Now here it is.

    This pull request contains the original labels stuff, plus several bugfixes thanks to some people who have started using it, and reported problems, plus support for the plaintext backend.

    I'm hoping this could be merged, as it is a very useful feature for us label-enthusiast gmail users, and now it has had some reasonable testing.

    A summary of what is contained in this pull request:

    1. When a message goes out of gmail server, adds a header X-Keywords with a comma separated list of labels.

    2. Updates the LocalStatus (both, sqlite and plaintext) to include columns for labels and local mtimes. For non-gmail repositories these columns are ignored.

      Also functionality is implemented to migrate between backends and upgrade format in both, plaintext and sqlite (the last batch of commits)

    3. When labels change on the gmail side, syncs them the same way as flags get synced (comparing with LocalStatus etc)

    4. Adds a GmailMaildir folder type, which keeps track of individual message modification times (the POSIX mtime), and uses it to spot messages which have been modified locally. Then, only for those modified messages (typically very few), reads the labels and syncs them back to gmail, the same way as flags.

    5. Adds an option to filter out certain headers when uploading messages to gmail. One may want to remove X-Keywords before sending a message back to gmail.

    6. Adds an option to ignore certain labels, like \Draft, for which flags serve the same purpose. Gmail internally keeps the D flag in sync with the \Draft label, or the F flag with the \Starred label.

    Feel free to contact me for additional fixes, required before merging.

    waiting submitter feedback 
    opened by aroig 38
  • Support Python 3

    Support Python 3

    General informations

    • system/distribution (with version): Ubuntu 18.04
    • offlineimap version (offlineimap -V): latest
    • Python version: 2.7
    • server name or domain:
    • CLI options:

    With the whole world moving away from Python 2, is supporting Python 3 on the table?

    Py3 need contributor! 
    opened by franva 37
  • ERROR: IMAP server 'Server Remote' does not have a message with UID 'xxx'

    ERROR: IMAP server 'Server Remote' does not have a message with UID 'xxx'

    There are a number of emails in my mailbox that constantly raise the exception below

    raise OfflineImapError(reason, severity)

    The errors are something like

    ERROR: IMAP server 'Server ### Remote' does not have a message with UID 'xxx'

    Any idea on what's going on?

    This is with version 6.5.5

    bug wontfix Microsoft 
    opened by vbalnt 36
  • sync all but deletions on local or remote

    sync all but deletions on local or remote

    Could you add new option for local repositories? Something like saveonly = True|False. Default would be False (current behavior).When True no already saved message nor created folder should be deleted from local repository even if deleted from remote one.

    This change would make OfflineIMAP perfect for IMAP account archival (combined with readonly = True on remote repository).

    Would you consider it?

    feature 
    opened by lenar 31
  • Davmail: first sync works, but then process hangs

    Davmail: first sync works, but then process hangs

    General information

    • system/distribution (with version): Ubuntu 19.04 "Cosmic" x86_64
    • offlineimap version (offlineimap -V): 7.2.1 (via Ubuntu repo)
    • Python version: 2.7.16 (via Ubuntu repo)
    • server name or domain:
    • CLI options:

    Configuration file offlineimaprc

    [general]
    accounts = foo
    maxsyncaccounts = 2
    
    [Account emory]
    localrepository = Local-foo
    remoterepository = Remote-foo
    autorefresh = 1
    postsynchook = ~/bin/offlineimap-notmuch-hook
    
    [Repository Local-foo]
    type = Maildir
    localfolders = ~/.mail/foo/
    
    [Repository Remote-foo]
    type = IMAP
    remotehost = localhost
    remoteport = 1143
    ssl = no
    remoteuser = [email protected]
    keepalive = 60
    holdconnectionopen = yes
    idlefolders = ['INBOX']
    folderfilter = lambda foldername: foldername in ['INBOX']
    
    

    pythonfile (if any)

    Logs, error

    OfflineIMAP 7.2.1
      Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
    imaplib2 v2.57 (system), Python v2.7.16, OpenSSL 1.1.1  11 Sep 2018
    Account sync foo:
     *** Processing account foo
     Establishing connection to localhost:1143 (Remote-foo)
    Enter password for account 'Remote-foo': 
    Folder INBOX [acc: foo]:
     Syncing INBOX: IMAP -> Maildir
     Deleting 3 messages (317930,317932,317934) in IMAP[INBOX]
    Account sync foo:
     Calling hook: ~/bin/offlineimap-notmuch-hook
     Hook stdout: No new mail. Removed 3 messages.
    
    Hook stderr:
    
     Hook return code: 0
     *** Finished account 'foo' in 0:12
     Next refresh in 1.0 minutes
    Thread-4:
     IMAP IDLE not supported on server 'localhost '.Sleep until next refresh cycle.
    Account sync foo:
     *** Processing account foo
    

    Steps to reproduce the error

    • Davmail is configured with oauth, connecting to Office 365
    • Run offlineimap with above config and no command line arguments
    • First sync completes correctly, then the process hangs at "Processing account"

    Per the FAQ, I have set davmail.enableKeepAlive=false in the davmail config file.

    bug need contributor! 
    opened by elliotkendall 30
  • maxage is respected only once

    maxage is respected only once

    General informations

    • system/distribution (with version): OSX Yosemite 10.10.5 (14F1912)
    • offlineimap version (offlineimap -V): homebrew offlineimap v7.0.7, imaplib2 v2.55 (bundled), Python v2.7.10

    Configuration file offlineimaprc

    ssl = yes
    maxage = 100
    status_backend = sqlite
    type = GmailMaildir
    

    Steps to reproduce the error

    • Empty maildir
    • sync -> mails newer than 100 days are synced normally
    • change maxage to 200
    • sync -> no new mails (there should be)
    • remove maxage from config
    • sync -> all mails coming... (17000)
    • interrupt
    • put maxage back
    • sync
    • all mails still coming, no way to get offlineimap respect maxage again...
    bug waiting submitter feedback 
    opened by mhavo 30
  • offlineImap behind davmail not syncing INBOX only

    offlineImap behind davmail not syncing INBOX only

    General informations

    • system/distribution (with version): Cygwin
    • offlineimap version (offlineimap -V): offlineimap v7.1.1, imaplib2 v2.57 (bundled), Python v2.7.13, OpenSSL 1.0.2k 26 Jan 2017
    • Python version: Python 2.7.13
    • server name or domain: davmail -> exchange 2010
    • CLI options: ./offlineimap.py -o -f INBOX

    Configuration file offlineimaprc

    [general] accounts = office maxsyncaccounts = 1 socktimeout = 60

    [Account office] localrepository = local remoterepository = exchange autorefresh = 5 quick = 10

    [Repository local] type = IMAP ssl = no remotehost = localhost remoteport = 2143 remoteuser = REMOVED remotepass = REMOVED

    [Repository exchange] type = IMAP ssl = no remotehost = localhost remoteport = 1143 remoteuser = REMOVED remotepass = REMOVED maxconnections = 2 holdconnectionopen = yes keepalive = 60 folderfilter = lambda foldername: foldername in ['INBOX', 'Sent'] createfolders = False readonly = True

    Logs, error

    logDavmail.txt

    No particular error reported on the offlineImap logs: offlineimap.log.txt

    Steps to reproduce the error

    • Configure Davmail to connect to an exchange server using EWS
    • Start syncing

    OfflineImap will sync all the folders EXCEPT the INBOX.

    test performed

    1. Exchange -> davmail -> offlineImap -> Imap hMailserver windows
      • all foders Synced except INBOX
    2. Exchange -> davmail -> offlineImap -> Maildir
      • all foders Synced except INBOX
    3. Exchange -> davmail -> Mbsync -> Maildir
      • OK INBOX syncing

    offlineImap info

    OfflineIMAP 7.1.1 Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception) imaplib2 v2.57 (bundled), Python v2.7.13, OpenSSL 1.0.2k 26 Jan 2017 imaplib2: 2.57 (bundled) Remote repository 'exchange': type 'IMAP' Host: localhost Port: 1143 SSL: False Establishing connection to localhost:1143 (exchange) Server welcome string: * OK [CAPABILITY IMAP4REV1 AUTH=LOGIN MOVE] IMAP4rev1 DavMail 4.8.0-2479 server ready Server capabilities: ('IMAP4REV1', 'AUTH=LOGIN', 'MOVE')

    folderfilter= lambda foldername: foldername in ['INBOX', 'Sent']

    Folderlist: Drafts (disabled) folder2 (disabled) INBOX Junk (disabled) Sent Sync Issues (disabled) Sync Issues/Conflicts (disabled) Sync Issues/Local Failures (disabled) Sync Issues/Server Failures (disabled) Trash (disabled) Trash/folder2 (disabled) Unsent Messages (disabled)

    Local repository 'local': type 'MappedIMAP' Host: localhost Port: 2143 SSL: False Establishing connection to localhost:2143 (local) Server welcome string: * OK IMAPrev1 Server capabilities: ('IMAP4', 'IMAP4REV1', 'CHILDREN', 'IDLE', 'QUOTA', 'SORT', 'ACL', 'NAMESPACE', 'RIGHTS=TEXK')

    Folderlist: INBOX Sent

    Comments / Questions

    I was wondering if there was some specific options or name translation to apply in order to sync the INBOX for OfflineIMAP.

    Thanks for your support

    bug 
    opened by secomi 29
  • Sync recent mails

    Sync recent mails

    maxage or startdate doesn't seem to work. I have given gmaildir and gmail options. In the config file it is said that startdate is only supported for IMAP and not gmail. I saw your blog post saying maxage is deprecated or smtg. What should I do to download only past 5 day's email or from a particular date.

    opened by bkkavin 0
  • command: FETCH => socket error: <class 'OSError'> - Too many read 0

    command: FETCH => socket error: - Too many read 0

    General informations

    • system/distribution (with version): OpenBSD 7.2
    • offlineimap version (offlineimap -V): offlineimap v8.0.0, imaplib2 v3.06, Python v3.9.15, LibreSSL 3.6.0
    • Python version: Python v3.9.15
    • server name or domain: N/A
    • CLI options:

    Configuration file offlineimaprc

    [general]
    ui = basic
    accounts = MyExchangeServer
    fsync = false
    maxsyncaccounts = 1
    singlethreadperfolder = false
    holdconnectionopen = yes
    ssl_version = StartTLS
    usecompression = yes
    keepalive = 60
    
    [Account MyExchangeServer]
    localrepository = MyExchangeServer-Local
    remoterepository = MyExchangeServer-Remote
    autorefresh = 0.5
    quick = 10
    utf8foldernames = yes
    
    [Repository MyExchangeServer-Local]
    type = Maildir
    localfolders = ~/.Mail/MyExchangeServer
    
    [Repository MyExchangeServer-Remote]
    type = IMAP
    remotehost = mail.myserver.org
    remoteport = 993
    remoteuser = user
    remotepass = pass
    realdelete = no
    maxconnections = 1
    ssl = yes
    sslcacertfile = /etc/ssl/cert.pem
    keepalive = 6
    auth_mechanisms = PLAIN, LOGIN
    

    pythonfile (if any)

    N/A
    

    Logs, error

    Establishing connection to mail.myserver.org:993 (MyExchangeServer-Remote)
    Syncing outages: IMAP -> Maildir
    Syncing removal: IMAP -> Maildir
    Syncing Remstats: IMAP -> Maildir
    ERROR: ERROR in syncfolder for MyExchangeServer folder Remstats: Traceback (most recent call last):
      File "/usr/local/lib/python3.9/site-packages/offlineimap/accounts.py", line 653, in syncfolder
        remotefolder.cachemessagelist()
      File "/usr/local/lib/python3.9/site-packages/offlineimap/folder/IMAP.py", line 299, in cachemessagelist
        res_type, response = imapobj.fetch(
      File "/usr/local/lib/python3.9/site-packages/imaplib2/imaplib2.py", line 828, in fetch
        return self._simple_command(name, message_set, message_parts, **kw)
      File "/usr/local/lib/python3.9/site-packages/imaplib2/imaplib2.py", line 1705, in _simple_command
        return self._command_complete(self._command(name, *args), kw)
      File "/usr/local/lib/python3.9/site-packages/imaplib2/imaplib2.py", line 1449, in _command_complete
        typ, dat = rqb.get_response('command: %s => %%s' % rqb.name)
      File "/usr/local/lib/python3.9/site-packages/imaplib2/imaplib2.py", line 212, in get_response
        raise typ(exc_fmt % str(val))
    imaplib2.imaplib2.IMAP4.abort: command: FETCH => socket error: <class 'OSError'> - Too many read 0
    
      command: FETCH => socket error: <class 'OSError'> - Too many read 0
    Syncing root mail: IMAP -> Maildir
    
    

    Steps to reproduce the error

    trying to get mail from a mailbox with 25,000 emails

    opened by alexmihajlov 1
  • maildir-windows-compatible = yes option, not working as expected

    maildir-windows-compatible = yes option, not working as expected

    I'm having some difficulty getting the maildir-windows-compatible = yes option to allow me to have my MailDir on FAT storage (an SD card on a small dual-boot device)

    It seems : is still present in filenames that offlineimap is trying to create

    General informations

    • system/distribution (with version): KDE Neon (Ubuntu 20.04 Base, Plasma 5.25, Wayland)
    • offlineimap / python version: offlineimap v7.2.3, imaplib2 v2.57 (system), Python v2.7.18, OpenSSL 1.1.1f 31 Mar 2020
    • server name or domain: unsure what this means
    • CLI options: none

    Configuration file offlineimaprc

    [general]
    # GmailAcccount, OutlookAccount
    accounts = GmailAccount, OutlookAccount
    maildir-windows-compatible = yes
    # ----------- Gmail Account -----------
    
    [Account GmailAccount]
    localrepository = LocalGmailAccount
    remoterepository = RepositoryGmailAccount
    quick = 10
    
    [Repository LocalGmailAccount]
    type = Maildir
    localfolders = /media/<USER>/Storage_512/Maildir/GmailAccount
    
    [Repository RepositoryGmailAccount]
    type = Gmail
    maxconnections = 2
    remoteuser = <USER>@gmail.com
    remotepass = <PASS>
    sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    
    [Windows compatibility]
    maildir-windows-compatible = yes
    # ----------- OutlookAccount -----------
    
    [Account OutlookAccount]
    localrepository = LocalOutlookAccount
    remoterepository = RemoteOutlookAccount
    
    [Repository LocalOutlookAccount]
    type = Maildir
    localfolders = /media/<USER>/Storage_512/Maildir/OutlookAccount
    
    [Repository RemoteOutlookAccount]
    type = IMAP
    ssl = yes
    remotehost = outlook.office365.com
    remoteuser = <ACC DETAILS>
    remotepass = <PASS>Xax11053	
    sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    
    [Windows compatibility]
    maildir-windows-compatible = yes
    
    

    pythonfile (if any)

    REMOVE PRIVATE DATA.
    

    Logs, error

    OfflineIMAP 7.2.3
      Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
    imaplib2 v2.57 (system), Python v2.7.18, OpenSSL 1.1.1f  31 Mar 2020
    Account sync GmailAccount:
     *** Processing account GmailAccount
     Establishing connection to imap.gmail.com:993 (RepositoryGmailAccount)
    Folder [Gmail]/All Mail [acc: GmailAccount]:
     Creating new Local Status db for LocalGmailAccount:[Gmail].All Mail
    Folder [Gmail]/Archive [acc: GmailAccount]:
     Creating new Local Status db for LocalGmailAccount:[Gmail].Archive
    Folder [Gmail]/All Mail [acc: GmailAccount]:
     Syncing [Gmail]/All Mail: Gmail -> Maildir
    Folder [Gmail]/Archive [acc: GmailAccount]:
     Syncing [Gmail]/Archive: Gmail -> Maildir
     Establishing connection to imap.gmail.com:993 (RepositoryGmailAccount)
     Copy message UID 2 (1/1) RepositoryGmailAccount:[Gmail]/Archive -> LocalGmailAccount:[Gmail].Archive
    Copy message from RepositoryGmailAccount:[Gmail]/Archive:
     ERROR: Copying message 2 [acc: GmailAccount]
      [Errno 2] No such file or directory: '/media/<USER>/Storage_512/Maildir/GmailAccount/[Gmail].Archive/tmp/1665409952_0.23728.<USER>-surfacego,U=2,FMD5=312a26d26d7c877e152f72dd5ddbc11f:2,S'
    Folder [Gmail]/Drafts [acc: GmailAccount]:
     Creating new Local Status db for LocalGmailAccount:[Gmail].Drafts
     Syncing [Gmail]/Drafts: Gmail -> Maildir
    Thread 'Copy message from RepositoryGmailAccount:[Gmail]/Archive' terminated with exception:
    Traceback (most recent call last):
      File "/usr/share/offlineimap/offlineimap/threadutil.py", line 160, in run
        Thread.run(self)
      File "/usr/lib/python2.7/threading.py", line 754, in run
        self.__target(*self.__args, **self.__kwargs)
      File "/usr/share/offlineimap/offlineimap/folder/Gmail.py", line 289, in copymessageto
        super(GmailFolder, self).copymessageto(uid, dstfolder, statusfolder, register)
      File "/usr/share/offlineimap/offlineimap/folder/Base.py", line 844, in copymessageto
        new_uid = dstfolder.savemessage(uid, message, flags, rtime)
      File "/usr/share/offlineimap/offlineimap/folder/Maildir.py", line 393, in savemessage
        tmpname = self.save_to_tmp_file(messagename, content)
      File "/usr/share/offlineimap/offlineimap/folder/Maildir.py", line 318, in save_to_tmp_file
        os.O_EXCL|os.O_CREAT|os.O_WRONLY, 0o666)
    OSError: [Errno 2] No such file or directory: '/media/<USER>/Storage_512/Maildir/GmailAccount/[Gmail].Archive/tmp/1665409952_0.23728.<USER>-surfacego,U=2,FMD5=312a26d26d7c877e152f72dd5ddbc11f:2,S'
    
    
    Last 3 debug messages logged for Copy message from RepositoryGmailAccount:[Gmail]/Archive prior to exception:
    thread: Register new thread 'Copy message from RepositoryGmailAccount:[Gmail]/Archive' (account 'GmailAccount')
    imap: Returned object from fetching 2: 'Delivered-To: [email protected]
    Received: by 10.194.202.162 with SMTP id kj2csp1293295wjc;
            Wed, 28 Jan 2015 06:34:00 -0800 (PST)
    Return..."></body></html>
    --001a11c3226617f971050db7431c--
    '
    maildir: Write mail '[Gmail].Archive:2' with flags set(['S'])
    ERROR: Exceptions occurred during the run!
    ERROR: Copying message 2 [acc: GmailAccount]
      [Errno 2] No such file or directory: '/media/<USER>/Storage_512/Maildir/GmailAccount/[Gmail].Archive/tmp/1665409952_0.23728.<USER>-surfacego,U=2,FMD5=312a26d26d7c877e152f72dd5ddbc11f:2,S'
    
    Traceback:
      File "/usr/share/offlineimap/offlineimap/folder/Base.py", line 844, in copymessageto
        new_uid = dstfolder.savemessage(uid, message, flags, rtime)
      File "/usr/share/offlineimap/offlineimap/folder/Maildir.py", line 393, in savemessage
        tmpname = self.save_to_tmp_file(messagename, content)
      File "/usr/share/offlineimap/offlineimap/folder/Maildir.py", line 318, in save_to_tmp_file
    
    

    Steps to reproduce the error

    • run offlineimap in terminal
    opened by thephatmaster 0
  • Server responded: APPEND command error: BAD [b'[TOOBIG] Message too large. https://support.google.com/mail/answer/6584#limit']

    Server responded: APPEND command error: BAD [b'[TOOBIG] Message too large. https://support.google.com/mail/answer/6584#limit']

    General informations

    • system/distribution (with version): Ubuntu 22.04
    • offlineimap version (offlineimap -V): 8.0.0
    • Python version: 3.10.4
    • server name or domain: gmail??
    • CLI options: only -l

    Configuration file offlineimaprc

    
    [general]
    accounts = meuserStanfordGMAIL
    maxsyncaccounts=1
    
    metadata=~/.offlineimap
    
    # Simply provides passwords
    pythonfile=~/Private/bin/offlineimap.py
    
    [Account meuserStanfordGMAIL]
    localrepository = gmailStanfordLocal
    remoterepository = gmailStanfordRemote
    
    [Repository gmailStanfordLocal]
    type = Maildir
    localfolders = /home/meuser/imap/gmailStanford
    nametrans = lambda folder: re.sub('spam', '[Gmail].Spam',
                               re.sub('drafts', '[Gmail].Drafts',
                               re.sub('sent', '[Gmail].Sent Mail',
                               re.sub('^trash$', '[Gmail].Trash',
    			   re.sub('spam', '[Gmail]/Spam',
                               re.sub('drafts', '[Gmail]/Drafts',
                               re.sub('sent', '[Gmail]/Sent Mail',
                               re.sub('[Gmail].Spam','spam', 
                               re.sub('[Gmail].Drafts','drafts', 
                               re.sub('[Gmail].Sent Mail','sent', 
                               re.sub('[Gmail].Trash$','trash',
                               re.sub('[Gmail]/Spam','spam', 
                               re.sub('[Gmail]/Drafts','drafts', 
                               re.sub('[Gmail]/Sent Mail','sent', 
                               re.sub('[Gmail]/Trash$','trash', folder)))))))))))))))
    foldersort=mycmp
    
    [Repository gmailStanfordRemote]
    
    createfolders=False
    
    type = Gmail
    sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    ssl_version=tls1_2 
    remoteuser = [email protected]
    remotepass=mypass
    realdelete = no
    foldersort=mycmp
    
    nametrans = lambda folder: re.sub('spam', '[Gmail].Spam',
                               re.sub('drafts', '[Gmail].Drafts',
                               re.sub('sent', '[Gmail].Sent Mail',
                               re.sub('^trash$', '[Gmail].Trash',
    			   re.sub('spam', '[Gmail]/Spam',
                               re.sub('drafts', '[Gmail]/Drafts',
                               re.sub('sent', '[Gmail]/Sent Mail',
                               re.sub('[Gmail].Spam','spam', 
                               re.sub('[Gmail].Drafts','drafts', 
                               re.sub('[Gmail].Sent Mail','sent', 
                               re.sub('[Gmail].Trash$','trash',
                               re.sub('[Gmail]/Spam','spam', 
                               re.sub('[Gmail]/Drafts','drafts', 
                               re.sub('[Gmail]/Sent Mail','sent', 
                               re.sub('[Gmail]/Trash$','trash', folder)))))))))))))))
    
    folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail','[Gmail].All Mail','[Gmail]/Important','[Gmail]/Sent Mail','[Gmail]/Sent Mail', '[Gmail]/Chats','sent','[Gmail].Starred']
    maxconnections = 3
    
    

    pythonfile (if any)

    def get_password(server):
      ...
    

    Logs, error

    
    2022-09-04 10:31:01 WARNING: ERROR: Exceptions occurred during the run!
    2022-09-04 10:31:01 WARNING: ERROR: Saving msg ( <...........CANPRD01.PROD.OUTLOOK.COM>) folder 'myfolder', repo 'myrepo'failed (error). Server responded: APPEND command error: BAD [b'[TOOBIG] Message too large. https://support.google.com/mail/answer/6584#limit']. Data: b'DBBL29 APPEND myfolder (\\Seen) "09-Nov-2021 12:01:30 -0500" {36512387}\r\n'
    
    2022-09-04 10:31:01 WARNING: 
    Traceback:
      File "/usr/share/offlineimap3/offlineimap/folder/Base.py", line 815, in copymessageto
        new_uid = dstfolder.savemessage(uid, message, flags, rtime)
      File "/usr/share/offlineimap3/offlineimap/folder/Gmail.py", line 199, in savemessage
        return super(GmailFolder, self).savemessage(uid, msg, flags, rtime)
      File "/usr/share/offlineimap3/offlineimap/folder/IMAP.py", line 752, in savemessage
        raise OfflineImapError(
    
    
    

    Steps to reproduce the error

    I cannot find the offending email message, but my offlineimap run fails every time due to this TOOBIG error. Any help to further characterize the problem or to debug this?

    opened by cpbl 0
  • MemoryError when using Maildir with large emails (>10MB)

    MemoryError when using Maildir with large emails (>10MB)

    General informations

    • system/distribution (with version): Linux 4.9.0-19-686-pae #1 SMP Debian 4.9.320-2 (2022-06-30) i686 GNU/Linux
    • offlineimap version (offlineimap -V): 7.3.4
    • Python version: 2.7.13
    • server name or domain: N/A
    • CLI options:

    Configuration file offlineimaprc

    [general]
    accounts = Gmail
    maxsyncaccounts = 1
    ui = basic
    socktimeout = 30
    
    [Account Gmail]
    localrepository = Local
    remoterepository = Remote
    autorefresh = 2
    quick = 10
    
    [Repository Local]
    type = Maildir
    localfolders = ~/Maildir
    sep = .
    nametrans = lambda foldername:  re.sub('.Drafts', '[Gmail].Drafts',
                                    re.sub('.Sent', '[Gmail].Sent Mail',
                                    re.sub('.Trash', '[Gmail].Trash', foldername)))
    
    
    [Repository Remote]
    type = IMAP
    remotehost = imap.gmail.com
    ssl = yes
    sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    starttls = no
    remoteuser = xxx
    auth_mechanisms = XOAUTH2
    oauth2_client_id = xxx.apps.googleusercontent.com
    oauth2_client_secret = xxx
    oauth2_request_url = https://accounts.google.com/o/oauth2/token
    oauth2_refresh_token = xxx
    maxconnections = 1
    keepalive = 60
    
    folderfilter = lambda foldername: foldername in ['INBOX', '[Gmail]/Sent Mail', '[Gmail]/Drafts', '[Gmail]/Trash']
    nametrans = lambda foldername:  re.sub('.*Drafts$', '.Drafts',
                                    re.sub('.*Sent Mail$', '.Sent',
                                    re.sub('.*Trash$', '.Trash',
                                    re.sub('^INBOX', '', foldername))))
    

    pythonfile (if any)

    N/A
    

    Logs, error

    2022-08-10 18:10:49 ERROR: ERROR: Copying message -1 [acc: Gmail]
      
    2022-08-10 18:10:49 ERROR: ERROR: while syncing  [account Gmail]
      
    2022-08-10 18:10:49 ERROR: ERROR: ERROR in syncfolder for Gmail folder : Traceback (most recent call last):
      File "/home/user/install/offlineimap-7.3.0/offlineimap/accounts.py", line 662, in syncfolder
        localfolder.syncmessagesto(remotefolder, statusfolder)
      File "/home/user/install/offlineimap-7.3.0/offlineimap/folder/Base.py", line 1116, in syncmessagesto
        action(dstfolder, statusfolder)
      File "/home/user/install/offlineimap-7.3.0/offlineimap/folder/Base.py", line 944, in __syncmessagesto_copy
        self.copymessageto(uid, dstfolder, statusfolder, register=0)
      File "/home/user/install/offlineimap-7.3.0/offlineimap/folder/Base.py", line 839, in copymessageto
        message = self.getmessage(uid)
      File "/home/user/install/offlineimap-7.3.0/offlineimap/folder/Maildir.py", line 273, in getmessage
        retval = file.read()
    MemoryError
    

    Steps to reproduce the error

    Trying to sync Maildir<->Gmail with an email >10MB

    opened by fcueto 0
  • IMAP4 protocol error - cannot use a bytes pattern on a string-like object

    IMAP4 protocol error - cannot use a bytes pattern on a string-like object

    General informations

    • system/distribution (with version): OpenSuSE Tumbleweed
    • offlineimap version (offlineimap -V): offlineimap v7.3.4, imaplib2 v2.101 (bundled), Python v3.10.5, OpenSSL 1.1.1o 3 May 2022
    • Python version: Python 3.10.5
    • server name or domain: local instance of Davmail
    • CLI options: none

    Configuration file offlineimaprc

    [general] accounts = intel

    [Account intel] localrepository = intel-local remoterepository = intel-remote

    [Repository intel-local] type = Maildir localfolders = ~/Mail/intel

    [Repository intel-remote] type = IMAP starttls = no ssl = no remotehost = localhost remoteport = 1143 remoteuser = valir remotepass = somePassword auth_mechanisms = LOGIN maxconnections = 3

    [mbnames] enabled = yes filename = ~/.mutt/mailboxes header = "mailboxes " peritem = "+%(accountname)s/%(foldername)s" #peritem = "~/Mail/movidius/%(foldername)s" sep = " " footer = "\n"

    pythonfile (if any)

    no python file

    Logs, error

    $ offlineimap 130 ↵ OfflineIMAP 7.3.4 Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception) imaplib2 v2.101 (bundled), Python v3.10.5, OpenSSL 1.1.1o 3 May 2022 Account sync intel: *** Processing account intel Establishing connection to localhost:1143 (intel-remote) ERROR: While attempting to sync account 'intel' IMAP4 protocol error: program error: <class 'TypeError'> - cannot use a bytes pattern on a string-like object *** Finished account 'intel' in 0:00 ERROR: can't have text and binary mode at once ERROR: Exceptions occurred during the run! ERROR: While attempting to sync account 'intel' IMAP4 protocol error: program error: <class 'TypeError'> - cannot use a bytes pattern on a string-like object

    Traceback: File "/home/vrusu/.local/lib/python3.10/site-packages/offlineimap/accounts.py", line 293, in syncrunner self.__sync() File "/home/vrusu/.local/lib/python3.10/site-packages/offlineimap/accounts.py", line 372, in __sync remoterepos.getfolders() File "/home/vrusu/.local/lib/python3.10/site-packages/offlineimap/repository/IMAP.py", line 452, in getfolders imapobj = self.imapserver.acquireconnection() File "/home/vrusu/.local/lib/python3.10/site-packages/offlineimap/imapserver.py", line 574, in acquireconnection imapobj = imaplibutil.WrappedIMAP4( File "/home/vrusu/.local/lib/python3.10/site-packages/offlineimap/imaplibutil.py", line 237, in init IMAP4.init(self, *args, **kwargs) File "/home/vrusu/.local/lib/python3.10/site-packages/offlineimap/bundled_imaplib2.py", line 399, in init self.welcome = self._request_push(name='welcome', tag='continuation').get_response('IMAP4 protocol error: %s')[1] File "/home/vrusu/.local/lib/python3.10/site-packages/offlineimap/bundled_imaplib2.py", line 200, in get_response raise typ(exc_fmt % str(val))

    ERROR: can't have text and binary mode at once

    Steps to reproduce the error

    This is a fresh install, on a newly installed system, so:

    • install and start Davmail on port 1143
    • copy the configuration file above
    • attempt to run offlineimap
    opened by valir 2
Releases(v6.5.6-rc1)
  • v6.5.6-rc1(May 25, 2014)

    First release candidate for the upcoming v6.5.6

    Changes since 6.5.5:

    • Add knob to invoke folderfilter dynamically on each sync (GitHub#73)
    • Add knob to apply compression to IMAP connections (Abdó Roig-Maranges)
    • Add knob to filter some headers before uploading message to IMAP server (Abdó Roig-Maranges)
    • Allow to sync GMail labels and implement GmailMaildir repository that adds mechanics to change message labels (Abdó Roig-Maranges)
    • Allow to migrate status data across differend backends (Abdó Roig-Maranges)
    • Support XDG Base Directory Specification (if $XDG_CONFIG_HOME/offlineimap/config exists, use it as the default configuration path; ~/.offlineimaprc is still tried after XDG location) (GitHub#32)
    • Allow multiple certificate fingerprints to be specified inside 'cert_fingerprint'
    Source code(tar.gz)
    Source code(zip)
  • v6.5.5-rc3(Sep 20, 2013)

    This is a long overdue release candidate. It includes many fixes from the time of 6.5.5-rc2, here they are:

    • Avoid lockups for IMAP synchronizations running with the "-1" command-line switch (X-Ryl669 [email protected])
    • Dump stacktrace for all threads on SIGQUIT: ease debugging of threading and other issues
    • SIGHUP is now handled as the termination notification rather than the signal to reread the configuration (Dmitrijs Ledkovs)
    • Honor the timezone of emails (Tobias Thierer)
    • Allow mbnames output to be sorted by a custom sort key by specifying a 'sort_keyfunc' function in the [mbnames] section of the config.
    • Support SASL PLAIN authentication method. (Andreas Mack)
    • Support transport-only tunnels that requre full IMAP authentication. (Steve Purcell)
    • Make the list of authentication mechanisms to be configurable. (Andreas Mack)
    • Allow to set message access and modification timestamps based on the "Date" header of the message itself. (Cyril Russo)
    • "peritem" format string for [mbnames] got new expansion key "localfolders" that corresponds to the same parameter of the local repository for the account being processed.
    • [regression] pass folder names to the foldersort function, revert the documented behaviour
    • Fix handling of zero-sized IMAP data items (GitHub#15).
    • Updated bundled imaplib2 to 2.35:
      • fix for Gmail sending a BYE response after reading >100 messages in a session;
      • includes fix for GitHub#15: patch was accepted upstream.
    • Updated bundled imaplib2 to 2.36: it includes support for SSL version override that was integrated into our code before, no other changes.
    • Fixed parsing of quoted strings in IMAP responses: strings like "" were treated as having " as the escaped quote, rather than treating it as the quoted escaped backslash (GitHub#53).

    Release cycle for 6.5.5 should be really fast, only critical fixes should go into it, the rest will go into 6.5.6.

    Happy testing!

    Source code(tar.gz)
    Source code(zip)
Owner
OfflineIMAP
Work with mails how you need to.
OfflineIMAP
A free & open modern, fast email client with user-friendly encryption and privacy features

Welcome to Mailpile! Introduction Mailpile (https://www.mailpile.is/) is a modern, fast web-mail client with user-friendly encryption and privacy feat

mailpile 8.7k Jan 04, 2023
Read/sync your IMAP mailboxes (python2)

Upstream status (master branch): Upstream status (next branch): Financial contributors: Links: Official github code repository: offlineimap Website: w

OfflineIMAP 1.7k Dec 29, 2022
Conference planning tool: CfP, scheduling, speaker management

pretalx is a conference planning tool focused on providing the best experience for organisers, speakers, reviewers, and attendees alike. It handles th

496 Dec 31, 2022
Synapse: Matrix reference homeserver

Synapse Contents Introduction About Matrix Support Synapse Installation Connecting to Synapse from a client Registering a new user from a client ACME

matrix.org 10.4k Jan 02, 2023
Askbot is a Django/Python Q&A forum. **Contributors README**: https://github.com/ASKBOT/askbot-devel#how-to-contribute. Commercial hosting of Askbot and support are available at https://askbot.com

ATTENTION: master branch is experimental, please read below Askbot - a Django Q&A forum platform This is Askbot project - open source Q&A system, like

ASKBOT 1.5k Dec 28, 2022
Mail hosting made simple

Modoboa Modoboa is a mail hosting and management platform including a modern and simplified Web User Interface. It provides useful components such as

Modoboa 2.4k Jan 05, 2023
Abilian Social Business Engine - an enterprise social networking / collaboration platform.

About Abilian SBE (Social Business Engine) is a platform for social business applications, and more specifically collaborative / enterprise 2.0 busine

Abilian open source projects 63 Dec 29, 2022
Generate links that users can use to submit messages encrypted with your public key.

Hawkpost Hawkpost lets you create unique links that you can share with the person that desires to send you important information but doesn't know how

Whitesmith 901 Dec 27, 2022
Securely and anonymously share files, host websites, and chat with friends using the Tor network

OnionShare OnionShare is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor ne

Micah Lee 5.4k Jan 02, 2023
MoinMoin Wiki Development (2.0+), unstable, for production please use 1.9.x.

MoinMoin - a wiki engine in Python MoinMoin is an easy to use, full-featured and extensible wiki software package written in Python. It can fulfill a

MoinMoin Wiki Engine 240 Dec 22, 2022
ProPublica's collaborative tip-gathering framework. Import and manage CSV, Google Sheets and Screendoor data with ease.

Collaborate This is a web application for managing and building stories based on tips solicited from the public. This project is meant to be easy to s

ProPublica 86 Oct 18, 2022
Indico - A feature-rich event management system, made @ CERN, the place where the Web was born.

Indico Indico is: 🗓 a general-purpose event management tool; 🌍 fully web-based; 🧩 feature-rich but also extensible through the use of plugins; ⚖️ O

Indico 1.4k Dec 31, 2022
Web based localization tool with tight version control integration.

Weblate is a copylefted libre software web-based continuous localization system, used by over 1150 libre projects and companies in more than 115 count

Weblate 3.3k Jan 02, 2023
Reference client for Bitmessage: a P2P encrypted decentralised communication protocol:

PyBitmessage Bitmessage is a P2P communication protocol used to send encrypted messages to another person or to many subscribers. It is decentralized

Bitmessage 2.7k Dec 30, 2022
Build SMS applications with Python

RapidSMS RapidSMS is a free and open source framework for building interactive SMS applications, which integrates tightly with Django to provide a ric

RapidSMS 622 Dec 31, 2022
Zulip server and webapp - powerful open source team chat

Zulip overview Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of

Zulip 17k Jan 07, 2023
GlobaLeaks is free, open source software enabling anyone to easily set up and maintain a secure whistleblowing platform.

GlobaLeaks is free, open souce software enabling anyone to easily set up and maintain a secure whistleblowing platform. Continous Integration and Test

GlobaLeaks 995 Jan 01, 2023
Online translation tool

Pootle Docs | Changes | Issues | Community Support | Contributing | Development Channel Pootle is an online translation and localization tool. It work

Translate 1.4k Jan 06, 2023
PyZMQ: Python bindings for zeromq

PyZMQ: Python bindings for ØMQ This package contains Python bindings for ØMQ. ØMQ is a lightweight and fast messaging implementation. PyZMQ should wor

The ZeroMQ project 3.2k Jan 02, 2023
Easy HTML form without PHP or JavaScript

This repository is no longer active. If you're looking for a simple and powerful hosted form API, please check out https://formspree.io. If you are in

Formspree 2.8k Dec 22, 2022