erpuno/mail
40.9
Weak · 2 October 2026
15.6k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
SYNRC MAIL is a lightweight message delivery service built on Elixir/OTP that implements a WebSocket-based protocol for sending, receiving, and managing emails. It leverages the N2o framework for real-time communication and Mnesia via KVS for persistent storage, supporting both text and binary data modes. The system includes comprehensive ASN.1 definitions and encoding modules for IPMS and MHS standards, enabling structured message handling and file transfer capabilities.
Features
Added ASN.1 BER encoding/decoding modules for IPMS message types
New Erlang modules have been added to the source tree to handle the encoding and decoding of IPMS (Internet Message Processing Services) data structures using ASN.1 BER rules. These generated modules—specifically \IPMSAbstractService\, \IPMSAutoActionTypes\, \IPMSFileTransferBodyPartType\, \IPMSHeadingExtensions\, \IPMSInformationObjects\, and \IPMSObjectIdentifiers\—provide the necessary \encode/2\ and \decode/2\ functions to serialize and deserialize complex message components such as auto-forwarding actions, file transfer parameters, heading extensions, and various IPM body parts.
src · high confidence
Added ASN.1 schema definitions for BPMN-Lite, Mail, and MHS protocols
The system now includes ASN.1 schema definitions for several protocol areas. A new BPMN-Lite schema defines process instance structures, flow nodes, and scheduler states. A Mail schema defines message, authentication, and acknowledgment structures. Additionally, multiple MHS (Message Handling Service) ASN.1 modules have been added, covering association control (ACSE), cryptographic message syntax, certificate extensions, and various presentation attributes.
priv · high confidence
Added Erlang record definitions for IPMS ASN.1 types and internal messaging protocols
New header files have been added to the include directory to support IPMS (Internet Protocol Message Service) and internal messaging features. The files IPMSAutoActionTypes.hrl, IPMSFileTransferBodyPartType.hrl, IPMSHeadingExtensions.hrl, IPMSInformationObjects.hrl, and IPMSObjectIdentifiers.hrl contain Erlang record definitions generated by the Erlang ASN.1 compiler (Version 5.1), providing the data structures for IPMS auto-actions, file transfer body parts, heading extensions, information objects, and object identifiers. Additionally, ROSTER.hrl defines records for internal application messaging, including N2O, MUC, P2P, address, subscription, publication, and file transfer (FTP) structures.
include · high confidence
Added documentation for MHS and IPMS protocol components
New HTML documentation pages have been added to the \man\ directory for the Messaging Handling Service (MHS) and Interpersonal Messaging System (IPMS). These pages detail the architecture and service elements of the lightweight MHS implementation, including the Message Store (MS), Mail Transfer Agent (MTA), Message Transport Service (MTS), and the IPMS specification (X.420), providing users with reference material on the system's ASN.1 definitions and operational components.
man · high confidence
Introduction of a WebSocket-based mail protocol
The application now includes a new mail subsystem accessible via WebSocket on port 8043. This feature introduces a text-based protocol allowing users to authenticate (AUTH), send messages to other users (SEND), view their inbox (BOX), and delete messages (CUT). The implementation utilizes the N2O framework for WebSocket handling and KVS for message storage, supporting both binary (BERT) and text protocol modes.
lib · high confidence
Behavioural changes
Initial application configuration for N2o and Kvs
The application now includes a configuration file that sets up the N2o framework to listen on port 8043, uses the :n2o\_secret pickler, and defines specific protocols and routes. Additionally, the Kvs component is configured to use Mnesia for database access and stream storage, with a defined schema including kvs, kvs\_stream, and MAIL modules.
config · high confidence
Project renamed to MAIL with new landing page and documentation
The project has been rebranded from 'Feed Server' to 'SYNRC MAIL', a lightweight message delivery service built on Elixir/OTP and Mnesia. This change includes a new \index.html\ landing page that details the MAIL protocol and WebSocket interface, an updated \README.md\ with new usage examples and credits, and the addition of a \CNAME\ file pointing to \mail.erp.uno\. The \LICENSE\ file was also updated to ISC, and a \.formatter.exs\ was added for code formatting.
(repo-wide) · high confidence
Dependencies
Initial release of MAIL application with N2o and Bandit dependencies
The project introduces a new mix.exs manifest for the MAIL application (version 9.1.2), defining it as a Simple Message Delivery Protocol package. This configuration establishes the application's runtime dependencies, specifically integrating the N2o framework (version \~10.8.2), the Bandit web server (\~1.0), and the KVS storage library (\~10.8.2), alongside telemetry and Syn for clustering support.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 41 → 41 (-0.3)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 96 → 96 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 54 → 54 (+0.0)
- Readiness 17 → 17 (-0.7)
- Security 95 → 95 (+0.0)
- Accessibility 47 → 47 (+0.0)
Resolved (15)
- Members sharing a duplicated core (10 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (12 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSHeadingExtensions.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSHeadingExtensions.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSHeadingExtensions.erl)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (7 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
New (15)
- Members sharing a duplicated core (10 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (12 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSHeadingExtensions.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSHeadingExtensions.erl)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (src/IPMSHeadingExtensions.erl)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (src/IPMSAbstractService.erl)
- Members sharing a duplicated core (7 members, 50+ identical tokens) (src/IPMSAutoActionTypes.erl)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
erpuno/mail was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit b4eaad5e1a7b2dd6d96527eca8b591de2dbe3722 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.