Mailing lists
A mailing list is an address on one of your team's domains that sends what it gets to its members. Members can be mailboxes here or addresses anywhere else. Make lists in the team manager (Mailing lists on the team page), through the API (/v1/tenants/{tenantId}/lists) or from the command line (corpsuite list add).
Two kinds
| Kind | What members get | Good for |
|---|---|---|
| Distribution | The message as sent, From and Subject unchanged | Group addresses: sales@, support@, board@ |
| Discussion | The message from the list, with the subject prefix and unsubscribe links | Teams, clubs and announcements where people reply to everyone |
A discussion list sends each post as the list. From becomes "Amy via Team" <team@your-domain> and is signed with your domain's DKIM key, so receivers' DMARC checks pass even when the author's domain has a strict policy. The author's address is kept in X-Original-From. Replies go to the list, or to the author if you choose Replies go to: the author.
Every post carries List-Id. Discussion lists also add List-Post, List-Owner, List-Subscribe (when people may join) and a List-Unsubscribe link of each member's own, with one-click unsubscribe (RFC 8058). Mail apps and Gmail show an Unsubscribe button for it.
Who may post
| Setting | Who |
|---|---|
| Members | Anyone on the list (the default) |
| The team's mailboxes and members | Members, plus every mailbox and alias of your team |
| Moderators only | For announcement lists |
| Anyone | Anyone at all |
Except for Anyone, a post from another server counts as from a member only when it passes DMARC, so nobody can post by forging a member's address. Posts sent by your own users (webmail, mail apps) are always trusted.
Other posts are held for a moderator (the default) or refused. A refused sender gets an error at once. Posts that Rspamd marks as likely spam are held too, and ones it would reject are refused.
Moderators
Mark a member as a moderator. Moderators:
- are emailed when a post waits for them;
- get mail sent to
list+owner@your-domain; - approve (Send) or Discard held posts on the list's page in the team manager. Held posts are kept 14 days.
A moderator who should not get the posts can have Gets the posts turned off.
Plus addresses: the list's commands
Each list answers to a few plus addresses of its own:
| Address | What it does |
|---|---|
list+subscribe@ (or +join) | Asks to join. A link is mailed to the sender, and they join only once they confirm it. |
list+unsubscribe@ (or +leave) | Mails a member their own unsubscribe link. Nothing happens for an address not on the list. |
list+owner@ | Reaches the moderators. |
list+bounce-…@ | The envelope sender of each member's copy, so bounces are counted per member (see below). |
Who may join themselves decides whether +subscribe works:
- Nobody (the default): administrators add members.
- The team's mailboxes: teammates can also join and leave in webmail under Settings → Mailing lists.
- Anyone: anyone can ask by mail.
Because joining is always confirmed by a link sent to the address, mail with a forged sender joins nobody. Only one confirmation is sent to an address per list per day. Requests not confirmed within 7 days end.
Members can use their own plus address too. With plus-address folders on for their domain (see Plus addressing), a member added as amy+team@your-domain gets the list's posts filed in a team folder.
Bounces
Each member's copy goes out from list+bounce-<token>@your-domain, a token of that member's own. When a member's server bounces a copy, the bounce is counted for that member. Five bounces within 30 days stop delivery to them, and the member list shows stopped. Choose Start again (or put the member again through the API) once the address works.
Limits
The plan sets how many lists a team may have (maxLists, 10 by default) and how many members one list may have (maxListMembers, 1000 by default). A list's address is its own: no mailbox or alias can take it, and a list cannot take theirs. Lists live on your team's own domains, not on shared ones, and move with their domain.
Command line
corpsuite list add acme address=team@acme.com name=Team kind=discussion subjectPrefix="[team]" joining=team
corpsuite list member add team@acme.com amy@acme.com name=Amy moderator:=true
corpsuite list members team@acme.com
corpsuite list held team@acme.com
corpsuite list held approve team@acme.com HELD-ID
corpsuite list set team@acme.com whoCanPost=anyone others=reject
See The command line for the rest.
Not yet
- Archives of past posts on the web.
- Digests (one message a day instead of each post).
- A footer added to each post.