diff --git a/server/conf/bind_pri.domain.master b/server/conf/bind_pri.domain.master
index ed395064af5490be0a11aafeac61a67a9ef99d2e..fb867901dc2848506db0790c5ce076e92d2326ab 100644
--- a/server/conf/bind_pri.domain.master
+++ b/server/conf/bind_pri.domain.master
@@ -20,6 +20,9 @@ $TTL        {tmpl_var name='ttl'}
 <tmpl_if name="type" op='==' value='ALIAS'>
 {tmpl_var name='name'} {tmpl_var name='ttl'}      CNAME        {tmpl_var name='data'}
 </tmpl_if>
+<tmpl_if name="type" op='==' value='CAA'>
+{tmpl_var name='name'} {tmpl_var name='ttl'}      CAA       {tmpl_var name='data'}
+</tmpl_if>
 <tmpl_if name="type" op='==' value='CNAME'>
 {tmpl_var name='name'} {tmpl_var name='ttl'}      CNAME        {tmpl_var name='data'}
 </tmpl_if>
@@ -53,5 +56,9 @@ $TTL        {tmpl_var name='ttl'}
 <tmpl_if name="type" op='==' value='TXT'>
 {tmpl_var name='name'} {tmpl_var name='ttl'}      TXT        "{tmpl_var name='data'}"
 </tmpl_if>
+<tmpl_if name="type" op='==' value='TYPE257'>
+{tmpl_var name='name'} {tmpl_var name='ttl'}      TYPE257        {tmpl_var name='data'}
+</tmpl_if>
 </tmpl_loop>
 
+
diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php
index 23856f0c8661f3317f4beaa91f2fb20c92ac93c2..edf7b93d9f1ea62f8b314a62b73c77f15e5ca678 100644
--- a/server/plugins-available/bind_plugin.inc.php
+++ b/server/plugins-available/bind_plugin.inc.php
@@ -236,6 +236,17 @@ class bind_plugin {
 		//* load the server configuration options
 		$dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
 
+		//* Get the bind version
+		$bind_caa = false;
+        $bind = explode("\n", shell_exec('which named bind'));
+        $bind = reset($bind);
+        if(is_executable($bind)) {
+			exec($bind . ' -v 2>&1', $tmp);
+			$bind_caa = @(version_compare($tmp[0],"BIND 9.9.6", '>='))?true:false;
+			unset($tmp);
+		}
+		unset($bind);
+
 		//* Write the domain file
 		if(!empty($data['new']['id'])) {
 			$tpl = new tpl();
@@ -253,6 +264,19 @@ class bind_plugin {
 					if($records[$i]['type'] == 'TXT' && strlen($records[$i]['data']) > 255) {
 						$records[$i]['data'] = implode('" "',str_split( $records[$i]['data'], 255));
 					}
+					//* CAA-Records - Type257 for older bind-versions
+					if($records[$i]['type'] == 'CAA' && !$bind_caa) {
+						$records[$i]['type'] = 'TYPE257';
+						$temp = explode(' ', $records[$i]['data']);
+						unset($temp[0]);
+						$records[$i]['data'] = implode(' ', $temp);
+						$data_new = str_replace(array('"', ' '), '', $records[$i]['data']);
+						$hex = unpack('H*', $data_new);
+						$hex[1] = '0005'.strtoupper($hex[1]);
+						$length = strlen($hex[1])/2;
+						$data_new = "\# $length $hex[1]";
+						$records[$i]['data'] = $data_new;
+					}
 				}
 			}
 			$tpl->setLoop('zones', $records);