File: virtual-domains.html

package info (click to toggle)
cyrus-imapd 3.10.2-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 59,108 kB
  • sloc: ansic: 284,386; perl: 137,327; javascript: 9,659; sh: 5,730; yacc: 2,565; makefile: 2,188; cpp: 2,147; lex: 662; xml: 621; awk: 303; python: 272; asm: 262
file content (349 lines) | stat: -rw-r--r-- 25,342 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Virtual Domains &mdash; Cyrus IMAP 3.10.2 documentation</title>
      <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
      <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
      <link rel="stylesheet" href="../../../_static/graphviz.css" type="text/css" />
      <link rel="stylesheet" href="../../../_static/cyrus.css" type="text/css" />
  
        <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
        <script src="../../../_static/jquery.js"></script>
        <script src="../../../_static/underscore.js"></script>
        <script src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script src="../../../_static/doctools.js"></script>
        <script src="../../../_static/sphinx_highlight.js"></script>
    <script src="../../../_static/js/theme.js"></script>
    <link rel="index" title="Index" href="../../../genindex.html" />
    <link rel="search" title="Search" href="../../../search.html" />
    <link rel="next" title="Mailbox Annotations (METADATA)" href="mailbox-annotations.html" />
    <link rel="prev" title="Mailbox Namespaces" href="namespaces.html" /> 
</head>

<body class="wy-body-for-nav"> 
  <div class="wy-grid-for-nav">
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >

          
          
          <a href="../../../index.html" class="icon icon-home">
            Cyrus IMAP
          </a>
              <div class="version">
                3.10.2
              </div>
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
              <p class="caption" role="heading"><span class="caption-text">Cyrus IMAP</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../download.html">Download</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../quickstart.html">Quickstart Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../../overview.html">Overview</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="../features.html">Features</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../features.html#security-and-authentication">Security and Authentication</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../features.html#mailbox-management">Mailbox Management</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="automatic-creation-of-mailboxes.html">Automatic Creation of Mailboxes</a></li>
<li class="toctree-l4"><a class="reference internal" href="namespaces.html">Mailbox Namespaces</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">Virtual Domains</a></li>
<li class="toctree-l4"><a class="reference internal" href="mailbox-annotations.html">Mailbox Annotations (METADATA)</a></li>
<li class="toctree-l4"><a class="reference internal" href="mailbox-distribution.html">Mailbox Distribution</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../features.html#message-management">Message Management</a></li>
<li class="toctree-l3"><a class="reference internal" href="../features.html#calendar-and-contact-dav-collection-management">Calendar and Contact (DAV) Collection Management</a></li>
<li class="toctree-l3"><a class="reference internal" href="../features.html#storage">Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../features.html#load-management">Load Management</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../overview_and_concepts.html">Concepts</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../setup.html">Setup</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../operations.html">Operations</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../developers.html">Developers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../support.html">Support/Community</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Cyrus SASL</span></p>
<ul>
<li class="toctree-l1"><a class="reference external" href="http://www.cyrusimap.org/sasl">Cyrus SASL</a></li>
</ul>

        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../../../index.html">Cyrus IMAP</a>
      </nav>

      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
          <li class="breadcrumb-item"><a href="../../../overview.html">Overview</a></li>
          <li class="breadcrumb-item"><a href="../features.html">Features</a></li>
      <li class="breadcrumb-item active">Virtual Domains</li>
      <li class="wy-breadcrumbs-aside">
              <a href="https://github.com/cyrusimap/cyrus-imapd/blob/master/docsrc/imap/concepts/features/virtual-domains.rst" class="fa fa-github"> Edit on GitHub</a>
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
             
  <section id="virtual-domains">
