All Projects → moggers87 → Salmon

moggers87 / Salmon

Licence: other
A Python Mail Server

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Salmon

Exim
Exim Mail Transport Agent - source, testsuite and documentation
Stars: ✭ 545 (+13.07%)
Mutual labels:  email, smtp, smtp-server
Notqmail
Collaborative open-source successor to qmail
Stars: ✭ 255 (-47.1%)
Mutual labels:  email, smtp, smtp-server
Papercut Smtp
Papercut SMTP -- The Simple Desktop Email Server
Stars: ✭ 2,094 (+334.44%)
Mutual labels:  email, smtp, smtp-server
yggmail
End-to-end encrypted email for the mesh networking age
Stars: ✭ 72 (-85.06%)
Mutual labels:  email, smtp, smtp-server
Sendria
Sendria (formerly MailTrap) is a SMTP server designed to run in your dev/test environment, that is designed to catch any email you or your application is sending, and display it in a web interface instead of sending to real world.
Stars: ✭ 30 (-93.78%)
Mutual labels:  email, smtp, smtp-server
Aiosmtpd
A reimplementation of the Python stdlib smtpd.py based on asyncio.
Stars: ✭ 195 (-59.54%)
Mutual labels:  email, smtp, smtp-server
Magento 2 Smtp
Magento 2 SMTP Extension helps the owner of store simply install SMTP (Simple Mail Transfer Protocol) server which transmits the messages into codes or numbers.
Stars: ✭ 228 (-52.7%)
Mutual labels:  email, smtp, smtp-server
docker-protonmail-bridge
Run ProtonMail Bridge in a docker container
Stars: ✭ 34 (-92.95%)
Mutual labels:  smtp, smtp-server
smtp-dkim-signer
SMTP-proxy that DKIM-signs e-mails before submission to an upstream SMTP-server.
Stars: ✭ 28 (-94.19%)
Mutual labels:  smtp, smtp-server
Docker Smtp
SMTP docker container
Stars: ✭ 447 (-7.26%)
Mutual labels:  smtp, smtp-server
haraka-plugin-mongodb
Plugin for the Haraka SMTP server to store incoming and outgoing emails to MongoDB
Stars: ✭ 25 (-94.81%)
Mutual labels:  smtp, smtp-server
ESP-Mail-Client
⚡️Arduino Mail Client Library to send, read and get incoming mail notification for ESP32, ESP8266 and SAMD21 devices. The library also supported other Arduino devices using Clients interfaces e.g. WiFiClient, EthernetClient, and GSMClient.
Stars: ✭ 78 (-83.82%)
Mutual labels:  email, smtp
jolimail
Send nice emails
Stars: ✭ 78 (-83.82%)
Mutual labels:  smtp, smtp-server
go-html-email
Sending HTML email using Go 💌
Stars: ✭ 31 (-93.57%)
Mutual labels:  email, smtp
tmail
A throwaway smtp server with API
Stars: ✭ 13 (-97.3%)
Mutual labels:  email, smtp
mailx
A lightweight SMTP mail library
Stars: ✭ 17 (-96.47%)
Mutual labels:  email, smtp
smtp-translator
An SMTP server that converts emails into Pushover notifications.
Stars: ✭ 23 (-95.23%)
Mutual labels:  email, smtp-server
Phpmailer
The classic email sending library for PHP
Stars: ✭ 17,485 (+3527.59%)
Mutual labels:  email, smtp
Magento2 Gmail Smtp App
Configure Magento 2 to send email using Google App, Gmail, Amazon Simple Email Service (SES), Microsoft Office365 and many other SMTP (Simple Mail Transfer Protocol) servers
Stars: ✭ 281 (-41.7%)
Mutual labels:  email, smtp
Deltachat Core Rust
Delta Chat Rust Core library, used by Android/iOS/desktop apps and bindings
Stars: ✭ 300 (-37.76%)
Mutual labels:  email, smtp

|Build Status| |Coverage| |docs|

Salmon - A Python Mail Server

.. inclusion-marker-do-not-remove-start

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.

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

Features

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.

  • Written in portable Python that should run on almost any Unix server.
  • Handles mail in almost any encoding and format, including attachments, and canonicalizes them for easier processing.
  • Sends nearly pristine clean mail that is easier to process by other receiving servers.
  • Properly decodes internationalized mail into Python unicode, and translates Python unicode back into nice clean ascii and/or UTF-8 mail.
  • Supports working with Maildir queues to defer work and distribute it to multiple machines.
  • Can run as an non-root user on privileged ports to reduce the risk of intrusion.
  • Salmon can also run in a completely separate virtualenv for easy deployment.
  • A flexible and easy to use routing system lets you write stateful or state
    less handlers of your email.
  • Ability to use Jinja2 or Mako templates to craft emails including the headers.
  • Easily configurable to use alternative sending and receiving systems, database libraries, or any other systems you need to talk to.
  • 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.
  • Finally, many helpful commands for general mail server debugging and cleaning.

Installing

pip install salmon-mail

Project Information

Project documentation can be found here <http://salmon-mail.readthedocs.org/>__

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 <https://github.com/moggers87/salmon/blob/master/LICENSE>__

Contributing

Pull requests and issues are most welcome. Please read our code of conduct <https://github.com/moggers87/salmon/blob/master/CODE_OF_CONDUCT.md>__ 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.

Code Of Conduct

The Salmon project has adopted the Contributor Covenant Code version 1.4. By contributing to this project, you agree to abide by its terms.

The full text of the code of conduct can be found here <https://github.com/moggers87/salmon/blob/master/CODE_OF_CONDUCT.md>__

Testing

The Salmon project needs unit tests, code reviews, coverage information, source analysis, and security reviews to maintain quality. If you find a bug, please take the time to write a test case that fails or provide a piece of mail that causes the failure.

If you contribute new code then your code should have as much coverage as possible, with a minimal amount of mocking.

Tests can be run via::

$ python setup.py test

Alternatively, if you have multiple versions of Python installed locally::

$ pip install tox
$ tox -e py36,py37

Refer to the tox documentation <https://tox.readthedocs.io/en/latest/>__ for more information.

Development

Salmon is written entirely in Python and runs on Python 3. It should hopefully run on any platform that supports Python and has Unix semantics.

If you find yourself lost in source code, just yell.

PEP-8 should be followed where possible, but feel free to ignore the 80 character limit it imposes (120 is a good marker IMO).

.. inclusion-marker-do-not-remove-end

Funding

If you have found Salmon to be useful and would like to see its continued development, please consider buying me a coffee <https://ko-fi.com/moggers87>__.

.. |Build Status| image:: https://github.com/moggers87/salmon/actions/workflows/tests.yml/badge.svg :alt: Build Status :scale: 100% :target: https://github.com/moggers87/salmon/actions/workflows/tests.yml .. |Coverage| image:: https://codecov.io/github/moggers87/salmon/coverage.svg?branch=master :target: https://codecov.io/github/moggers87/salmon :alt: Coverage Status :scale: 100% .. |docs| image:: https://readthedocs.org/projects/salmon-mail/badge/?version=latest :alt: Documentation Status :scale: 100% :target: https://salmon-mail.readthedocs.io/en/latest/?badge=latest

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].