Apache Pony Mail Foal (Next Generation Suite)

Clone this repo:
  1. a873f1d Merge pull request #291 from apache/dependabot/pip/multipart-approx-eq-1.3.0 by Sebb · 6 weeks ago master
  2. 2745d1a Merge pull request #290 from apache/dependabot/pip/certifi-approx-eq-2025.7.14 by Sebb · 6 weeks ago
  3. 572aa9e Update certifi requirement from ~=2025.1.31 to ~=2025.7.14 by dependabot[bot] · 6 weeks ago
  4. a976fc0 Update multipart requirement from ~=1.2.1 to ~=1.3.0 by dependabot[bot] · 6 weeks ago
  5. 7b2cf05 Need urllib3 extra for google auth by Sebb · 6 weeks ago

Apache Pony Mail Foal

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

Linting Foal Type Tests Unit Tests Integration 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.8 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 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.
  • While the underlying database can handle any number of emails a month, the UI and much of the API do not scale well beyond 10,000 emails per month per list.
  • Re-archiving/importing a previously hidden email will unhide it in the archive.

Known limitations when migrating from older Pony Mail instances:

  • The database entry is entirely replaced if an email is re-imported or re-archived after a migration. This can result in the 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, which has implications for privacy redaction.
  • Header parsing is stricter than before; some unusual message IDs are not handled correctly. This affects using Foal as a replacement for Apache mod_mbox mail archives.