Skip to main content

A web connected mail receiver

Project description

mailreceiver_webthing

A web connected mail receiver

This project implements a mail server providing a webthing API.

The mailreceiver_webthing package 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

ws = websocket.WebSocketApp("ws://192.168.0.24:8080/", on_message=lambda ws, message: print(message))
ws.run_forever()

This example above prints the incoming messages 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 25:25 -t grro/mailreceiver:0.0.1

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 25

Here, the webthing API will be bind to on port 8080. Furthermore, the mail server will be bein to port 25 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 25

To start the mailreceiver use the listen command

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

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

mailreceiver-0.0.2.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

mailreceiver-0.0.2-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mailreceiver-0.0.2.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for mailreceiver-0.0.2.tar.gz
Algorithm Hash digest
SHA256 3b1fe6122d6b839b4c509dd31e68859b9b08e62d90eb23d86e8521986fc2113b
MD5 62cef0efc5984614f8a7fa4bedfb8d64
BLAKE2b-256 df3ec32e54e8373c8e263d78d360004d0630be3f5fc7d2bfbc43432996ad5649

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mailreceiver-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for mailreceiver-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 259a3609df0a693c788a65ca1339c6a076c904f78a724995ab05649322e51ef6
MD5 d229e23df4e18e17635ead220b47f77a
BLAKE2b-256 f9368200729b108b83ada5f3ac07bbe8acff14b08d18d179204e4fadf97a6ded

See more details on using hashes here.

Supported by

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