A web connected mail receiver
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mailreceiver_webthing-0.1.8.tar.gz
.
File metadata
- Download URL: mailreceiver_webthing-0.1.8.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38a2732f04a56c6c17401fd1973d2199f43e9baf5502b77ad0cd969fae4016f0 |
|
MD5 | 16c76bfdfaa66e95169b665d25cdb75e |
|
BLAKE2b-256 | 68995cf755612de624a177549a236ded8dadb0ee2c46676e05f97cbd2d9752c2 |
File details
Details for the file mailreceiver_webthing-0.1.8-py3-none-any.whl
.
File metadata
- Download URL: mailreceiver_webthing-0.1.8-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30bcafc8d3facadd2227464f6e0706ab143e9dc3e166bc62ff3c8fb5f23d3074 |
|
MD5 | e5c4471023002fd53a2db605344a34bb |
|
BLAKE2b-256 | 60de92328c9876d23e00f863ecd10bb825bb4ce433cb877cc7d666ca43d7327f |