Colibri needs to interact with several components on the server:
  • the MTA (such as postfix, qmail or courier), in both ways : receiving and sending emails.
  • the database (any of those supported by django : MySQL, SQLite, Postgres and others)
  • the filesystem : archives are stored on the local hard disk and are processed using standard filesystem access functions from python
  • (optional) the webserver, to provide an interface for users to (un)subscribe, browse archive, read information about the lists and so on.

Colibri itself is mainly divided in two parts : the daemon, which receives and processes emails, and, if so desired, the web frontend, which interacts with people.

How it works

When the MTA receives a mail, it puts it in the colibrid incoming spool directory. The colibri daemon reads it and finds what needs to be done. (if the colibri daemon is not running, the mails are just stored waiting for it to start). Mails can be
  • a post to a mailing list : colibri does some processing and send it back to all subscribers. The mail is also archived, and a request is made to start mhonarc later on (but not too late :0).
  • a mail requesting an action (subscribe, info...) : colibri does the action and usually reply to the mail.
  • a return of a mail sent by colibri (because of some problem) : the database is updated to take this into account.

From the interface, people can subscribe, unsubscribe, browse archive, read information about the lists, request a new password, and usually interact with the information stored in the database.


Colibri is tested against python 2.7. It is not compatible yet with Python 3, but will probably be as soon as Django is officially compatible (expected with Django 1.7 in 2014).

It requires Django 1.6.

Updated by Thomas Capricelli about 9 years ago ยท 7 revisions