<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Aliases, distribution lists, membership queries, mailing lists and public folders]]></title><description><![CDATA[<p dir="auto"><em>Written for 6.3.4. hMailServer 6.3.7 (17 October 2026) signs an authenticated submission as another hosted domain only when the account may send as the address its From names - its own, an alias pointing at it, a mailbox that granted it the post right, an address it proved, or a masked address of its own; otherwise the mail is sent unsigned as that domain, so give such an account the alias or the grant before upgrading. Mail from outside whose From names a hosted domain is no longer signed as it, nor is an alias's or a distribution list's copy of it to an outside address; where such a message did not pass DMARC for the organisation its From names when it arrived, a copy whose envelope sender is at this server's host name, or at a hosted domain or a subdomain of one, in that organisation is not sent where an alias or a distribution list expands to an outside address, a managed list does not distribute a posting whose From names the list domain's organisation, and a distribution list's bounce address is not given to it; a managed list's copies of a posting from outside are not signed as the list's domain when an address of the list domain's organisation is in its From fields. Creating a domain alias is now the server administrator's: a credential confined to named domains is refused it, over REST and over COM. See <a href="/topic/28277">the 6.3.7 announcement</a>.</em></p>
<p dir="auto">There are three ways of making one address reach somewhere other than a mailbox of the same name - an alias, a distribution list and a route - and one way of giving several people the same folder. This topic covers all of them as they are in 6.3.4 (27 September 2026, schema 6104): aliases, domain aliases and plus addressing; distribution lists, who may post to them and how moderation works; the <strong>membership query</strong>, which lets a list define its own members; the <strong>list manager</strong>, which turns a distribution list into a mailing list people join and leave themselves; and public folders with their permissions. The membership query and the list manager are new in 6.3.4; the distribution list itself is in every release. The one thing to know first: <strong>the address is resolved in one function (<code>RecipientParser::CheckDeliveryPossibility</code>), in a fixed order, and an account always wins.</strong></p>
<h3><a class="anchor-offset" name="the-order-an-address-is-resolved-in"></a>The order an address is resolved in</h3>
<p dir="auto">At <code>RCPT TO</code> the server works through this, and stops at the first answer:</p>
<ol>
<li><strong>Domain aliases</strong> rewrite the domain.</li>
<li><strong>Plus addressing</strong> trims the local part.</li>
<li><strong>Account?</strong> If found, deliver to the mailbox.</li>
<li><strong>Alias?</strong> If found, follow it and start over, up to 25 hops.</li>
<li><strong>Distribution list?</strong> If found, expand to the members, or to the moderator.</li>
<li><strong>Route?</strong> If found, send to the route's target server.</li>
<li>The domain's <strong>postmaster address</strong>, the catch-all: when nothing above matched, the resolution starts again with that address, which is why a mistyped address is delivered there rather than refused. If it is empty, <code>550 Unknown user</code>.</li>
</ol>
<p dir="auto"><em>Since 6.3.4</em> one question is asked before all of these: <strong>is the address, or its domain, routed to a webhook?</strong> A webhook route that only posts takes the address's mail <strong>instead of</strong> its mailbox, alias or list - a list whose address is routed never sees the message, nor applies its posting rules to it. Route the addresses you mean rather than a list's whole domain; <a href="/topic/28266">mail in to a webhook</a> has the routes themselves.</p>
<h3><a class="anchor-offset" name="aliases"></a>Aliases</h3>
<p dir="auto">An <strong>alias</strong> is a second address that delivers to an existing target. In the Control Panel: <strong>Accounts &amp; domains → Domains</strong>, select the domain, then the <strong>Aliases</strong> panel.</p>
<p dir="auto"><strong>The Control Panel and COM are Windows-only.</strong> On Linux, where there is neither, <a href="/topic/28192">the Control Deck</a> is the administration people click through, and it is the front end of the REST API, which both platforms have:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>What</th>
<th>REST route</th>
</tr>
</thead>
<tbody>
<tr>
<td>A domain's aliases</td>
<td><code>GET</code> and <code>POST /api/v1/domains/{domain}/aliases</code>; <code>DELETE /api/v1/aliases/{address}</code></td>
</tr>
<tr>
<td>A domain's other names</td>
<td><code>GET</code> and <code>POST /api/v1/domains/{domain}/domain-aliases</code>; <code>DELETE</code> on <code>.../{name}</code> beneath it</td>
</tr>
<tr>
<td>A domain's lists</td>
<td><code>GET</code> and <code>POST /api/v1/domains/{domain}/lists</code>; <code>PUT</code> and <code>DELETE /api/v1/lists/{address}</code></td>
</tr>
<tr>
<td>A domain's plus addressing</td>
<td><code>PUT /api/v1/domains/{domain}</code> (<code>plus_addressing_enabled</code>, <code>plus_addressing_character</code>)</td>
</tr>
</tbody>
</table>
<p dir="auto">The Control Panel paths and COM properties below are for Windows.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Field</th>
<th>COM property</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alias address</td>
<td><code>Alias.Name</code></td>
<td>The address people send to. Must be in this domain</td>
</tr>
<tr>
<td>Target</td>
<td><code>Alias.Value</code></td>
<td><strong>May be anything</strong>: another account here, another alias, a distribution list, an address covered by a route, or an address at a different server</td>
</tr>
<tr>
<td>Active</td>
<td><code>Alias.Active</code></td>
<td>Unticked: <code>RCPT TO</code> is answered <code>550 Alias is not active.</code> - <em>not</em> passed on to the catch-all</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>The target replaces the address and resolution starts again</strong>, so an alias may point at an alias, which may point at a list. Beyond <strong>25</strong> hops the answer is <code>550 Mail server configuration error. Too many recursive forwards.</code></li>
<li><strong>An alias is only consulted when no account has that address.</strong> Creating <code>sales@</code> as an account after <code>sales@</code> exists as an alias silently changes where the mail goes.</li>
<li><strong>An alias to an external address is treated as inbound mail, not as relaying</strong>, so <code>user@yourcompany.com → user@gmail.com</code> works for external senders without opening a relay.</li>
</ul>
<p dir="auto"><em>Since 6.3.4</em> three more kinds of second address exist, and they are the person's own rather than the administrator's: <strong>the alias a mailbox move leaves</strong> (<a href="/topic/28244">renaming or moving a mailbox</a> keeps the old address as an alias of the new one by default); <strong>masked addresses</strong> (schema 6067), which the person makes in the webmail for one shop or sign-up and which, switched off, are refused as an address that never existed; and <strong>verified send-as</strong> (schema 6066), which receives nothing here - it is a <em>From</em> address, not an alias.</p>
<p dir="auto"><strong>Domain aliases.</strong> <strong>Accounts &amp; domains → Domains → Properties → Names</strong>. The rewrite is total: <code>anything@yourcompany.net</code> becomes <code>anything@yourcompany.com</code> before anything else is looked at. You do not create per-address aliases for an alias domain; the <strong>sender</strong> address is rewritten too, which is what lets a list in <em>membership</em> mode recognise a member who posts from the alias domain; and the alias domain needs its own MX record. Since 6.3.7 adding one is the server administrator's: a credential confined to named domains - such as a domain administrator, or an API key issued for its domains - is refused, over REST and over COM, because a domain alias decides what names the server accepts mail for.</p>
<p dir="auto"><strong>Plus addressing</strong> is off by default and enabled per domain on <strong>Accounts &amp; domains → Domains → Properties → Limits</strong> (default character <code>+</code>). With it on, <code>alice+invoices@example.com</code> resolves to <code>alice@example.com</code>, and the full original address is still in the <code>To:</code> header. It applies to the recipient address only, after domain aliases and before the account, alias and list lookups. When off, <code>alice+invoices@</code> is an unknown address.</p>
<h3><a class="anchor-offset" name="distribution-lists"></a>Distribution lists</h3>
<p dir="auto">A <strong>distribution list</strong> delivers one message to many recipients. In the Control Panel: the <strong>Distribution lists</strong> panel of the domain, then <strong>Properties</strong> and <strong>Members</strong>.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Mode</th>
<th>Stored value</th>
<th>Who may post</th>
<th>Refusal</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Public - anyone can send</strong></td>
<td><code>0</code></td>
<td>Anyone at all</td>
<td>-</td>
</tr>
<tr>
<td><strong>Membership - only list members can send</strong></td>
<td><code>1</code></td>
<td>Any address on the member list, after domain aliases are applied to both sides</td>
<td><code>550 Not authorized sender.</code></td>
</tr>
<tr>
<td><strong>Announcements only</strong></td>
<td><code>2</code></td>
<td>Only the address in <strong>Require sender address</strong></td>
<td><code>550 Not authorized owner.</code></td>
</tr>
<tr>
<td><strong>Anyone in the domain can send</strong></td>
<td><code>3</code></td>
<td>Any sender whose domain is the list's own</td>
<td><code>550 Not authorized domain.</code></td>
</tr>
<tr>
<td><em>(on any mode)</em> <strong>Require SMTP authentication</strong></td>
<td>flag</td>
<td>An unauthenticated session is refused first</td>
<td><code>550 SMTP authentication required.</code></td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>"Anyone in the domain" is a claim, not a proof.</strong> <code>MAIL FROM</code> is free text, so an outsider can assert a local address. Tick <strong>Require SMTP authentication</strong> with that mode or the list is open to the Internet. A fifth mode, <code>4</code>, "Anyone with a server account can send", existed only in the type library and behaved as Public; <code>put_Mode</code> now refuses the value and the option is gone from the dialog.</p>
<p dir="auto">One more check runs for every mode, Public included: the poster must be allowed to reach every recipient of the list, so a list containing a members-only list the poster is not in is refused as a whole.</p>
<p dir="auto"><strong>Moderation.</strong> Set a <strong>Moderator</strong> address and a posting the rules above would refuse is accepted with <code>250</code> and forwarded to the moderator instead, stamped <code>X-hMailServer-Moderation</code>. The moderator approves it by resending it to the list from an authenticated session; that authentication is the security boundary and is unconditional. Three failures are numbered in the log: <code>6360</code> (the moderator was removed between the check and the expansion), <code>6361</code> (the moderator address does not resolve; the recipient is refused with <code>550</code>) and <code>6363</code> (the list is its own moderator).</p>
<p dir="auto"><strong>Bounce address.</strong> Empty means bounces go to the poster. Set, it becomes the envelope sender of every copy, so a dead subscriber's bounce reaches the list owner, and an external member's server evaluates SPF against the list's own domain. A bounce address pointing at the list itself is ignored, with error <code>6362</code>.</p>
<p dir="auto"><strong>Headers.</strong> An unmanaged list adds <code>List-Id</code>, <code>List-Post</code> (the literal <code>NO</code> for an announcements-only list), <code>List-Help</code>, <code>List-Owner</code> and a <code>mailto:</code>-only <code>List-Unsubscribe</code>, before DKIM signing. Nothing is added when the message already carries a <code>List-Id</code>, or when the list or owner address is not US-ASCII.</p>
<h3><a class="anchor-offset" name="a-list-that-defines-itself-the-membership-query-since-6.3.4"></a>A list that defines itself: the membership query, since 6.3.4</h3>
<p dir="auto"><em>Schema 6074.</em> A list can carry a <strong>membership query</strong>: one short text that says who its members are, answered against the server's accounts at the moment a message is sent to it. <code>everyone@example.com</code> with the query <code>domain</code> reaches every active account of the domain on the day, including the person who joined this morning and not the one switched off last night.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Query</th>
<th>Members</th>
</tr>
</thead>
<tbody>
<tr>
<td><em>(empty)</em></td>
<td>A static list: the addresses under Recipients and nothing else</td>
</tr>
<tr>
<td><code>domain</code></td>
<td>Every <strong>active</strong> account of the list's own domain</td>
</tr>
<tr>
<td><code>domain:other.example</code></td>
<td>Every active account of that domain, which this server has to host</td>
</tr>
<tr>
<td><code>pattern:sales-*@example.com</code></td>
<td>Every active account whose address matches the wildcard; <code>*</code> is any run, <code>?</code> exactly one, case ignored</td>
</tr>
<tr>
<td><code>everyone</code></td>
<td>Every active account of every active domain on the server</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>It is a union with the list's own recipients</strong>, never a replacement. An address that is both is delivered to once.</li>
<li><strong>It answers accounts only</strong> - not aliases, other lists or outside addresses - and never a disabled account or an account of a disabled domain.</li>
<li><strong>It is resolved once per SMTP transaction</strong>, not once per <code>RCPT TO</code>, and nothing is stored.</li>
<li><strong>Who may set which form.</strong> A domain administrator, or an API key with a domain scope, may set <code>domain</code> or a <code>pattern:</code> in a domain it holds. <code>everyone</code>, <code>domain:</code> naming another tenant's domain, and a pattern whose domain part is itself a wildcard are the server administrator's. The same rule governs reading the answer: <code>GET /api/v1/lists/{address}/members</code> answers <strong>403</strong> to a confined credential when the query reaches past its domains.</li>
<li><strong>A query is judged when it is saved.</strong> <code>domain:</code> naming a domain this server does not host, a <code>pattern:</code> with no <code>@</code>, or any text that is none of the five forms is refused, by the same sentence over COM, over REST and in the Control Panel.</li>
<li><strong>"Answers nobody" and "could not be answered" are different.</strong> A query whose named domain has been deleted is not an error at delivery: the message goes to the list's rows and code 6980 is logged. But when the accounts <strong>cannot be read</strong> - the database locked by a backup - the recipient is refused <code>451 4.3.2</code> and the sender retries, with code 6982, and the members route answers <strong>503</strong>.</li>
</ul>
<p dir="auto">It is set as <em>Membership query</em> in the Control Panel's list dialog and the Control Deck, <code>membership</code> over REST, <code>DistributionList.Membership</code> over COM, and <code>hmctl list update all@example.com --set membership=domain</code>. The Deck's list editor shows <strong>Delivers to now</strong>, each address marked <em>Kept by hand</em> or <em>From the query</em>.</p>
<h3><a class="anchor-offset" name="the-list-manager-a-mailing-list-since-6.3.4"></a>The list manager: a mailing list, since 6.3.4</h3>
<p dir="auto"><em>Schema 6092.</em> A distribution list with the <strong>list manager</strong> switched on is one people join and leave themselves. Nothing changes for a list until it is switched on: every list an upgrade finds is unmanaged.</p>
<ol>
<li><strong>On the list</strong>: <em>Managed</em> in the Control Panel's list dialog, <code>managed</code> in the Deck's list editor and on <code>PUT /api/v1/lists/{address}</code>, or <code>DistributionList.Managed</code> over COM.</li>
<li><strong>The links.</strong> The confirmation page, each member's page, the owner's approval page, the subscribe form and the archive are served by the <strong>REST listener</strong>, which is off until <code>RestApiPort</code> is set (<a href="/topic/28264">turning the REST API on</a>). Make it reachable over HTTPS, then set <code>list_base_url</code> (<code>ListBaseUrl</code>), such as <code>https://lists.example.com</code>. Empty, the default, offers no link at all. <strong>Only an <code>https://</code> base gives RFC 8058's one-click.</strong></li>
<li><strong>DKIM on the list's domain.</strong> The copies are signed as that domain after the list's fields are in place, so the signature covers <code>List-Unsubscribe</code> and <code>List-Unsubscribe-Post</code>. With DKIM off for the domain the copies go unsigned and the providers do not offer the one-click.</li>
</ol>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Address</th>
<th>What it does</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>team@example.com</code></td>
<td>Post to the list</td>
</tr>
<tr>
<td><code>team-subscribe@example.com</code></td>
<td>Ask to join, and confirm by replying</td>
</tr>
<tr>
<td><code>team-unsubscribe@example.com</code></td>
<td>Ask to leave: the member is sent a link and a token, and nothing more happens until they follow it</td>
</tr>
<tr>
<td><code>team-request@example.com</code></td>
<td>The help text</td>
</tr>
<tr>
<td><code>team-owner@example.com</code></td>
<td>The person who runs the list</td>
</tr>
<tr>
<td><code>team-bounces@example.com</code></td>
<td>Delivery reports; with VERP, <code>team-bounces+jo=example.org@example.com</code></td>
</tr>
</tbody>
</table>
<p dir="auto">None of them is an account; an account, an alias or a list of exactly one of those names is the administrator's and wins over the manager.</p>
<p dir="auto"><strong>Joining.</strong> <code>subscribe_policy</code> is <strong>0 closed</strong> (the default: the administrator adds members), <strong>1 confirm</strong> (the address asked for is sent a confirmation with a token) or <strong>2 moderated</strong> (after the address confirms, the owner approves on a page, signed in to the webmail as the owner's own account, or on the Deck; a reply by mail approves nothing). The list answers at most twenty requests an hour from one requester and two hundred an hour in all.</p>
<p dir="auto"><strong>Delivery.</strong> Each member chooses <strong>each</strong> message, one <strong>digest</strong> a day, or <strong>none</strong>. With <code>digest</code> on, one digest goes at <code>digest_hour</code> (7 by default, the server's local time), at most 100 messages and 10 MB. With <code>archive</code> at 1 (members) or 2 (public), every distributed message is kept and shown by month, <strong>as text only</strong>, never as HTML. The rows of <code>hm_listarchive</code> are not in the backup.</p>
<p dir="auto"><strong>What a member's copy carries</strong>, over an <code>https://</code> base with the archive on:</p>
<pre><code class="language-text">List-Id: &lt;team.example.com&gt;
List-Post: &lt;mailto:team@example.com&gt;              (NO for an announcement list)
List-Help: &lt;mailto:team-request@example.com?subject=help&gt;
List-Subscribe: &lt;mailto:team-subscribe@example.com?subject=subscribe&gt;, &lt;https://lists.example.com/lists/team@example.com/subscribe&gt;
List-Unsubscribe: &lt;mailto:team-unsubscribe@example.com?subject=unsubscribe&gt;, &lt;https://lists.example.com/lists/unsubscribe?t=...&gt;
List-Unsubscribe-Post: List-Unsubscribe=One-Click
List-Owner: &lt;mailto:team-owner@example.com&gt;
List-Archive: &lt;https://lists.example.com/lists/team@example.com/archive&gt;
Precedence: list
X-Loop: team@example.com
X-hMailServer-List-Member: &lt;a tag, see Bounces&gt;
</code></pre>
<p dir="auto"><strong>Bounces.</strong> A <code>5.x.x</code> is a hard bounce, a <code>4.x.x</code> a soft one; a <em>delayed</em> warning counts for nothing. Anybody can write to the bounce address, so a report is believed only when it carries the member's tag, <code>X-hMailServer-List-Member</code>.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Setting</th>
<th>REST key</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ListHardBouncesToUnsubscribe</code></td>
<td><code>list_hard_bounces_to_unsubscribe</code></td>
<td>1</td>
</tr>
<tr>
<td><code>ListSoftBouncesToUnsubscribe</code></td>
<td><code>list_soft_bounces_to_unsubscribe</code></td>
<td>5</td>
</tr>
<tr>
<td><code>ListBounceWindowDays</code></td>
<td><code>list_bounce_window_days</code></td>
<td>30</td>
</tr>
</tbody>
</table>
<p dir="auto">A member who reaches either count is set to <strong>none</strong> - paused, never unsubscribed - and the owner is told once.</p>
<h3><a class="anchor-offset" name="public-folders"></a>Public folders</h3>
<p dir="auto"><strong>Accounts &amp; domains → Public folders</strong>, in the Control Panel on Windows, creates shared IMAP folders; public folders have no REST route yet, so Linux has no administrator's page for them. On either platform a client holding the <code>a</code> right manages a folder's permissions over IMAP. Public folders live in their own namespace, <code>#Public</code>, and sub-folders are made by typing the whole path with the hierarchy delimiter, <code>.</code> by default: <code>#Public.Team.Archive</code>. <code>#Users.alice@example.com</code> is a different namespace: one account's own folders, shared.</p>
<p dir="auto">Each permission entry grants RFC 4314 rights to an <strong>account</strong>, a <strong>group</strong> or <strong>Anyone</strong> (every authenticated account).</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Right</th>
<th>Letter</th>
<th>What it allows</th>
</tr>
</thead>
<tbody>
<tr>
<td>Lookup</td>
<td><code>l</code></td>
<td>The folder appears in <code>LIST</code>/<code>LSUB</code>. Without it the folder does not exist as far as that user is concerned</td>
</tr>
<tr>
<td>Read messages</td>
<td><code>r</code></td>
<td><code>SELECT</code> and <code>STATUS</code></td>
</tr>
<tr>
<td>Keep seen/unseen state</td>
<td><code>s</code></td>
<td>Set or clear <code>\Seen</code></td>
</tr>
<tr>
<td>Set flags</td>
<td><code>w</code></td>
<td>Flags other than <code>\Seen</code> and <code>\Deleted</code></td>
</tr>
<tr>
<td>Insert</td>
<td><code>i</code></td>
<td><code>APPEND</code> and <code>COPY</code> into the folder</td>
</tr>
<tr>
<td>Post</td>
<td><code>p</code></td>
<td>Send mail to the folder's submission address</td>
</tr>
<tr>
<td>Create sub-folders</td>
<td><code>k</code></td>
<td><code>CREATE</code> beneath it</td>
</tr>
<tr>
<td>Delete folder</td>
<td><code>x</code></td>
<td><code>DELETE</code></td>
</tr>
<tr>
<td>Delete messages</td>
<td><code>t</code></td>
<td>Set or clear <code>\Deleted</code></td>
</tr>
<tr>
<td>Expunge</td>
<td><code>e</code></td>
<td><code>EXPUNGE</code></td>
</tr>
<tr>
<td>Administer</td>
<td><code>a</code></td>
<td><code>SETACL</code>, <code>DELETEACL</code>, <code>GETACL</code>, <code>LISTRIGHTS</code></td>
</tr>
</tbody>
</table>
<ul>
<li><strong>An owner has every right implicitly.</strong> For anyone else the server walks up from the folder to the nearest ancestor that has any ACL rows, then uses the row for the account, else for a group the account is in, else for Anyone.</li>
<li><strong>The nearest ancestor with any rows wins, and rows are not merged.</strong> Adding one permission to a sub-folder removes everyone else's access to it.</li>
<li><strong><code>\Seen</code> is shared in a shared folder, not per user.</strong> Grant <code>lrs</code> and delegates share one read/unread state; grant <code>lr</code> and they leave no trace.</li>
<li><strong>Turning ACL enforcement off</strong> opens public folders only. It does not extend to <code>#Users</code>, which stops existing entirely.</li>
</ul>
<h3><a class="anchor-offset" name="what-it-does-not-do"></a>What it does not do</h3>
<ul>
<li><strong>The list manager does not rewrite <code>From</code> for DMARC.</strong> A posting from a domain that publishes <code>p=reject</code> reaches outside members with a <code>From</code> that fails DMARC when the list changed the message, and Gmail and Yahoo may refuse it.</li>
<li><strong>No posting from the web</strong>, no list password, no approval by reply, no NNTP, no IMAP access to an archive, no weekly digest, and one owner address per list.</li>
<li><strong>A membership query has no directory-attribute form</strong> and no <code>group:</code> form, and no query can name another list's query.</li>
<li><strong>The list manager's fixture is not linked into the Linux test suite</strong>: <code>MailingLists.md</code> says its thirty-four tests are of the Windows suite.</li>
</ul>
<h3><a class="anchor-offset" name="where-to-read-more"></a>Where to read more</h3>
<ul>
<li>Wiki: <a href="https://gitlab.com/hmailserver/hmailserver/-/wikis/Aliases-Lists-and-Public-Folders" rel="nofollow ugc">Aliases, Lists and Public Folders</a>, <a href="https://gitlab.com/hmailserver/hmailserver/-/wikis/Mailing-Lists" rel="nofollow ugc">Mailing Lists</a>, <a href="https://gitlab.com/hmailserver/hmailserver/-/wikis/Mail-In-to-a-Webhook" rel="nofollow ugc">Mail In to a Webhook</a></li>
<li>Documents at the 6.3.4 tag: <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.4/hmailserver/docs/DistributionLists.md" rel="nofollow ugc">DistributionLists.md</a>, <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.4/hmailserver/docs/MailingLists.md" rel="nofollow ugc">MailingLists.md</a></li>
<li>The public documentation: <a href="https://www.progressiverobot.com/hmailserver-documentation/#13-aliases-distribution-lists-and-public-folders" rel="nofollow ugc">chapter 13</a></li>
<li>On this forum: <a href="/topic/28188">Being trusted by the servers you send to</a> for DKIM and DMARC, the <a href="/topic/28218">6.3.4 release announcement</a>, <a href="/topic/28254">the webmail in depth</a> for masked addresses and send-as, and <a href="/topic/28224">IMAP on the server</a> for shared mailboxes</li>
</ul>
]]></description><link>https://www.hmailserver.co.uk/topic/28270/aliases-distribution-lists-membership-queries-mailing-lists-and-public-folders</link><generator>RSS for Node</generator><lastBuildDate>Fri, 06 Nov 2026 09:05:53 GMT</lastBuildDate><atom:link href="https://www.hmailserver.co.uk/topic/28270.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Sep 2026 19:52:13 GMT</pubDate><ttl>60</ttl></channel></rss>