Skip to main content

An asynchronous, highly configurable SMTP relay

Project description

Modern Relay

Welcome to Modern Relay’s documentation! The intention for this project is to build a mail relay that works seamlessly in the new IT landscape of cloud providers, API access, and the security measures that come with them. I’ve found that federating Microsoft 365 tenants and requiring MFA for all accounts is a great leap forward in securing organizations, but it introduces new strains on IT to integrate legacy devices/applications that an organization may not want to replace.

Modern Relay solves this problem by being a drop in replacement for the IIS-based SMTP relays that an organization likely already has in place. There are configurable “delivery agents” that Modern Relay uses to convert mail coming in from SMTP to different delivery schemes like an HTTP request to an API (e.g. Microsoft Graph). By leveraging APIs to different mail providers, you can skip licensing hassles, 2FA/app password woes, custom Exchange Online connectors, and adding another SPF address to your record.

Features

  • Fully asynchronous

  • Uses customizable delivery actions based on the origin IP address

  • Queues mail in the event of delivery failure for later resending

  • Access control to allow certain origin addresses/subnets or certain destination domains

  • Supports anonymous and plain login schemes

  • Supports STARTTLS if you provide the certs

  • Supports Microsoft Graph API mail delivery

Requirements

You need at least Python 3.6 to use this library

Supported Platforms

ModernRelay is tested on CPython and PyPy3.7 for the following platforms:

  • Windows 10

  • Ubuntu 20.04

  • Ubuntu 18.04

Installation

For Linux or Windows environments where you’re managing your own python installation, install with pip:

pip install modernrelay

You will need to set the appropriate environment variables for your chosen delivery agents. See individual agent documentation for more details.

If an installer is more your speed, go download a Windows msi installer from the releases section and run it.

Building

You can install this package in a virtual environment like so:

$ python3 -m venv /path/to/venv
$ source /path/to/venv/bin/activate
$ git clone https://github.com/blbuford/ModernRelay.git
$ cd ModernRelay
$ pip install -e .[dev]

License

ModernRelay is released under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ModernRelay-0.0.2.tar.gz (37.2 kB view details)

Uploaded Source

Built Distribution

ModernRelay-0.0.2-py3-none-any.whl (33.8 kB view details)

Uploaded Python 3

File details

Details for the file ModernRelay-0.0.2.tar.gz.

File metadata

  • Download URL: ModernRelay-0.0.2.tar.gz
  • Upload date:
  • Size: 37.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for ModernRelay-0.0.2.tar.gz
Algorithm Hash digest
SHA256 07636a6ce910211e1c9c30393fa4b049b56b17db587b97ebc31d741ffdb0947c
MD5 3050ffe8076db0132a64d21dee7cb123
BLAKE2b-256 3cdbff0f32001ffa7e38509e17ac49d6d18b71e84e0bbfcb7b0cc3235859c367

See more details on using hashes here.

File details

Details for the file ModernRelay-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: ModernRelay-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 33.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for ModernRelay-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4494c69d21dcbb1281cc04c1f57dc0a00c8208b86aee1de2b310b726841ffc20
MD5 47fd9a98a790fa864f3da5a19203ad98
BLAKE2b-256 9d51a90e5a382b748eb54c53b55cdfa5f48fec159b29cca3eb485f75de843ead

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page