Salmon has been released uner the GNU GPLv3, as published by the FSF.

Salmon is a pure Python mail server designed to create robust and complex mail applications in the style of modern web frameworks. Salmon is designed to sit behind a traditional mail server in the same way a web application sits behind Apache or Nginx. It has all the features of a web application stack (templates, routing, handlers, state machine) and plays well with other libraries, such as Django and SQLAlchemy.

Yet, you don’t have to configure everything to get stated. A simple salmon gen command lets you get an application up and running quick.

Easily configurable to use alternative sending and receiving systems, database libraries, or any other systems you need to talk to.

Ability to use Jinja2 or Mako templates to craft emails including the headers.

A flexible and easy to use routing system lets you write stateful or stateless handlers of your email.

Salmon can also run in a completely separate virtualenv for easy deployment.

Can run as an non-root user on privileged ports to reduce the risk of intrusion.

Supports working with Maildir queues to defer work and distribute it to multiple machines.

Sends nearly pristine clean mail that is easier to process by other receiving servers.

Handles mail in almost any encoding and format, including attachments, and canonicalizes them for easier processing.

Written in portable Python that should run on almost any Unix server.

Salmon supports running in many contexts for processing mail using the best technology currently available. Since Salmon is aiming to be a modern mail server and Mail processing framework, it has some features you don’t find in any other Mail server.

Project Information¶

Project documentation can be found here

Fork¶ Salmon is a fork of Lamson. In the summer of 2012 (2012-07-13 to be exact), Lamson was relicensed under a BSD variant that was revokable. The two clauses that were of most concern: 4. Contributors agree that any contributions are owned by the copyright holder and that contributors have absolutely no rights to their contributions . 5. The copyright holder reserves the right to revoke this license on anyone who uses this copyrighted work at any time for any reason . I read that to mean that I could make a contribution but then have said work denied to me because the original author didn’t like the colour of my socks. So I went and found the latest version that was available under the GNU GPL version 3. Salmon is an anagram of Lamson, if you hadn’t worked it out already.

Source¶ You can find the source on GitHub: https://github.com/moggers87/salmon

Status¶ Salmon has just had some major changes to modernise the code-base. The main APIs should be compatible with releases prior to 3.0.0, but there’s no guarantee that older applications won’t need changes. Python versions supported are: 3.5, 3.6, 3.7 and 3.8. See the CHANGELOG for more details on what’s changed since Salmon version 2.

License¶ Salmon is released under the GNU GPLv3 license, which can be found here

Contributing¶ Pull requests and issues are most welcome. Please read our code of conduct before contributing! I will not accept code that has been submitted for inclusion in the original project due to the terms of its new licence.