diff --git a/FEATURES.md b/FEATURES.md index 7ab839a..6c0f7f7 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -1209,6 +1209,27 @@ it in the menu. Groups do not contain groups; Stalwart has no nesting. +## Mailing lists + +A mailing list is an address that passes mail on to everyone on it, on this +server or anywhere else. For a role with `sysMailingListQuery` and +`sysMailingListGet`, under Directory after Groups: + +- **List and search** by name or address, with each list's recipient count. +- **Create** a list on a domain; **edit** its display name, recipients and + other addresses, which save together. +- **Recipients** can be pasted several at a time — a column from a + spreadsheet, a line of addresses separated by commas, `Name
` — + and anything with an @ that is not an address stays in the box with a note + rather than being dropped. Past a dozen, a filter narrows them. Saving sends + only the addresses added and removed, so a recipient someone else added while + the panel was open is not lost. +- **Delete** asks for the address to be typed. The recipients' own mail is not + touched. + +That is all a list is in Stalwart: there are no owners, moderators or posting +rules to set. + ## Domains For a role that can read domains (`sysDomainQuery`, `sysDomainGet`): @@ -1267,8 +1288,8 @@ session information already kept for thirty minutes — so a role granted or taken away shows in the menu at the next sign-in or within half an hour, and in the meantime Stalwart refuses what is no longer allowed. -The dashboard, accounts, groups and domains are the sections so far. Mailing -lists, roles and tenants are Stalwart capabilities the same screen is +The dashboard, accounts, groups, mailing lists and domains are the sections so +far. Roles and tenants are Stalwart capabilities the same screen is laid out to take. Beyond the dashboard's counts, managing queues, logs and server settings is deliberately out of scope. @@ -1736,7 +1757,7 @@ demo user is: `admin` (the default), `tenant-admin` (the queue but not the history), `helpdesk` — a custom role that may view and edit accounts but not create or delete them, and read domains — or `user`, who is not offered the menu at all. `MOCK_METRICS=off` refuses the history the way a Community server -does. +does. Two mailing lists round it out. --- diff --git a/KNOWN-ISSUES.md b/KNOWN-ISSUES.md index af26eb3..7947a29 100644 --- a/KNOWN-ISSUES.md +++ b/KNOWN-ISSUES.md @@ -71,6 +71,8 @@ works the same way — and dropped where 0.15 was the whole subject. Support for - **Membership is the member's.** `"memberGroupIds/{plural(recipients.length, { one: "{n} recipient", other: "{n} recipients" })}
+ {recipients.length > FILTER_FROM && ( + + )} + {recipients.length > 0 && ( +{t("Not added, as they aren't addresses: {items}", { items: rejected.join(", ") })}
+ )} +{t("Mail to the list is passed on to every recipient, on this server or anywhere else. Paste several at once if you like. Changes apply when you save.")}
+ > + )} +{t("Mail to this address stops being passed on. The recipients' own mail is untouched.")}
+ +{t("Addresses that pass mail on to everyone on them.")}
+{error}
} + + {page === null ? ( +| {t("Mailing list")} | +{t("Recipients")} | +{t("Other addresses")} | +
|---|---|---|
|
+ {l.description || l.name}
+ {l.emailAddress}
+ |
+ {Object.keys(l.recipients ?? {}).length} | ++ {Object.values(l.aliases ?? {}).map((a) => a.name).join(", ") || "—"} + | +
{plural(page.total, { one: "{n} mailing list", other: "{n} mailing lists" })}
+ ) : ( +