mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2024-11-22 02:17:26 +00:00
116 lines
4.0 KiB
HTML
116 lines
4.0 KiB
HTML
<style>
|
|
#external_dns_settings .heading td {
|
|
font-weight: bold;
|
|
font-size: 120%;
|
|
padding-top: 1.5em;
|
|
}
|
|
#external_dns_settings .heading.first td {
|
|
border-top: none;
|
|
padding-top: 0;
|
|
}
|
|
#external_dns_settings .values td {
|
|
border: 0;
|
|
padding-top: .75em;
|
|
padding-bottom: 0;
|
|
max-width: 50vw;
|
|
word-wrap: break-word;
|
|
}
|
|
#external_dns_settings .explanation td {
|
|
border: 0;
|
|
padding-top: .5em;
|
|
padding-bottom: .75em;
|
|
font-style: italic;
|
|
font-size: 95%;
|
|
color: #777;
|
|
}
|
|
</style>
|
|
|
|
<h2>DNS (Advanced)</h2>
|
|
|
|
<p class="text-danger">Custom and external DNS are for advanced configurations.</p>
|
|
|
|
<h3>Custom DNS</h3>
|
|
|
|
<p>It is possible to set custom DNS records on domains hosted here. For instance, you can create your own dynamic DNS service. To do so, you will need to call your box’s DNS API.</p>
|
|
|
|
<h4>The HTTP POST request</h4>
|
|
|
|
<p>Send a POST request like this:</p>
|
|
|
|
<pre>curl -d "" --user {email}:{password} https://{{hostname}}/admin/dns/set/{qname}[/{rtype}[/{value}]]</pre>
|
|
|
|
<table class="table">
|
|
<thead><th>Parameter</th> <th>Value</th></thead>
|
|
<tr><td>email</td> <td>The email address of any administrative user here.</td></tr>
|
|
<tr><td>password</td> <td>That user’s password.</td></tr>
|
|
<tr><td>qname</td> <td>The fully qualified domain name for the record you are trying to set.</td></tr>
|
|
<tr><td>rtype</td> <td>Optional. The resource type: <code>A</code> (an IPv4 address; the default), <code>AAAA</code> (an IPv6 address), <code>TXT</code> (a text string), or <code>CNAME</code> (an alias, which is a fully qualified domain name).</td></tr>
|
|
<tr><td>value</td> <td>Optional-ish. The new record’s value. If not provided, the IPv4 address of the remote host is used — this is handy for dynamic DNS! You can also set this in a POST parameter. To delete a record, pass “value=” in the POST body.</td></tr>
|
|
</table>
|
|
|
|
<h4>Examples:</h4>
|
|
|
|
<pre># sets laptop.mydomain.com to point to the IP address of the machine you are executing curl on
|
|
curl -d "" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/laptop.mydomain.com
|
|
|
|
# sets an alias
|
|
curl -d "" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/foo.mydomain.com/cname/bar.mydomain.com
|
|
|
|
# sets a TXT record
|
|
curl -d "value=something%20here" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/foo.mydomain.com/txt
|
|
|
|
# clears the TXT record
|
|
curl -d "value=" --user me@mydomain.com:###### https://{{hostname}}/admin/dns/set/foo.mydomain.com/txt</pre>
|
|
|
|
|
|
<h3>External DNS</h3>
|
|
|
|
<p>Although your box is configured to serve its own DNS, it is possible to host your DNS elsewhere.</p>
|
|
|
|
<p>If you do so, you are responsible for keeping your DNS entries up to date! If you previously enabled DNSSEC on your domain name by setting a DS record at your registrar, you will likely have to turn it off before changing nameservers.</p>
|
|
|
|
<p>Enter the following DNS entries at your DNS provider:</p>
|
|
|
|
<table id="external_dns_settings" class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>QName</th>
|
|
<th>Type</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
|
|
<script>
|
|
function show_system_dns() {
|
|
$('#external_dns_settings tbody').html("<tr><td colspan='2' class='text-muted'>Loading...</td></tr>")
|
|
api(
|
|
"/dns/dump",
|
|
"GET",
|
|
{ },
|
|
function(zones) {
|
|
$('#external_dns_settings tbody').html("");
|
|
for (var j = 0; j < zones.length; j++) {
|
|
var h = $("<tr class='heading'><td colspan='3'></td></tr>");
|
|
h.find("td").text(zones[j][0]);
|
|
$('#external_dns_settings tbody').append(h);
|
|
|
|
var r = zones[j][1];
|
|
for (var i = 0; i < r.length; i++) {
|
|
var n = $("<tr class='values'><td class='qname'/><td class='rtype'/><td class='value'/></tr>");
|
|
n.find('.qname').text(r[i].qname);
|
|
n.find('.rtype').text(r[i].rtype);
|
|
n.find('.value').text(r[i].value);
|
|
$('#external_dns_settings tbody').append(n);
|
|
|
|
var n = $("<tr class='explanation'><td colspan='3'/></tr>");
|
|
n.find('td').text(r[i].explanation);
|
|
$('#external_dns_settings tbody').append(n);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
</script>
|