IMAP and SMTP in memory test server
Project description
mail-devel
This tool combines an in-memory SMTP mail-sink with an IMAP server. All mails coming over SMTP are stored in the IMAP inbox. This can be used to test outgoing and incoming mail configurations. Built on top of aiosmtpd and pymap.
The frontend is minimally handling the content of the mailbox. Please connect a proper mail client like Thunderbird for more advanced usage.
DO NOT USE FOR PRODUCTION.
Features
- Receive, send mails, and reply to mails
- Generate randomized mails using the HTTP frontend
- Manage IMAP flags and automated flagging
- Minimal HTTP frontend to support the basic testing
- SMTP auto respond feature for automatic testing (see
--smtp-responder) - Single or multi mail account mode (see configuration)
- Mail aliases if in multi account mode
Usage
Docker
docker run -p 4080:4080 -p 4025:4025 -p 4143:4143 --rm fkantelberg/mail-devel --password abc
Docker Compose
The following example assumes that the tool is run in a docker compose network as one of the services and only need to publish the HTTP port.
- Minimally define password in
.envwithMAILSINK_PASSWORD - Additionally define port in
.envwithMAILSINK_HTTP
Following the section from the docker-compose.yaml:
services:
mailsink:
image: fkantelberg/mail-devel:${MAILSINK_TAG:-latest}
environment:
MAIL_USER: ${MAILSINK_USER:-test@example.org}
command: [--password, $MAILSINK_PASSWORD, --smtp-flagged-seen]
ports:
- ${MAILSINK_HTTP:-127.0.0.1:4080}:4080
# If you want to connect a normal mail client via SMTP and IMAP
# - ${MAILSINK_SMTP:-127.0.0.1:4025}:4025
# - ${MAILSINK_IMAP:-127.0.0.1:4143}:4143
Python
$ pip install mail-devel
$ mail_devel --password secret
Configuration
Please use --help for a more complete overview of the configurations.
-
--password: The password for SMTP and IMAP -
--auth-required: Disables SMTP without authentication -
--flagged-seen: If set incoming mails are automatically flagged as seen/read. If you only want to flag mails coming via SMTP as seen use--smtp-flagged-seen -
--multi-user: Switches from single user to multi user mode-
Single User Mode: All mails are collected in a single mailbox which belongs to the defined user.
-
Multi User Mode: The mails are collected in the specific mailboxes for each receiver of the messages using the
to,cc, andbccmail headers. Allows the usage of mail aliases
-
-
--alias: Can be specified multiple times to map mail addresses using UNIX shell-style wildcards. Aliases can also be specified via a comma-separated list in the environment variableMAIL_ALIAS -
--smtp-responder: Automatically respond to the mails coming in via SMTP--smtp-responder reply_once: Reply once per mail thread--smtp-responder reply_always: Always reply to incoming mails--smtp-responder path/to/script.py: Custom auto responder. See the examples
Supported protocols for mails
- SMTP (optionally with STARTTLS)
- SMTPS
- IMAP (optionally with STARTTLS)
References
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 Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mail_devel-0.16.1-py3-none-any.whl.
File metadata
- Download URL: mail_devel-0.16.1-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51f51433d68d6387278428fe144590ba4bf20b29e681d6beab6c4fee17922145
|
|
| MD5 |
df974edc0e9f483989a65bb7080d16ac
|
|
| BLAKE2b-256 |
1ac20878e624f201d1943bcdc0bee20753373545102ee6c78e557208806fb674
|