Map inbound mail onto application-defined handlers
This package provides a framework for mapping inbound e-mail onto application-defined handlers.
Please see docs/index.rst for the documentation.
- Added an option to pass None to the the ‘pop’ method of the pending queue: in this case, the queue returns all pending messsage IDs.
- Moved to GitHub.
- Ensure that the pollster script pushes message IDs onto the pending queue, if configured.
- Added SaneFilenameMaildir, which overrides the standard library’s mailbox.Maildir to ensure that the generated filenames are strictly sortable in creation order.
- N.B.: the quarantine feature introduced in version 0.3 requires a
backward-incompatible change to the database scehma. Existing databases
will not have the extra columns required to support the new feature.
The simplest fix is as follows:
- Stop any ongoing processing using the pending database.
- Dump any existing message IDs from the database.
- Move aside the database file.
- Rerun the script which creates the database file.
- Restore any dumped message IDs.
- Added quarantine to pending queue.
- 100% unit test coverage.
- Hardened PendingQueue.pop against RFC-violating message IDs with non-decodable 8-bit characters.
- Added logging of underflows in PendingQueue.pop.
- Made PendingQueue.pop a normal method, rather than a generator.
- Added PendingQueue.logger attribute: if set, should obey the interface of a logging module logger.
- Skip incoming messages with duplicate message ids to messages we have already processed; apparently some Microsoft clients resend messages without updating the Message-Id header, in violation of RFCs.
- Fixed case where pop with multiple pending IDs and a given isolation level would cause the delete to fail with ‘database locked’. See: https://bugs.launchpad.net/karl3/+bug/364251
- Fixed bug found by inspection where “underflow” on pop would leave the message IDs which had been returned on the queue.
- Added PendingQueue.__del__ to ensure closing the SQL connection.
- MaildirStore.drainInbox: don’t remove the message from the maildir until after adding to the store.
- Made draino script explicitly commit sqlite transactions if not running in dry-run mode.
- Added isolation_level argument to MaildirStore.__init__, to allow control of how the queue commits transactions. The default, None, causes the connection to defer commits.
- Added isolation_level argument to PendingQueue.__init__, to allow control of how the queue commits transactions. The default, None, causes the connection to autocommit after each statement.
- Initial release.