Skip to main content

Manage mail from your server.

Project description

Mail Muxer

cover

Are you tired of managing IMAP filters through cumbersome, slow and unintuive web interfaces ? Then Mail Muxer is here to save you from this pain !

Mail Muxer is a Python tool that will monitor your Inbox, and filter incomming emails according to the given configuration. It was designed to be intuitive and easy to use, by using compact configuration and sensible defaults: a rule can be as simple as

- condition:
    FROM: example@email.org
  move_to: some/folder

Basic Usage

  1. Install:

     pip install mmuxer
    
  2. Create configuration file:

    rules:
      - move_to: receipts
        condition:
          ANY:
            - FROM: some_store@ok.ok
            - FROM: some_other_store@store.net
      - move_to: important
        condition:
          SUBJECT: important
      - condition:
          FROM: spammer@example.com
        actions:
          - delete
    
    settings:
      server: imap.email.net
      username: me@email.net
      password: secret
    
  3. Check your configuration:

    mmuxer check --config-file config.yaml
    
  4. Check your folders:

    mmuxer folder --config-file config.yaml compare-destinations
    
  5. Monitor your inbox:

    mmuxer monitor --config-file config.yaml
    
  6. Or apply on all messages of a given IMAP folder:

    mmuxer tidy --config-file config.yaml --folder FOLDER
    
  7. Finally, to get help on a given command, add a --help to it, e.g.

    mmuxer monitor --help
    

Settings

Using env variables for settings

Settings values (username, password, etc.) can be configured by providing environment variables of the same name (case insensitive).

Exporting configuration to sieve format

mmuxer can also export the rules of a configuration file to the sieve format, so that the rules will be handled server side.

mmuxer sieve-export --config-file config.yaml --dest-file rules.sieve

Note on SSL

If you get SSL errors while connecting to your server, see the SSL Configuration section.

All available settings

server: str
username: str
password: str
ssl_ciphers: Optional[str] = None
imap_wait_timeout: int = 60
sieve_folder_prefix: str = ""  # folder prefix used when generating sieve rules
sieve_folder_separator: str = "/"  # folder separator used when generating sieve rules

Going further on

What's next

The current implementation is mostly feature complete for me, but here are some features that could be implemented:

  • Improve tidy operation:
    • make tidy operation more performant by using IMAP search features
    • allow to run tidy on many / all folders
  • Better conditions:
    • add a REGEX operator (although not compatible with IMAP search)
    • support more fields
  • Add more actions:
    • tag emails
    • forward emails
    • move destination based on regex match group
    • automatic folder creation
    • anything else ?
  • Hot-reload config file
  • Re-configure (or execute actions) by sending emails
  • Support OAuth / Gmail (I'm not sure how feasible that would be).

Don't hesitate to ask, or make a pull request !

Credit

This program relies on

  • the imap-tools library for everything involving IMAP
  • the mock IMAP server from aioimaplib for it's tests
  • the ever excellent Typer and Pydantic libs

Many thanks to them !

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

mmuxer-0.6.7a0.tar.gz (38.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mmuxer-0.6.7a0-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file mmuxer-0.6.7a0.tar.gz.

File metadata

  • Download URL: mmuxer-0.6.7a0.tar.gz
  • Upload date:
  • Size: 38.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mmuxer-0.6.7a0.tar.gz
Algorithm Hash digest
SHA256 65d43831a694d719db16e5a87ed0961b4b56d7c4b4c6d63f2a5b96e6529c059e
MD5 e80dd4af5be1b831cadc6fca51d310bf
BLAKE2b-256 87cdf25859b2b96851a6e6c4e57c1f003af3a4cbb61413da2bc2f2da7bf8a749

See more details on using hashes here.

File details

Details for the file mmuxer-0.6.7a0-py3-none-any.whl.

File metadata

  • Download URL: mmuxer-0.6.7a0-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mmuxer-0.6.7a0-py3-none-any.whl
Algorithm Hash digest
SHA256 60da98551b41b1c4170df3775071cd14d7f081d8b88e449dcb255e8def8a8400
MD5 dc5724bb8d23cbdca4c09e385cfe1840
BLAKE2b-256 60af16505f5b7cf19f34cb9aa627a76263536cf38188fbfb6d8278d326ad1662

See more details on using hashes here.

Supported by

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