summaryrefslogtreecommitdiff
path: root/src/leap/mail/imap
AgeCommit message (Collapse)Author
2015-06-29[bug] allow mailbox to be notified of collection changesKali Kaneko
in a previous refactor, we decoupled the incoming mail service from the IMAP layer. However, this left the IMAPMailbox unable to react to changes in the underlying collection when a new message is inserted. in this commit, we add a Listener mechanism to the collection itself, so that IMAPMailbox (and any other object that uses it) can subscribe to changes on the number of messages of the collection. Resolves: #7191 Releases: 0.4.0
2015-06-25[bug] avoid duplication of copies in draft folderKali Kaneko
Although this draft-saving feature seems to be somehow brittle, since it breaks from time to time, the causes are different and subtle on each case. This time the bug is related to having the notify_just_mdoc (or fast_notifies as I'm tempted to call it in the future for more clarity) set to True by default in the APPENDS. Fast notifies break the "save draft" functionality because what Thunderbird does is an Append of the newest message, followed by deletion of the old message and a SEARCH by Message-ID. For this we need the headers-doc to be already inserted in the store. Since the fast-notify makes a *big* difference in terms of insertion times for serialized appends, I've opted for using a heuristic for detecting if it's the case of a Draft message, using a mozilla-specific header. If this is found, we set the notify_just_mdoc unconditionally to False. We'll deal with other MUAs on its due time. Releases: 0.4.0
2015-06-25[bug] saving message to drafts folder hangsKali Kaneko
the bug consist on a fetch-while-pending-inserts hanging. the pending insert dict was not being cleaned up because the lookup for the Message-Id *is* case-sensitive (in the headers dict). by using a temporary all-keys-lowercase dict the lookup can be performed right, and the fetch returns successfully. at this point there's still a pending bug with Drafts, and it is that the new version is inserted but the MUA (TB) doesn't hide the older version (although a Delete flag is added). Resolves: #7189, #7190 Releases: 0.4.0
2015-06-22[bug] fixes for display attachments and move between folders0.4.0-alphaKali Kaneko
- Add errback handling to catch properly errors that were not allowing the complete insertion of the parts for a given message. Fixes blank attachments and moving of messages to different folders. - Force overwritting of mdoc when it is a copy. This was avoiding a message to be copied back to a folder from where it already had been copied to another (since the mdoc was already existing there, with the same doc_id, which was forbidding the creation of the new one). This case also needs special care in the indexer, since we have to delete the old hash entry first. Closes: #7178, #7158
2015-06-05[refactor] move hooks to accountKali Kaneko
2015-06-05[feature] post-sync mail processing hooksKali Kaneko
using the new soledad plugin capablity, mail hooks to the post-sync event by subscribing to the Meta-Doc type of documents. In this way, we can create the uid tables and the uid entries needed to keep local indexes for mail that has been processed in another instance. however, this won't prevent a conflict if a given mail is received and processed in two different instances. that is a problem that we still have to deal with. Resolves: #6996 Releases: 0.4.0
2015-05-14[feat] adapt to new events api on commonIvan Alejandro
- Related: #6359
2015-04-28[feature] implement substring body fetchKali Kaneko
Current twisted implementation correctly parses partial fetches using substrings by use of angle brackets (see section 6.4.5 of imap rfc), but no use is made of the requested substring in the spew_body method. this commit minimally implements conformance to the substring request, although further boundary checks should be made (ie, checking whether the starting octet is beyond the end of the text). Resolves: #6841 Releases: 0.4.0
2015-03-30[bug] fix early append notificationKali Kaneko
There's a workaround for "slow" APPENDS to an inbox, and it is that we have a flag to allow returning early when JUST the mdoc (the meta-document) has been written. However, this was givin a problem when doing a FETCH right after an APPEND (with notify_just_mdoc=True) has been done. This commit fixes it by making the FETCH command first check if there's an ongoing pending write, and queueing itself right after the write queue has been completed. This fixes the testFullAppend regression. Releases: 0.4.0
2015-03-30[bug] move creation_ts to mail generic apiKali Kaneko
This also fixes a bug in which INBOX wasn't being given a creation timestamp, and therefore always being identified with the same UIDVALIDITY = 1, which could be confusing MUAs since this value should be unique, and it's relied on to uniquely identifying a given message. Releases: 0.4.0
2015-03-30[feature] make deferred list error-tolerantKali Kaneko
just in case Releases: 0.4.0
2015-03-30[bug] temporary workaround to allow display on some muasKali Kaneko
Until we implement sequences, this avoids breaking with certain MUAs like mutt. Releases: 0.4.0
2015-03-30[bug] re-add fix for multiple headersKali Kaneko
This fix stores as multi-line headers that are repeated, and that were being discarded when storing them in a regular dict. It had been removed during the last refactor. I also store headers now as a case-insensitive dict, which solves other problems with the implementation of the twisted imap. Releases: 0.4.0
2015-03-23[bug] fix wrong case in the boundary passed in BODYSTRUCTUREKali Kaneko
By removing this call to lower(), we avoid a bug in which the BODYSTRUCTURE response returns a boundary all in lower case. Should send patch upstream to twisted. Related: #6773
2015-03-23[bug] add extra CRLF to avoid bad mime parsing in ThunderbirdKali Kaneko
Thunderbird (as of 37.0b1) will display a blank body (with no attachments) if some conditions are met: * disk synchronization is disabled * mime_part_on_demand = true * msg size is bigger than the parts_on_demand threshold (30000 by default). Comparing the logs with a well behaved imap server (dovecot, on this case), it's easy to see that twisted implementation is lacking an extra line separator at the end of each group of headers that is rendered in response to each of the `BODY.PEEK[X.MIME]` command that the mime_parts_on_demand will issue after getting the BODYSTRUCTURE. This change patches the spew_body command on the body server. We still would have to see if this is a bad behaviour in the thunderbird side. The most similar bug I've found is: https://bugzilla.mozilla.org/show_bug.cgi?id=149771 Which apparently was happening with exchange server. We should send the patch to upstream twisted as well. Note that this fix is not enough: the following commit, about fixing the case of the boundary passed in the BODYSTRUCTURE response is also needed to fix the bug (since a bad parsing happens all the same). Resolves: #6773, #5010 Documentation: #6773 Releases: 0.4.0
2015-03-03[bug] Fix testExpunge testsKali Kaneko
this test was failing randomly because we were returning the deferred before all the documents were saved into soledad store. changed also the delete_msg deferred chaining for better readability. Releases: 0.9.0
2015-03-03[bug] Fix IllegalMailboxCreateKali Kaneko
We're raising the exception now, not a Failure. Releases: 0.9.0
2015-03-03[refactor] remove dead code in IMAP implementationKali Kaneko
while updating the tests, I found that IMAPMessageCollection was not actually being used: all the work is done in IMAPMailbox, using directly the MessageCollection instance. So, this extra level of abstraction was finally not used. Releases: 0.9.0
2015-03-03cast generator to list; change expected after renameKali Kaneko
2015-03-03pass date explicitely, fix partial_append testKali Kaneko
it is interpreted as "tags" otherwise.
2015-02-25undo duplication of add_msg method in mail apiKali Kaneko
* Set the internal date from within the incoming mail service.
2015-02-24move notifications cb to mail moduleKali Kaneko
2015-02-20fix typo on method nameKali Kaneko
2015-02-20notify MUA on closing connectionKali Kaneko
2015-02-20fix broken multipart attachment renderingKali Kaneko
2015-02-20change environment variable for mail configKali Kaneko
2015-02-18Use MessageCollection instead of IMAPMailbox in IncomingMailRuben Pollan
2015-02-11append/copy performance improvementKali Kaneko
2015-02-11implement copy interfaceKali Kaneko
2015-02-11rename lingering , that is ambiguousKali Kaneko
2015-02-11save drafts: search by msg-idKali Kaneko
2015-02-11Fix recent/unseen notificationsKali Kaneko
2015-02-11re-add support for basic multipart messagesKali Kaneko
2015-02-11lots of little fixes after meskio's reviewKali Kaneko
mostly having to do with poor, missing or outdated documentation, naming of confusing things and reordering of code blocks for improved readability.
2015-02-11rename confusing attribute for accountKali Kaneko
2015-02-11imap: implement setting of message flagsKali Kaneko
2015-02-11imap: complete FETCH implementationKali Kaneko
2015-02-11tests: add link related to trial block with syncKali Kaneko
2015-02-11Refactor fetch into leap.mail.incoming IServiceRuben Pollan
2015-02-11patch cbSelect to accept deferreds for count*Kali Kaneko
2015-02-11Complete IMAP implementation, update testsKali Kaneko
2015-02-11Use mailbox uuidsKali Kaneko
The previous implementation is naive, since it imposes a burden when renaming mailboxes. We're using uuids in the local uid tables instead, which is more cryptic but way more efficient. * receive mbox uuid instead of name * use mailbox uuid in identifiers
2015-02-11tests for mail.mail module: MessageKali Kaneko
2015-02-11cleanup imap implementationKali Kaneko
2015-02-11Serializable Models + Soledad AdaptorKali Kaneko
2015-02-11New keymanager async APIRuben Pollan
2015-02-11adapt to soledad 0.7 async APIKali Kaneko
2015-02-11specify not syncable shared dbKali Kaneko
2015-01-05Port `enum` to `enum34`Ruben Pollan
2014-11-04Discover public key via attachmentRuben Pollan