<!DOCTYPE html>
<html lang='en'>
<head>
<title>
mx - LEAP Platform Documentation
</title>
<meta content='width=device-width, initial-scale=1.0' name='viewport'>
<meta charset='UTF-8'>
<base href="" />
<style>
  body {
    background: #444;
    display: flex;
    flex-direction: row;
    padding: 10px;
    margin: 0px;
  }
  #sidebar {
    flex: 0 0 250px;
    background: white;
    margin-right: 10px;
    padding: 20px;
  }
  #sidebar ul {
    list-style-type: none;
    padding-left: 0px;
    margin: 0;
  }
  #sidebar li { padding: 4px }
  #sidebar li a { text-decoration: none }
  #sidebar li.active { background: #444 }
  #sidebar li.active a { color: white }
  #sidebar li.level1 { padding-left: 20px }
  #sidebar li.level2 { padding-left: 40px }
  #main {
    flex: 1 1 auto;
    background: white;
    padding: 20px;
  }
  #title-box {
    padding-bottom: 20px;
    border-bottom: 5px solid #eee;
  }
  #title-box h1 {
    margin-top: 0px;
  }
  pre {
    padding: 10px;
    background: #eef;
  }
  code {
    background: #eef;
  }
  table {border-collapse: collapse}
  table td {
    border: 1px solid #ccc;
    padding: 4px;
    vertical-align: top;
  }
</style>
</head>
<body>
<div id='sidebar'>
<ul>
<li class=''>
<a href='../../../index.html'>Home</a>
</li>
<li class=' level0'>
<a class='' href='../../guide.html'>Guide</a>
</li>
<li class=' level0'>
<a class='' href='../../tutorials.html'>Tutorials</a>
</li>
<li class='semi-active level0'>
<a class='' href='../../services.html'>Services</a>
</li>
<li class=' level1'>
<a class='' href='../couchdb.html'>couchdb</a>
</li>
<li class=' level1'>
<a class='' href='../openvpn.html'>openvpn</a>
</li>
<li class=' level1'>
<a class='' href='../monitor.html'>monitor</a>
</li>
<li class='active level1'>
<a class='' href='../mx.html'>mx</a>
</li>
<li class=' level1'>
<a class='' href='../soledad.html'>soledad</a>
</li>
<li class=' level1'>
<a class='' href='../tor.html'>tor</a>
</li>
<li class=' level1'>
<a class='' href='../webapp.html'>webapp</a>
</li>
<li class=' level0'>
<a class='' href='../../upgrading.html'>Upgrading</a>
</li>
<li class=' level0'>
<a class='' href='../../troubleshooting.html'>Troubleshooting</a>
</li>
<li class=' level0'>
<a class='' href='../../details.html'>Details</a>
</li>
</ul>
</div>
<div id='main'>
<div id='title-box'>
<h1>mx</h1>

<div id='summary'>Incoming and outgoing MX servers.</div>
</div>
<div id='content-box'>
<div id="TOC"><ol>
  <li>
    <a href="index.html#topology">Topology</a>
  </li>
  <li>
    <a href="index.html#configuration">Configuration</a>
    <ol>
      <li>
        <a href="index.html#aliases">Aliases</a>
      </li>
    </ol>
  </li>
</ol></div>

<h2><a name="topology"></a>Topology</h2>

<p><code>mx</code> nodes communicate with the public internet, clients, and <code>couchdb</code> nodes.</p>

<h2><a name="configuration"></a>Configuration</h2>

<h3><a name="aliases"></a>Aliases</h3>

<p>Using the <code>mx.aliases</code> property, you can specify your own hard-coded email aliases that precedence over the aliases in the user database. The <code>mx.aliases</code> property consists of a hash, where source address points to one or more destination addresses.</p>

<p>For example:</p>

<p><code>services/mx.json</code>:</p>

<pre><code>"mx": {
  "aliases": {
    "rook": "crow",
    "robin": "robin@bird.org",
    "flock": ["junco@bird.org", "robin", "crow"],
    "chickadee@avian.org": "chickadee@bird.org",
    "flicker": ["flicker@bird.org", "flicker@deliver.local"]
  }
}
</code></pre>

<p>This example demonstrates several of the features with <code>mx.aliases</code>:</p>

<ol>
<li>alias lists: by specifying an array of destination addresses, as in the case of &ldquo;flock&rdquo;, the single email will get copied to each address.</li>
<li>chained resolution: alias resolution will recursively continue until there are no more matching aliases. For example, &ldquo;flock&rdquo; is resolved to &ldquo;robin&rdquo;, which then gets resolved to &ldquo;<a href="&#x6d;&#97;&#105;&#x6c;&#x74;&#x6f;&#58;&#x72;&#111;&#98;&#x69;&#x6e;&#64;&#x62;&#105;&#114;&#100;&#x2e;&#x6f;&#114;&#x67;">&#x72;&#x6f;&#x62;&#105;&#x6e;&#x40;&#x62;&#x69;&#114;&#x64;&#46;&#x6f;&#114;&#x67;</a>&rdquo;.</li>
<li>virtual domains: by specifying the full domain, as in the case of &ldquo;<a href="&#109;&#x61;&#105;&#x6c;&#x74;&#111;&#58;&#x63;&#x68;&#x69;&#x63;&#x6b;&#x61;&#100;&#101;&#x65;&#x40;&#x61;&#x76;&#105;&#x61;&#110;&#x2e;&#x6f;&#x72;&#103;">&#99;&#x68;&#x69;&#99;&#107;&#x61;&#100;&#101;&#101;&#x40;&#x61;&#118;&#105;&#97;&#x6e;&#x2e;&#x6f;&#x72;&#x67;</a>&rdquo;, the alias will work for any domain you want. Of course, the MX record for that domain must point to appropriate MX servers, but otherwise you don&rsquo;t need to do any additional configuration.</li>
<li>local delivery: for testing purposes, it is often useful to copy all incoming mail for a particular address and send those copies to another address. You can do this by adding &ldquo;@deliver.local&rdquo; as one of the destination addresses. When &ldquo;@local.delivery&rdquo; is found, alias resolution stops and the mail is delivered to that username.</li>
</ol>


</div>
</div>
</body>
</html>