Rebrand to INBUXA: product name, protocol greetings, sign-in page, calendar templates, logos, README

One branding module (types::brand!) supplies the name to every protocol
greeting, the HTTP realm, the startup banner, Received headers, the
user agent, the IMAP ID response and calendar PRODIDs. The sign-in and
calendar pages take ihasmail's palette and font and the INBUXA logo, and
calendar emails embed the INBUXA lockup. Default calendar and address book
names follow. Protocol identifiers (urn:stalwart:jmap, vnd.stalwart Sieve
extensions) and upstream copyright notices are unchanged.
This commit is contained in:
2026-09-18 10:52:34 -07:00
parent 6e73d284d8
commit 89665decfa
70 changed files with 616 additions and 442 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ use imap_proto::{ResponseCode, StatusResponse, protocol::capability::Capability}
pub mod core;
pub mod op;
static SERVER_GREETING: &str = "Stalwart IMAP4rev2 at your service.";
static SERVER_GREETING: &str = concat!(types::brand!(), " IMAP4rev2 at your service.");
pub(crate) static GREETING_WITH_TLS: LazyLock<Vec<u8>> =
LazyLock::new(|| build_greeting(true, true));
+5 -2
View File
@@ -68,8 +68,11 @@ impl<T: SessionStream> Session<T> {
.with_tag(request.tag)
.serialize(
concat!(
"* ID (\"name\" \"Stalwart\" \"version\" \"1.0.0\" \"vendor\" \"Stalwart Labs LLC\" ",
"\"support-url\" \"https://stalw.art\")\r\n"
"* ID (\"name\" \"",
types::brand!(),
"\" \"version\" \"1.0.0\" \"vendor\" \"",
types::brand!(),
"\")\r\n"
)
.as_bytes()
.to_vec(),
+1 -1
View File
@@ -15,7 +15,7 @@ impl<T: SessionStream> Session<T> {
let op_start = Instant::now();
let mut response =
StatusResponse::bye("Stalwart IMAP4rev2 bids you farewell.".to_string()).into_bytes();
StatusResponse::bye(concat!(types::brand!(), " IMAP4rev2 bids you farewell.").to_string()).into_bytes();
trc::event!(
Imap(trc::ImapEvent::Logout),