A very simple mail system developed using Python. It only supports core SMTP and POP3 features and is built for easy deployment and local testing. The server stores mail on disk (no database required), supports TLS, basic authentication, and simple relay capabilities.
- SMTP with EHLO/STARTTLS and authentication (LOGIN and PLAIN over TLS).
- POP3 with AUTH, TOP, UIDL, LAST, and optional implicit TLS (port 995) or explicit STLS.
- File-based mail storage per user (no DB).
- Mail relay support to send outgoing mail through an upstream relay when direct delivery is unavailable.
- Simple DSN/notifications for delivery status and failures.
- Lightweight per-group user management (
usermanager/<group>/group.json).
- Install Python 3.8+ on your host.
- Edit
config/config.jsonto configure SMTP/POP3 services, ports andUserGroupscertificate paths. - Make sure any certificate files referenced in
UserGroupsexist and are readable by the process when TLS is enabled. - Start the server:
python3 wMailServer.py- On first run the server creates required directories; stop it, review and update any generated configs, then restart.
config/config.jsoncontains service port definitions, SSL flags and user-group mappings.usermanager/<group>/group.jsonstores users and domain bindings for each group.sample/configincludes example config and template files to copy and adapt.
- Always require TLS for AUTH PLAIN (credentials must not be sent in cleartext).
- If you enable implicit SSL ports (e.g. 465 or 995), ensure certificate paths are correct and the server process can access them; otherwise TLS negotiation will fail.
- POP3
CAPAadvertises extensions such asUTF8. Some clients may sendUTF8as a command — wMailServer acceptsUTF8as a no-op for compatibility with such clients (for example Outlook).
- Command handlers live in
SMTPService.pyandPOP3Service.pyand are straightforward to extend. - An
IMAPService.pyplaceholder exists as a starting point for future IMAP support.