mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2024-12-27 08:07:04 +00:00
b85b86e6de
Co-authored-by: Joshua Tauberer <jt@occams.info>
128 lines
4.0 KiB
HTML
128 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;
|
|
}
|
|
#external_dns_settings .value {
|
|
word-break: break-all;
|
|
}
|
|
#external_dns_settings .explanation td {
|
|
border: 0;
|
|
padding-top: .5em;
|
|
padding-bottom: .75em;
|
|
font-style: italic;
|
|
font-size: 95%;
|
|
color: #777;
|
|
}
|
|
</style>
|
|
|
|
<h2>External DNS</h2>
|
|
|
|
<p class="text-warning">This is an advanced configuration page.</p>
|
|
|
|
<p>Although your box is configured to serve its own DNS, it is possible to host your DNS elsewhere — such as in the DNS control panel provided by your domain name registrar or virtual cloud provider — by copying the DNS zone information shown in the table below into your external DNS server’s control panel.</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 class="alert" role="alert">
|
|
<span class="glyphicon glyphicon-info-sign"></span>
|
|
You may encounter zone file errors when attempting to create a TXT record with a long string.
|
|
<a href="http://tools.ietf.org/html/rfc4408#section-3.1.3">RFC 4408</a> states a TXT record is allowed to contain multiple strings, and this technique can be used to construct records that would exceed the 255-byte maximum length.
|
|
You may need to adopt this technique when adding DomainKeys. Use a tool like <code>named-checkzone</code> to validate your zone file.
|
|
</p>
|
|
|
|
<h3>Download zonefile</h3>
|
|
<p>You can download your zonefiles here or use the table of records below.</p>
|
|
<form class="form-inline" role="form" onsubmit="do_download_zonefile(); return false;">
|
|
<div class="form-group">
|
|
<div class="form-group">
|
|
<label for="downloadZonefile" class="control-label sr-only">Zone</label>
|
|
<select id="downloadZonefile" class="form-control" style="width: auto"> </select>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary">Download</button>
|
|
</div>
|
|
</form>
|
|
|
|
<h3>Records</h3>
|
|
|
|
<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_external_dns() {
|
|
api(
|
|
"/dns/zones",
|
|
"GET",
|
|
{ },
|
|
function(data) {
|
|
var zones = $('#downloadZonefile');
|
|
zones.text('');
|
|
for (var j = 0; j < data.length; j++) {
|
|
zones.append($('<option/>').text(data[j]));
|
|
}
|
|
});
|
|
|
|
$('#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);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
function do_download_zonefile() {
|
|
var zone = $('#downloadZonefile').val();
|
|
|
|
api(
|
|
"/dns/zonefile/"+ zone,
|
|
"GET",
|
|
{},
|
|
function(data) {
|
|
show_modal_error("Download Zonefile", $("<pre/>").text(data));
|
|
},
|
|
function(err) {
|
|
show_modal_error("Download Zonefile (Error)", $("<pre/>").text(err));
|
|
});
|
|
}
|
|
</script>
|