Skip to main content

mailreceiver

A web connected mail receiver

This project implements a mail server providing a webthing API. It exposes an HTTP WebThing endpoint storing the (newest) received mail.

# webthing has been started on host 192.168.0.24
curl http://192.168.0.24:8080/properties
{
"mail": "Received: from 192.168.0.24:56520 by mail-receiver id a864d20d-4025-40e9-8ba7-e80bcd2b3814\n for HE@EXAMPLE.COM, SHE@EXAMPLE.COM; Tue, 17 Aug 2021 06:38:52 +0000\nContent-Type: text/plain; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nSubject: Hello\nFrom: ME@EXAMPLE.COM\nTo: HE@EXAMPLE.COM, SHE@EXAMPLE.COM\n\nHi, how are you today?"
}

To consume incoming mails as a HTTP-based stream, open a websocket connection to the WebThing.

import websocket

# webthing´s websocket address is ws://192.168.0.24:8080/
ws = websocket.WebSocketApp("ws://192.168.0.24:8080/", on_message=lambda ws, message: print(message))
ws.run_forever()

This example above prints the stream of incoming mails such as shown below

{"messageType": "propertyStatus", "data": {"mail": "Received: from 172.17.0.1:56760 by mail-receiver id f67213dd-83e2-46bf-8eab-ce91d626f5ba\n for SHE@EXAMPLE.COM; Tue, 17 Aug 2021 07:31:57 +0000\nContent-Type: text/plain; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nSubject: Hello\nFrom: ME@EXAMPLE.COM\nTo: SHE@EXAMPLE.COM\n\nHi, how are you today?"}}
{"messageType": "propertyStatus", "data": {"mail": "Received: from 172.17.0.1:56766 by mail-receiver id 264ab273-6a71-4394-a3ea-86ef395ebc71\n for THEY@EXAMPLE.COM; Tue, 17 Aug 2021 07:42:23 +0000\nContent-Type: text/plain; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nSubject: Re: Hello\nFrom: YOU@EXAMPLE.COM\nTo: THEY@EXAMPLE.COM\n\nNot too bad!"}}
...

To run this software you may use Docker or PIP package manager such as shown below

Docker approach

sudo docker run -p 8080:8080 -p 2525:2525 -t grro/mailreceiver:0.1.8 

PIP approach

sudo pip install mailreceiver-webthing

After this installation you may start the webthing http endpoint inside your python code or via command line using

sudo mailreceiver --command listen --port 8080 --mailserver_port 2525

Here, the webthing API will be bind to on port 8080. Furthermore, the mail server will be bind to port 2525.

The WebThing server provides mDNS to enable clients discovering the WebThing interfaces.

By running a systemd-based Linux distribution you may use the register command to register and start the webthing service as systemd unit. By doing this the webthing service will be started automatically on boot. Starting the server manually using the listen command is no longer necessary.

sudo mailreceiver --command register --port 8080 --mailserver_port 2525

To start the mailreceiver use the listen command

sudo mailreceiver --command listen --port 8080 --mailserver_port 2525

Metadata

Release files for mailreceiver-webthing 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mailreceiver-webthing 0.1.8
File Size Uploaded Provenance
mailreceiver_webthing-0.1.8.tar.gz 9.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mailreceiver-webthing 0.1.8
File Interpreter ABI Platform
mailreceiver_webthing-0.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 23.8 kB

Release files / mailreceiver_webthing-0.1.8.tar.gz

Download URL mailreceiver_webthing-0.1.8.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
38a2732f04a56c6c17401fd1973d2199f43e9baf5502b77ad0cd969fae4016f0
BLAKE2b-256 checksum
How to use checksums
68995cf755612de624a177549a236ded8dadb0ee2c46676e05f97cbd2d9752c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

Release files / mailreceiver_webthing-0.1.8-py3-none-any.whl

Download URL mailreceiver_webthing-0.1.8-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30bcafc8d3facadd2227464f6e0706ab143e9dc3e166bc62ff3c8fb5f23d3074
BLAKE2b-256 checksum
How to use checksums
60de92328c9876d23e00f863ecd10bb825bb4ce433cb877cc7d666ca43d7327f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

Security for mailreceiver-webthing 0.1.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page