<h1>Virtual Domains<a class="headerlink" href="#virtual-domains" title="Permalink to this heading"></a></h1>
<section id="what-are-virtual-domains">
<h2>What are virtual domains?<a class="headerlink" href="#what-are-virtual-domains" title="Permalink to this heading"></a></h2>
<p>Virtual domains means hosting a service for more than one
domain on a single server.  Cyrus IMAP has the ability to host IMAP/POP
mailboxes for multiple domains (for example: <code class="docutils literal notranslate"><span class="pre">test&#64;cyrusisgreat.org</span></code> and
<code class="docutils literal notranslate"><span class="pre">test&#64;ilovecyrus.com</span></code>) on a single server or Murder.</p>
<p>Cyrus needs to know which domain to use when a mailbox is accessed.
There are two ways in which Cyrus can determine the domain:</p>
<dl class="simple">
<dt>Fully qualified userid</dt><dd><p>The client logs in with a userid
containing the domain in which the user belongs (for example:
<code class="docutils literal notranslate"><span class="pre">test&#64;cyrusisgreat.org</span></code> or <code class="docutils literal notranslate"><span class="pre">test&#64;ilovecyrus.com</span></code>)</p>
</dd>
<dt>IP address</dt><dd><p>The server looks up the domain based on the IP
address of the receiving interface (useful for servers with multiple
NICs or those using IP aliasing)</p>
</dd>
</dl>
<p>If the <code class="docutils literal notranslate"><span class="pre">virtdomains</span></code> option is set to <code class="docutils literal notranslate"><span class="pre">off</span></code> (or <code class="docutils literal notranslate"><span class="pre">no</span></code>, <code class="docutils literal notranslate"><span class="pre">0</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code>),
Cyrus does not know or care about domains, and only ever considers the local
part of email addresses.  This configuration is never recommended, but is
currently the default.</p>
<p>If the <code class="docutils literal notranslate"><span class="pre">virtdomains</span></code> option is set to <code class="docutils literal notranslate"><span class="pre">userid</span></code>, then only the
fully qualified userid is used.  This is the only recommended configuration
for new deployments, and in the future may become the default or only option.
Existing deployments should strongly consider migrating towards this
configuration.</p>
<p>If the <code class="docutils literal notranslate"><span class="pre">virtdomains</span></code> option is set to <code class="docutils literal notranslate"><span class="pre">on</span></code> (or <code class="docutils literal notranslate"><span class="pre">yes</span></code>, <code class="docutils literal notranslate"><span class="pre">1</span></code>, <code class="docutils literal notranslate"><span class="pre">true</span></code>),
Cyrus uses both mechanisms to work out the domain (with the fully qualified
userid taking precedence).  This configuration is not recommended.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you are providing calendaring services, you MUST use the
<code class="docutils literal notranslate"><span class="pre">virtdomains:</span> <span class="pre">userid</span></code> configuration.  Calendaring services require
a consistent single authoritative fully-qualified email address for
each user in order to function, and this is the only configuration
that provides it.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">virtdomains:</span> <span class="pre">off</span></code> and <code class="docutils literal notranslate"><span class="pre">virtdomains:</span> <span class="pre">on</span></code> configurations both
allow users' domains to be changed from outside of Cyrus without Cyrus
knowing about it, which fundamentally breaks calendaring.  These
configurations are only suitable for IMAP-only deployments.</p>
</div>
</section>
<section id="concepts">
<h2>Concepts<a class="headerlink" href="#concepts" title="Permalink to this heading"></a></h2>
<dl>
<dt>Everyone is in a domain</dt><dd><p>It's best to think of every user as existing inside a domain.  Unqualified users are technically inside the <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code>.</p>
</dd>
<dt>Names can be qualified</dt><dd><p>Global admins can reference mailboxes and IDs by qualified names.  That is, for any given mailbox command, you can add <code class="docutils literal notranslate"><span class="pre">&#64;domain</span></code> to the end of the mailbox name.</p>
<p>Here are some examples:</p>
<blockquote>
<div><ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">cyradm&gt;</span> <span class="pre">create</span> <span class="pre">user/lukecage&#64;example.net</span></code> - create a user</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cyradm&gt;</span> <span class="pre">create</span> <span class="pre">user/mercedesknight&#64;example.net</span></code> - create another user</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cyradm&gt;</span> <span class="pre">setquota</span> <span class="pre">user/lukecage&#64;example.net</span> <span class="pre">50000</span></code> - define a quota</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cyradm&gt;</span> <span class="pre">setaclmailbox</span> <span class="pre">user/lukecage&#64;example.net</span> <span class="pre">mercedesknight&#64;example.net</span> <span class="pre">read</span></code> - give Mercedes Knight read access to Luke Cage's mailbox</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cyradm&gt;</span> <span class="pre">listmailbox</span> <span class="pre">*&#64;example.net</span></code> - list all mailboxes in the example.net domain</p></li>
</ul>
</div></blockquote>
</dd>
</dl>
<p>Each mailbox exists in only one domain</p>
<dl>
<dt>Domains are mutually exclusive</dt><dd><p>Users only have access to mailboxes within their own domain (intra-domain).  The following
example will not work: <code class="docutils literal notranslate"><span class="pre">setacl</span> <span class="pre">user/mercedesknight&#64;herdomain.com</span>
<span class="pre">lukecage&#64;hisdomain.com</span> <span class="pre">read</span></code>.</p>
</dd>
<dt>Global and Domain admins</dt><dd><p>The Cyrus virtual domains
implementation supports per-domain administrators as well as
global (inter-domain) administrators.</p>
<p>Domain-specific administrators are specified with a fully qualified userid in the
<code class="docutils literal notranslate"><span class="pre">admins</span></code> option (e.g., <code class="docutils literal notranslate"><span class="pre">admin&#64;example.net</span></code>) and only
have access to mailboxes in the associated domain.</p>
<p>Global administrators are specified with unqualified userids.</p>
</dd>
</dl>
<p>MOST OF THIS SHOULD BE IN DEPLOYMENT GUIDE?</p>
</section>
<section id="quick-start">
<h2>Quick Start<a class="headerlink" href="#quick-start" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Add <code class="docutils literal notranslate"><span class="pre">virtdomains:</span> <span class="pre">userid</span></code> to <a class="reference internal" href="../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a></p></li>
<li><p>Add a <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code> entry to <a class="reference internal" href="../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a></p></li>
<li><p>Use cyradm (as a global or domain admin) to create mailboxes for each domain.</p></li>
</ul>
</section>
<section id="configuration">
<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this heading"></a></h2>
<p>Support for virtual domains is enabled by turning on the <code class="docutils literal notranslate"><span class="pre">virtdomains</span></code> option in <a class="reference internal" href="../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a>.</p>
<p>When upgrading from a single domain installation to a virtual
domain installation, the name of the existing domain (domain of the
server hostname) should be specified using the <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code>
option in <a class="reference internal" href="../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a>.  This allows users to continue to
access their mailboxes using unqualified userids.  For example, if the
primary IP address on your server resolves to 'www.xxx.yyy.zzz',
then set <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code> to 'xxx.yyy.zzz'.</p>
<p>Even for new installations, set the <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code> to the &quot;real&quot;
domain of the server (domain of its primary hostname).
See <a class="reference internal" href="#administrators">Administrators</a> for further discussion.</p>
<p>Here is a sample <code class="docutils literal notranslate"><span class="pre">imapd.conf</span></code> with a minimal set of configuration
options:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">configdirectory</span><span class="p">:</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">imap</span>
<span class="n">partition</span><span class="o">-</span><span class="n">default</span><span class="p">:</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">spool</span><span class="o">/</span><span class="n">cyrus</span>
<span class="n">admins</span><span class="p">:</span> <span class="n">admin</span> <span class="n">lukecage</span><span class="o">.</span><span class="n">admin</span><span class="nd">@hisdomain</span><span class="o">.</span><span class="n">com</span> <span class="n">mercedesknight</span><span class="o">.</span><span class="n">admin</span><span class="nd">@herdomain</span><span class="o">.</span><span class="n">net</span>
<span class="n">virtdomains</span><span class="p">:</span> <span class="n">yes</span>
<span class="n">defaultdomain</span><span class="p">:</span> <span class="n">exampleisp</span><span class="o">.</span><span class="n">net</span>
</pre></div>
</div>
<p>This example has three domains: exampleisp.net, hisdomain.com, and
herdomain.net.  <code class="docutils literal notranslate"><span class="pre">admin</span></code> can administer all three domains, while
<code class="docutils literal notranslate"><span class="pre">lukecage.admin&#64;hisdomain.com</span></code> and
<code class="docutils literal notranslate"><span class="pre">mercedesknight.admin&#64;herdomain.net</span></code> can only administer their respective
domains.</p>
<p>Everyday users should not be administrators.  In the
above example, Mercedes Knight and Luke Cage have separate administrative accounts for
their domains.</p>
<section id="multiple-ip-addresses">
<h3>Multiple IP Addresses<a class="headerlink" href="#multiple-ip-addresses" title="Permalink to this heading"></a></h3>
<p>In order to use a multiple IP address configuration, the server must
be able to do a reverse lookup on the IP address to determine the
hostname of the receiving interface.  For example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">192.168.0.1</span>  <span class="o">-&gt;</span>  <span class="n">mail</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">com</span>
<span class="mf">192.168.0.2</span>  <span class="o">-&gt;</span>  <span class="n">mail</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">net</span>
<span class="mf">192.168.0.3</span>  <span class="o">-&gt;</span>  <span class="n">mail</span><span class="o">.</span><span class="n">foo</span><span class="o">.</span><span class="n">bar</span>
</pre></div>
</div>
<p>Once the server obtains the fully qualified hostname of the
interface, it removes the localpart (i.e., 'mail') and uses the
remainder as the domain for any user that logs in.</p>
<p>This address to hostname mapping would usually be done via DNS,
<code class="docutils literal notranslate"><span class="pre">/etc/hosts</span></code>, NIS, etc.  Configuration of the various naming
services is beyond the scope of this document.</p>
</section>
<section id="delivering-mail">
<h3>Delivering mail<a class="headerlink" href="#delivering-mail" title="Permalink to this heading"></a></h3>
<p>To deliver mail to your virtual domains, configure your MTA so that
the envelope recipient (RCPT TO) passed to <code class="docutils literal notranslate"><span class="pre">lmtpd</span></code> is fully
qualified with the correct domain.</p>
<section id="configuring-sendmail">
<h4>Configuring Sendmail<a class="headerlink" href="#configuring-sendmail" title="Permalink to this heading"></a></h4>
<p>Follow the basic <a class="reference internal" href="../../installing.html#installing"><span class="std std-ref">configuration instructions</span></a>.</p>
<p>Some items to be aware of:</p>
<ul>
<li><p>It is easiest to use the mailertable to route mail to Cyrus,
rather than adding the domain to the local-host-names file ($w).
This prevents Sendmail from changing the domain name to the local host name.</p>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">example.com</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">cyrusv2:/var/imap/socket/lmtp</span></code></p>
</div></blockquote>
</li>
<li><p>You'll have to use the Cyrus mailer in LMTP mode, and you'll have
to change the mailer flags so that it provides the full domain while
communicating via LMTP.  Specifically these changes:</p>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">S=EnvFromSMTP/HdrFromSMTP,</span> <span class="pre">R=EnvToSMTP</span></code></p>
</div></blockquote>
</li>
</ul>
</section>
</section>
<section id="mail-clients">
<h3>Mail Clients<a class="headerlink" href="#mail-clients" title="Permalink to this heading"></a></h3>
<p>The only changes you'll need to make to mail clients is to change
usernames to the fully qualified domain names, i.e., <code class="docutils literal notranslate"><span class="pre">user&#64;example.com</span></code>.
The <code class="docutils literal notranslate"><span class="pre">user%example.com</span></code> form of userid is also supported.</p>
<p>Users in the default domain will not
need to reconfigure their clients (as unqualified userids are assumed to
be in the default domain).</p>
</section>
<section id="administrators">
<h3>Administrators<a class="headerlink" href="#administrators" title="Permalink to this heading"></a></h3>
<p>The Cyrus virtual domains implementation supports per-domain
administrators as well as &quot;global&quot; (inter-domain) administrators.
Domain-specific administrators are specified with a
fully qualified userid in the <code class="docutils literal notranslate"><span class="pre">admins</span></code> option
(e.g., <code class="docutils literal notranslate"><span class="pre">admin&#64;example.net</span></code>) and only have access to mailboxes in
the associated domain.  Mailbox names should be specified in the same
fashion as on a single domain configuration.</p>
<p>Global administrators are specified with an unqualified userid in the
<code class="docutils literal notranslate"><span class="pre">admins</span></code> option and have access to <em>any</em> mailbox on the
server.  Because global admins use unqualified userids, they belong
to the <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code>.  As a result, you CANNOT have a global
admin without specifying a <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code>.  Note that when
trying to login as a global admin to a multi-homed server from a remote
machine, it might be necessary to fully qualify the userid with the
<code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code>.</p>
<p>Global admins must use <code class="docutils literal notranslate"><span class="pre">mailbox&#64;domain</span></code> syntax when
specifying mailboxes outside of the <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code>.  Examples
(using <code class="docutils literal notranslate"><span class="pre">cyradm</span></code>):</p>
<p>To create a new INBOX for user 'test' in <code class="docutils literal notranslate"><span class="pre">defaultdomain</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cm</span> <span class="n">user</span><span class="o">/</span><span class="n">test</span>
</pre></div>
</div>
<p>To create a new INBOX for user 'test' in domain 'example.com':</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cm</span> <span class="n">user</span><span class="o">/</span><span class="n">test</span><span class="nd">@example</span><span class="o">.</span><span class="n">com</span>
</pre></div>
</div>
<p>To list all mailboxes in domain 'example.com':</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">lm</span> <span class="o">*</span><span class="nd">@example</span><span class="o">.</span><span class="n">com</span>
</pre></div>
</div>
</section>
</section>
</section>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="namespaces.html" class="btn btn-neutral float-left" title="Mailbox Namespaces" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="mailbox-annotations.html" class="btn btn-neutral float-right" title="Mailbox Annotations (METADATA)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; Copyright 1993–2025, The Cyrus Team.</p>
  </div>

  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    provided by <a href="https://readthedocs.org">Read the Docs</a>.
   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>
 



</body>
</html>