Allow for plugins.elasticsearch to be initialized as async

This will require further work, as the functions within the class expects sync comms and are thusly defined as sync functions,
but will enable async operators to quickly connect to the foal db using the pony mail config.

TBD: split into an with async functions corresponding to these??
1 file changed
tree: d26993b9658cbc9b5d43cf24884efc840bb93bea
  1. .github/
  2. docs/
  3. server/
  4. test/
  5. tools/
  6. webui/
  7. .asf.yaml
  8. .gitignore
  13. NOTICE

Apache Pony Mail Foal

Next generation suite of services and tools for Apache Pony Mail (incubating)

Type tests:CI Status, Type Tests
Unit tests:CI Status, Unit Tests

This repository aims to contain the next generation of Apache Pony Mail, a pure Python version of Apache Pony Mail with support for ElasticSearch 7.x and above.

New features in Foal:

Among other things, Foal sports the following new features:

  • Improved archiver and import tools
  • New, sleeker UI for the end user
  • Migration tools for moving to Foal
  • 100% Python backend, no Lua required
  • In-place editing of emails via web UI

Installation Guide

Please see the installation documentation for setup instructions.

Current setup requirements:

  • An operating system, such as:
    • Linux
    • FreeBSD
    • Windows
    • Mac OS
  • Python 3.7.3 or higher with dependencies from requirements.txt in tools/ and server/ as needed.
  • Web server with proxy capabilities for the UI.
  • ElasticSearch 7.x or higher.

Migration disclaimer:

While compatible with the original Pony Mail, this will not be a drop-in replacement. Migration of the old database is required, and most of the older ID generators have been dropped in favor of collision-secure generators.

Known Limitations:

  • emails are filed according to the Date: header, rather than arrival time. This can cause emails to appear in the wrong month or year, or even be future-dated.
  • Whilst the underlying database can handle any number of emails in a month, the UI and much of the API does not scale well beyond around 10,000 emails per month per list.
  • Re-archiving/importing an email that was previously hidden will unhide it in the archive.

Known limitations when migrating from older Pony Mail instances:

  • If an email is re-imported or re-archived after a migration, the database entry is currently fully replaced. This can result in loss of attributes such as alternate Permalinks.
  • The migration tool can drop Permalinks if two existing entries point to a sufficiently similar email
  • The migration tool does not fix up badly-parsed message-ids etc
  • There is no longer a 1-to-1 relationship between mbox and source entries. This can result in orphan source entries, with implications for privacy redaction.
  • Header parsing is stricter than before; in particular some unusual Message-IDs are not handled correctly. This affects use of Foal as a replacement for Apache mod_mbox mail archives.