The server-wide legacy-protocols policy: the switch, whether submission closes with it, the listeners taken away to honour it, and who last changed it. Stored like inbuxa:AiLimits, as JSON in the fork's subspace, so an unset field reads as its default and an old record still loads. closes() is where LP-3 lives. imap, pop3 and manageSieve are named outright; smtp is not, because an SMTP listener is inbound or submission depending on its port and nothing else can tell them apart. A listener bound to 25 is inbound whatever it is called, including one that also binds 465, so it stays. http and lmtp are never candidates at all. savedListeners keeps each listener's registry object whole rather than a few fields of it. LP-5 promises the listeners come back exactly as they were, and a listener carries proxy networks, TLS timeouts and socket options that no one should have to re-derive -- a field this code has never heard of has to survive the round trip too, and a test holds that. The module is under security/ rather than beside the rebuilt features, because this one is not a rebuild: upstream has nothing like it. Still only a fact. Nothing reads this policy yet, so no port closes and no sign-in is refused; the acting code needs the listener registry and the config store, which live above this crate.
27 lines
857 B
Rust
27 lines
857 B
Rust
/*
|
|
* SPDX-FileCopyrightText: 2026 Coffey Labs
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
//! INBUXA's rebuilt features.
|
|
//!
|
|
//! Upstream ships these only in its Enterprise Edition. INBUXA rebuilds each
|
|
//! one clean-room from a written spec under `docs/spec/features/`, one module
|
|
//! per feature, and ships it to everybody (docs/spec/SPEC.md §2.3, §3).
|
|
//!
|
|
//! Upstream files change only by small hooks that call in here, each marked
|
|
//! with an `inbuxa:` comment naming the requirement it serves. That keeps
|
|
//! every upstream merge's conflicts few and predictable.
|
|
//!
|
|
//! This crate sits below `common`, so hooks anywhere in the server can call
|
|
//! it. It works on registry objects and the store directly, never on
|
|
//! `common::Server`.
|
|
|
|
pub mod ai;
|
|
pub mod branding;
|
|
pub mod masked_email;
|
|
pub mod security;
|
|
pub mod tenancy;
|
|
pub mod undelete;
|