Git Product home page Git Product logo

imapfw's Introduction

Financial contributors: Financial Contributors on Open Collective

Links:

OfflineIMAP

"Get the emails where you need them."

IMPORTANT NOTE: This repository is for python2 only. The support for offlineimap3 is happening in Official offlineimap for python3.

I'll still lazily maintain this legacy offlineimap but users should definitely go with offlineimap3.

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

The offlineimap project was forked to offlineimap3 to support python3. Contributions are welcome to this project.

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.x

  • 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: See the offlineimap3 fork of offlineimap.

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

imapfw's People

Contributors

ishankhare07 avatar nicolas33 avatar rafiot avatar uliska avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imapfw's Issues

Using imapfw to analyze attachements

My goal is to bundle an IMAP proxy usable by endusers to sanitize email attachments transparently.

I am the maintainer of PyCIRClean and I'm going to write a python script that takes an email as input, lookup the attachment(s) with a script similar to this one, reattach the payload and return a "sanitized" email.

My question is the following: is there an easy way to hook a module to imapfw? I didn't find it in the documentation, sorry if I missed it.

The next GSoC

Hello Nicolas,
I read the sad blog entry about the 2016 GSoC and how Gentoo organization didn't select imapfw because another project was more relevant to the their operating system distro.

I wanted to encourage you to try it again with an OfflineIMAP.org organization (similar to jisti.org which is also tiny, and many other small github organizations) and apply for the next GSoC.
https://summerofcode.withgoogle.com/organizations/?sp-page=3

"What are the eligibility requirements for a mentoring organization?

To be eligible to participate as a mentoring organization, you must be a group running an active free/open source software project, e.g. BRL-CAD. The project does not need to be a legally incorporated entity. Mentoring organizations must have already produced and released software under an Open Source Initiative approved license and have at least two contributors to serve as organization administrators and/or mentors for the entire program in order to participate in the program."

https://developers.google.com/open-source/gsoc/faq

how to start contributing

Nicolas:

This isn't so much an issue as it is a question about how I might best offer assistance. I didn't find an email address on your account or on the website, so I thought I'd start here.

I have a long history of development, but I'm new to this specific area. I'd really like to learn more about it and I generally learn best by digging in and doing some work.

Let me know

Joe (CreativelyMe)

Avoiding redundant storage using hard links?

I am currently using offlineimap and only fetch my "All Mail" folder from Gmail and get my labels using the X-keywords header. I was however wondering if it would be possible to do de-duplication of mail by hard linking email identified identical email across folders when e.g. working with Gmail.

Is this something that has been discussed for imapfw?

IMAP timeout not configurable

Given this BT:

CRITICAL: Account.0.Driver.0 unhandled error occurred while reacting to event ('connect', (), {}): abort: IMAP4 protocol error: no response after 2 secs
ERROR   : IMAP4 protocol error: no response after 2 secs
Traceback (most recent call last):
  File "/home/michael/workspace/imapfw/imapfw/edmp.py", line 404, in react
    self._cache[topic] = self._react(topic, args, kwargs)
  File "/home/michael/workspace/imapfw/imapfw/edmp.py", line 382, in _react
    return func(*args, **kwargs)
  File "/home/michael/workspace/imapfw/imapfw/drivers/imap.py", line 31, in connect
    return self.imap.connect(host, port)
  File "/home/michael/workspace/imapfw/imapfw/imap/imap.py", line 125, in connect
    self.imap = imaplib2.IMAP4(host, port, debug=3, timeout=2)
  File "/home/michael/workspace/imapfw/imapfw/imap/imaplib3/imaplib2.py", line 372, in __init__
    self.welcome = self._request_push(name='welcome', tag='continuation').get_response('IMAP4 protocol error: %s')[1]
  File "/home/michael/workspace/imapfw/imapfw/imap/imaplib3/imaplib2.py", line 188, in get_response
    raise typ(exc_fmt % str(val))
imapfw.imap.imaplib3.imaplib2.abort: IMAP4 protocol error: no response after 2 secs

It would be nice to be able to set this on a per-connection level in the rascal file. And in any case, two seconds seem to be really short. I guess a sane default would be at least 10 seconds, probably even 30.

Comparison with offlineimap

I'm currently trying to decide between offlineimap, imapfw and mbsync/isync.

As such, a comparison between all three of them would be nice to help people decide, but is probably out of scope here - but since you're familiar with at least offlineimap and imapfw and slightly competing against your previous stable software here: how does offlineimap compare to imapfw, and what's the status, what's supported by each one of them and what isn't, and so on. Is there an overview somewhere?

UID Move/UID Copy

Hi,

The readme suggests that imapfw will use UIDPLUS and/or UID MOVE capabilities. Is this so? When do you think these capabilities might be implemented.

I believe that offlineimap does not use these capabilities when moving mail between folders. Is that correct? If so, do you think it might be an easy fix?

Thanks,
Colin

Notify on new releases

Github sucks hard when it comes to notifications.
New releases will be announced here so that watchers can be aware of new releases.

Sane defaults for rascal files

This seems to be the minimal rascal file to get some simple IMAP sync going on:

from imapfw.api import engines, types, drivers
MainConf = {'max_sync_accounts': 1}

def configure(ui):
    pass

class ImapLeft(types.Imap):
    conf = dict(backend='imaplib3',
                host='mail.your-server.de',
                port='993',
                username='username1',
                password='password1')
    driver = drivers.Imap

class ImapRight(types.Imap):
    conf = dict(backend='imaplib3',
                host='mail.your-server.de',
                port='993',
                username='username2',
                password='password2')
    driver = drivers.Imap

class MainAccount(types.Account):
    left = ImapLeft
    right = ImapRight

For a simple config file this is an insane amount of verboseness. Why do I need to define configure, if it's totally fine if it doesn't do anything? Why is there no default-configure, if none is provided in the rascal file? Why do I need to set MainConf, if the number of useful processes could perfectly be autodetected, if not provided in the config? Why do I need to specify any backend, if imaplib3 seems to be a sane default for any subclass of types.Imap? Why define a driver, if drivers.Imap is again a sane default?

For the sake of making something actually useful for enduser out of this project, please, provide some sane defaults! I'd also like to suggest to provide an alternative way of configuration using simple yaml files, for anyone who just wants to use the program for simple syncs, without any intention to write programs with it.

async is a reserved word

def async(topic)

line 294 of imapfw/edmp.py

what about naming it "asyn" or just "asynchronous"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.