laelaps


Namelaelaps JSON
Version 0.0.3 PyPI version JSON
download
home_page
SummaryCatchall email alias monitor and verifier
upload_time2024-03-19 07:42:06
maintainer
docs_urlNone
author
requires_python>=3.12.2
licenseMPL-2.0
keywords catchall email alias monitor verification
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <!--
SPDX-FileCopyrightText: 2024 Jan Maarten van Doorn <laelaps@vandoorn.cloud>

SPDX-License-Identifier: MPL-2.0
-->

# Laelaps

Laelaps is an IMAP monitoring application that is capable of verifying signed aliases. This is particularly useful when using different catchall-based aliases. Catchall-based aliases are a convenient way to generate unique email addresses for online accounts and reduce the impact of potential data leaks. However with catchall mode turned on there is a risk of attracting lots of spam.

Laelaps solves this problem by verifying whether an alias is indeed generated by the user and not by some other random party such as a spammer. This is achieved without registering the known aliases by using cryptographic signatures within generated aliases themselves. In practice a user generates an alias using a private key and the [TeumessianFox](https://github.com/Marmalade8478/TeumessianFox) browser extension and Lealaps will separate spam from emails that are send to genuine aliases. This way the user can easily generate new aliases and still be in full control of messages send to her/his inbox.

As a bonus, albeit rather experimental, Laelaps can perform other checks on incoming email messages by analyzing the message headers, these checks include:

- Verifying whether SPF, DMARC and DKIM passed.
- Possibility to register an aliases for a specific domain that is allowed to send messages only to this specific alias.
- Check wether the email was send with TLS enabled
- Check wether the sending email address exists

Laelaps moves incoming messages either to an inbox folder for messages that passed validation or to a folder that failed validation.

## Install

Run the following in your favorite python environment.

```shell
pip install laelaps
```

## Configure

Create a `config.toml` with the following contents in your working directory:

```toml
[imap]
host = "your.imap.server.host"
user = "yourImapUserName"
password = "ImapPassword"
mailbox = "FolderToMonitor"

[encryption]
# Generate yourself and keep safe!
key = "32CharacterStringEncryptionKey00"

[user]
own_domains = [ "list.of", "catchall.domains"]
target_folder_verified = "FolderToForVerifiedEmails"
target_folder_failed_validation = "FolderToForFailedVerificationEmails"
```

## Run

Start laelaps with:

```shell
python -m laelaps
```

Stop laelaps with
<kbd>ctrl</kbd>+<kbd>C</kbd>

### Run with podman-compose

Make sure you have installed [Podman](https://podman.io/).
Start the laelaps container with (make sure there is a `config.toml` in the root of the project):

```shell
podman-compose up
```

Stop laelaps with
<kbd>ctrl</kbd>+<kbd>C</kbd>

Clean up with:

```shell
podman-compose down
```

## Develop

To install dev/test tools run (in the root directory)

```shell
pip install .[test]
```

Running linting and tests is done by running:

```shell
bash format.sh
```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "laelaps",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.12.2",
    "maintainer_email": "",
    "keywords": "catchall,email,alias,monitor,verification",
    "author": "",
    "author_email": "Jan Maarten van Doorn <laelaps@vandoorn.cloud>",
    "download_url": "https://files.pythonhosted.org/packages/b5/f9/3a1860e792f90c1098e0437cf351fdd07510f7dfde766f22f6a7821575b7/laelaps-0.0.3.tar.gz",
    "platform": null,
    "description": "<!--\nSPDX-FileCopyrightText: 2024 Jan Maarten van Doorn <laelaps@vandoorn.cloud>\n\nSPDX-License-Identifier: MPL-2.0\n-->\n\n# Laelaps\n\nLaelaps is an IMAP monitoring application that is capable of verifying signed aliases. This is particularly useful when using different catchall-based aliases. Catchall-based aliases are a convenient way to generate unique email addresses for online accounts and reduce the impact of potential data leaks. However with catchall mode turned on there is a risk of attracting lots of spam.\n\nLaelaps solves this problem by verifying whether an alias is indeed generated by the user and not by some other random party such as a spammer. This is achieved without registering the known aliases by using cryptographic signatures within generated aliases themselves. In practice a user generates an alias using a private key and the [TeumessianFox](https://github.com/Marmalade8478/TeumessianFox) browser extension and Lealaps will separate spam from emails that are send to genuine aliases. This way the user can easily generate new aliases and still be in full control of messages send to her/his inbox.\n\nAs a bonus, albeit rather experimental, Laelaps can perform other checks on incoming email messages by analyzing the message headers, these checks include:\n\n- Verifying whether SPF, DMARC and DKIM passed.\n- Possibility to register an aliases for a specific domain that is allowed to send messages only to this specific alias.\n- Check wether the email was send with TLS enabled\n- Check wether the sending email address exists\n\nLaelaps moves incoming messages either to an inbox folder for messages that passed validation or to a folder that failed validation.\n\n## Install\n\nRun the following in your favorite python environment.\n\n```shell\npip install laelaps\n```\n\n## Configure\n\nCreate a `config.toml` with the following contents in your working directory:\n\n```toml\n[imap]\nhost = \"your.imap.server.host\"\nuser = \"yourImapUserName\"\npassword = \"ImapPassword\"\nmailbox = \"FolderToMonitor\"\n\n[encryption]\n# Generate yourself and keep safe!\nkey = \"32CharacterStringEncryptionKey00\"\n\n[user]\nown_domains = [ \"list.of\", \"catchall.domains\"]\ntarget_folder_verified = \"FolderToForVerifiedEmails\"\ntarget_folder_failed_validation = \"FolderToForFailedVerificationEmails\"\n```\n\n## Run\n\nStart laelaps with:\n\n```shell\npython -m laelaps\n```\n\nStop laelaps with\n<kbd>ctrl</kbd>+<kbd>C</kbd>\n\n### Run with podman-compose\n\nMake sure you have installed [Podman](https://podman.io/).\nStart the laelaps container with (make sure there is a `config.toml` in the root of the project):\n\n```shell\npodman-compose up\n```\n\nStop laelaps with\n<kbd>ctrl</kbd>+<kbd>C</kbd>\n\nClean up with:\n\n```shell\npodman-compose down\n```\n\n## Develop\n\nTo install dev/test tools run (in the root directory)\n\n```shell\npip install .[test]\n```\n\nRunning linting and tests is done by running:\n\n```shell\nbash format.sh\n```\n",
    "bugtrack_url": null,
    "license": "MPL-2.0",
    "summary": "Catchall email alias monitor and verifier",
    "version": "0.0.3",
    "project_urls": {
        "Homepage": "https://github.com/JanMaartenvanDoorn/Laelaps"
    },
    "split_keywords": [
        "catchall",
        "email",
        "alias",
        "monitor",
        "verification"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6cda183a833a7cec9bffa7a52985ae7d9aed8333a9d2556580dfe8b0d432c726",
                "md5": "5dd00ee0cb14bd46cc59b261f9b20296",
                "sha256": "d0f31a7b4bb9d67b274cfb274463c5bdd735a6703940abc5819f3a5b3c05512b"
            },
            "downloads": -1,
            "filename": "laelaps-0.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5dd00ee0cb14bd46cc59b261f9b20296",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12.2",
            "size": 8352,
            "upload_time": "2024-03-19T07:42:04",
            "upload_time_iso_8601": "2024-03-19T07:42:04.357062Z",
            "url": "https://files.pythonhosted.org/packages/6c/da/183a833a7cec9bffa7a52985ae7d9aed8333a9d2556580dfe8b0d432c726/laelaps-0.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b5f93a1860e792f90c1098e0437cf351fdd07510f7dfde766f22f6a7821575b7",
                "md5": "6136b0a29de97a381ac216e43657fab3",
                "sha256": "a53e0043e925c8f7832e3ce41025c573f64c13e16ae466eeff1fd2bad60ec85e"
            },
            "downloads": -1,
            "filename": "laelaps-0.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "6136b0a29de97a381ac216e43657fab3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12.2",
            "size": 8953,
            "upload_time": "2024-03-19T07:42:06",
            "upload_time_iso_8601": "2024-03-19T07:42:06.007336Z",
            "url": "https://files.pythonhosted.org/packages/b5/f9/3a1860e792f90c1098e0437cf351fdd07510f7dfde766f22f6a7821575b7/laelaps-0.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-19 07:42:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "JanMaartenvanDoorn",
    "github_project": "Laelaps",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "laelaps"
}
        
Elapsed time: 0.25416s