mirror of
				https://github.com/mail-in-a-box/mailinabox.git
				synced 2025-10-28 18:30:53 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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="https://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>
 |