]> git.ipfire.org Git - thirdparty/pdns.git/blame_incremental - docs/upgrading.rst
Merge pull request #11081 from nvaatstra/docker-unprivileged
[thirdparty/pdns.git] / docs / upgrading.rst
... / ...
CommitLineData
1Upgrade Notes
2=============
3
4Before proceeding, it is advised to check the release notes for your
5PowerDNS version, as specified in the name of the distribution file.
6
7Please upgrade to the PowerDNS Authoritative Server 4.0.0 from 3.4.2+.
8See the `3.X <https://doc.powerdns.com/3/authoritative/upgrading/>`__
9upgrade notes if your version is older than 3.4.2.
10
114.5.x to 4.6.0 or master
12------------------------
13
14Automatic conversion of ``@`` signs in SOA
15^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
16
17Before version 4.5.0, PowerDNS would automatically replace ``@`` in the SOA RNAME with ``.``, making it easy for users to enter their hostmaster email address without having to think about syntax.
18However, this feature interacts badly with handling of presigned zones.
19In version 4.5.0, this feature was accidentally broken in the implementation of the zone cache.
20In 4.6.0, this automatic conversion is fully removed.
21If you still have ``@`` signs in any SOA RNAMEs, 4.6.0 will serve those out literally.
22You can find any stray ``@`` signs by running ``pdnsutil check-all-zones``.
23
24New default NSEC3 parameters
25^^^^^^^^^^^^^^^^^^^^^^^^^^^^
26
27Following `draft-ietf-dnsop-nsec3-guidance (Guidance for NSEC3 parameter settings) <https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-nsec3-guidance>`__, the default NSEC3PARAM settings (see :ref:`dnssec-operational-nsec-modes-params`) in pdnsutil are now `1 0 0 -` instead of `1 0 1 ab`.
28
29SHA1 DSes
30^^^^^^^^^
31
32``pdnsutil show-zone`` and ``pdnsutil export-zone-ds`` no longer emit SHA1 DS records, unless ``--verbose`` is in use.
33
344.4.x to 4.5.0
35--------------
36
37Automatic conversion of ``@`` signs in SOA
38^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39
40Before version 4.5.0, PowerDNS would automatically replace ``@`` in the SOA RNAME with ``.``, making it easy for users to enter their hostmaster email address without having to think about syntax.
41In version 4.5.0, this feature was accidentally broken in the implementation of the zone cache, and the replacement would only happen if the zone cache was disabled.
42Note that in 4.6.0, this automatic conversion is fully removed.
43If you still have ``@`` signs in any SOA RNAMEs, 4.5.0 will serve those out literally if the zone cache is enabled.
44
45Record type changes
46^^^^^^^^^^^^^^^^^^^
47
48The in-database format of ``CSYNC``, ``IPSECKEY``, ``NID``, ``L32``, ``L64``, and ``LP`` records has changed from 'generic' format to its specialized format.
49
50Generation of the in-database format of ``SVCB`` and ``HTTPS`` received some important bug fixes.
51(For these two types, you can skip the :ref:`setting-upgrade-unknown-types` setting mentioned below, but we still recommend the re-transfer.)
52
53API users might notice that replacing records of the newly supported types leaves the old TYPExx records around, even if PowerDNS is not serving them.
54To fix this, enable :ref:`setting-upgrade-unknown-types` and replace the records; this will then delete those TYPExx records.
55Then, disable the setting again, because it has a serious performance impact on API operations.
56
57On secondaries, it is recommended to re-transfer, using ``pdns_control retrieve ZONE``, with :ref:`setting-upgrade-unknown-types` enabled, all zones that have records of those types, or ``TYPExx``, for numbers 45 and 62.
58Leave the setting on until all zones have been re-transferred.
59
60Changed options
61^^^^^^^^^^^^^^^
62
63Renamed options
64~~~~~~~~~~~~~~~
65
66Various settings have been renamed.
67Their old names still work in 4.5.x, but will be removed in the release after it.
68
69* :ref:`setting-allow-unsigned-supermaster` is now :ref:`setting-allow-unsigned-autoprimary`
70* :ref:`setting-master` is now :ref:`setting-primary`
71* :ref:`setting-slave-cycle-interval` is now :ref:`setting-xfr-cycle-interval`
72* :ref:`setting-slave-renotify` is now :ref:`setting-secondary-do-renotify`
73* :ref:`setting-slave` is now :ref:`setting-secondary`
74* :ref:`setting-superslave` is now :ref:`setting-autosecondary`
75* :ref:`setting-domain-metadata-cache-ttl` is now :ref:`setting-zone-metadata-cache-ttl`
76
77Changed defaults
78~~~~~~~~~~~~~~~~
79
80- The default value of the :ref:`setting-consistent-backends` option has been changed from ``no`` to ``yes``.
81- The default value of the :ref:`setting-max-nsec3-iterations` option has been changed from ``500`` to ``100``.
82- The default value of the ``timeout`` parameter for :func:`ifportup` and :func:`ifurlup` functions has been changed from ``1`` to ``2`` seconds.
83- The default value of the new :ref:`setting-zone-cache-refresh-interval` option is ``300``.
84
85Zone cache
86~~~~~~~~~~
87
88Version 4.5 introduces the zone cache.
89The default refresh interval (:ref:`setting-zone-cache-refresh-interval`) is 300, meaning that zones newly added to your backend may need a few minutes to appear.
90However, zones added using the API should not notice a delay.
91
92If your backend is dynamic in what zones it does or does not offer, and thus cannot easily provide a complete list of zones every few minutes, set the interval to 0 to disable the feature.
93
94Removed options
95~~~~~~~~~~~~~~~
96- :ref:`setting-local-ipv6` has been removed. IPv4 and IPv6 listen addresses should now be set with :ref:`setting-local-address`.
97- :ref:`setting-query-local-address6` has been removed. IPv4 and IPv6 addresses used for sending queries should now be set with :ref:`setting-query-local-address`.
98
99
1004.3.x to 4.4.0
101--------------
102
103Latency calculation changes
104^^^^^^^^^^^^^^^^^^^^^^^^^^^
105
106It turned out that average latency calculations in earlier versions used integers instead of floating point variables, which led to the throwing away of any data points between 'the current average' and 1000ms above it, instead of having those data points affecting the average.
107In 4.3.2 and 4.4.0, we `started using floating point variables for this <https://github.com/PowerDNS/pdns/pull/9768/files>`__, which means the latency calculation is accurate now.
108Usually, this means you will see higher latency numbers after upgrading.
109
110MySQL character set detection
111^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
112
113Before 4.4.0, the gmysql backend told the MySQL (or MariaDB) client libraries to automatically detect the client character set and collation, based on the environment locale.
114(Look for 'autodetect' in https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html to know more).
115On some systems, this autodetection makes choices that are incompatible with MySQL Server 8 defaults.
116On all systems, this autodetection can make choices that vary depending on how PowerDNS is started.
117In other words, the autodetection provides unpredictable results.
118
119In 4.4.0, the autodetection has been removed.
120The MySQL/MariaDB client lib will now use its default settings, unless overridden in ``my.cnf``, for example::
121
122 [client]
123 default-character-set = latin1
124
125If you have trouble connecting to your database with 4.4.0 or up, you can override the character set in ``my.cnf``.
126
127Before upgrading, please check your database for any non-ASCII content.
128The interpretation of the non-ASCII bytes in those fields might change because of a different charset suddenly being used.
129
130Record type changes
131^^^^^^^^^^^^^^^^^^^
132
133The in-database format of the ``SVCB``, ``HTTPS`` and ``APL`` records has changed from 'generic' format to its specialized format.
134
135API users might notice that replacing records of these types leaves the old TYPExx records around, even if PowerDNS is not serving them.
136To fix this, enable :ref:`setting-upgrade-unknown-types` and replace the records; this will then delete those TYPExx records.
137Then, disable the setting again, because it has a serious performance impact on API operations.
138
139On secondaries, it is recommended to re-transfer, using ``pdns_control retrieve ZONE``, with :ref:`setting-upgrade-unknown-types` enabled, all zones that have records of those types, or ``TYPExx``, for numbers 42, 64, 65.
140Leave the setting on until all zones have been re-transferred.
141
142PostgreSQL configuration escaping
143^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
144
145We now correctly quote/escape Postgres connection parameters.
146If you used single quotes (or some other form of escaping) around your Postgres password because it contained spaces, you now need to put your unmodified, unescaped, unquoted password in your configuration.
147
148New LMDB schema
149^^^^^^^^^^^^^^^
150
151An LMDB schema upgrade is mandatory.
152Please carefully read :ref:`setting-lmdb-schema-version` before upgrading to 4.4.x. The new schema version is version 3.
153
154Removed features
155^^^^^^^^^^^^^^^^
156
157SOA autofilling (i.e. allowing incomplete SOAs in the database) and the API ``set-ptr`` feature, that both were deprecated in earlier releases, have now been removed. Please update your configuration and remove the following settings:
158
159* :ref:`setting-default-soa-mail`
160* :ref:`setting-default-soa-name`
161* :ref:`setting-soa-expire-default`
162* :ref:`setting-soa-minimum-ttl`
163* :ref:`setting-soa-refresh-default`
164* :ref:`setting-soa-retry-default`
165
166Replace them with :ref:`setting-default-soa-content`, but be aware that this will only be used at zone creation time.
167Please run ``pdnsutil check-all-zones`` to check for incomplete SOAs.
168
169The :ref:`setting-do-ipv6-additional-processing` setting was removed. IPv6 additional processing now always happens when IPv4 additional processing happens.
170
1714.3.1 to 4.3.2
172--------------
173
174Latency calculation changes
175^^^^^^^^^^^^^^^^^^^^^^^^^^^
176
177It turned out that average latency calculations in earlier versions used integers instead of floating point variables, which led to the throwing away of any data points between 'the current average' and 1000ms above it, instead of having those data points affecting the average.
178In 4.3.2 and 4.4.0, we `started using floating point variables for this <https://github.com/PowerDNS/pdns/pull/9786/files>`__, which means the latency calculation is accurate now.
179Usually, this means you will see higher latency numbers after upgrading.
180
181To be very clear, there is no performance difference between 4.3.1 and 4.3.2.
182The only change is in the latency calculation, which was wrong in 4.3.1 and is correct in 4.3.2.
183This fix was backported to 4.3.2 from 4.4.0 so that users can fairly compare the performance of 4.3.2 and 4.4.0.
184
1854.3.0 to 4.3.1
186--------------
187
188On RHEL/CentOS 8, the gmysql backend now uses ``mariadb-connector-c`` instead of ``mysql-libs``.
189This change was made because the default MySQL implementation for RHEL8 is MariaDB, and MariaDB and MySQL cannot be installed in parallel due to conflicting RPM packages.
190The mariadb client lib will connect to your existing MySQL servers without trouble.
191
192Unknown record encoding (`RFC 3597 <https://tools.ietf.org/html/rfc3597>`__) has become more strict as a result of the fixes for :doc:`PowerDNS Security Advisory 2020-05 <../security-advisories/powerdns-advisory-2020-05>`. Please use ``pdnsutil check-all-zones`` to review your zone contents.
193
194The previous set of indexes for the gsqlite3 backend was found to be poor.
1954.3.1 ships a new schema, and a migration:
196
197.. literalinclude:: ../modules/gsqlite3backend/4.3.0_to_4.3.1_schema.sqlite3.sql
198
1994.2.x to 4.3.0
200--------------
201
202NSEC(3) TTL changed
203^^^^^^^^^^^^^^^^^^^
204
205NSEC(3) records now use the negative TTL, instead of the SOA minimum TTL.
206See :ref:`the DNSSEC TTL notes <dnssec-ttl-notes>` for more information.
207
208Lua Netmask class methods changed
209^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
210
211Netmask class methods ``isIpv4`` and ``isIpv6`` have been deprecated in Lua, use :func:`Netmask.isIPv4` and :func:`Netmask.isIPv6` instead. In the C++ API, these methods have been removed.
212
213``socket-dir`` changed
214^^^^^^^^^^^^^^^^^^^^^^
215The default :ref:`setting-socket-dir` has changed to include ``pdns`` in the path.
216It is now whatever is passed to ``--with-socketdir`` during configure (``/var/run`` by default) plus ``pdns``.
217The systemd unit-file is updated to reflect this change and systemd will automatically create the directory with the proper permissions.
218The packaged sysV init-script also creates this directory.
219For other operating systems, update your init-scripts accordingly.
220
221Systemd service and permissions
222^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
223The systemd service-file that is installed no longer uses the ``root`` user to start.
224It uses the user and group set with the ``--with-service-user`` and ``--with-service-group`` switches during configuration, "pdns" by default.
225This could mean that PowerDNS cannot read its configuration or zone-file data.
226It is recommended to recursively ``chown`` directories used by PowerDNS::
227
228 # For Debian-based systems
229 chown -R root:pdns /etc/powerdns
230 chown -R pdns:pdns /var/lib/powerdns
231
232 # For CentOS and RHEL based systems
233 chown -R root:pdns /etc/pdns
234 chown -R pdns:pdns /var/lib/pdns
235
236Packages provided on `the PowerDNS Repository <https://repo.powerdns.com>`__ will ``chown`` directories created by them accordingly in the post-installation steps.
237
238New settings
239^^^^^^^^^^^^
240
241- The :ref:`setting-axfr-fetch-timeout` setting has been added.
242 This setting controls how long an inbound AXFR may be idle in seconds.
243 Its default is 10
244- The :ref:`setting-max-generate-steps` setting has been added.
245 This sets the maximum number of steps that will be performed when loading a BIND zone with the ``$GENERATE`` directive.
246 The default is 0, which is unlimited.
247
248Deprecated settings
249^^^^^^^^^^^^^^^^^^^
250
251- :ref:`setting-local-ipv6` has been deprecated and will be removed in 4.5.0. Both IPv4 and IPv6 listen addresses can now be set with :ref:`setting-local-address`. The default for the latter has been changed to ``0.0.0.0, ::``.
252
253Changed defaults
254^^^^^^^^^^^^^^^^
255- :ref:`setting-local-address` now defaults to ``0.0.0.0, ::``.
256
257Schema changes
258^^^^^^^^^^^^^^
259- The new 'unpublished DNSSEC keys' feature comes with a mandatory schema change for all database backends (including BIND with a DNSSEC database).
260 See files named ``4.2.0_to_4.3.0_schema.X.sql`` for your database backend in our Git repo, tarball, or distro-specific documentation path.
261 For the LMDB backend, please review :ref:`setting-lmdb-schema-version`.
262- If you are upgrading from beta2 or rc2, AND ONLY THEN, please read `pull request #8975 <https://github.com/PowerDNS/pdns/pull/8975>`__ very carefully.
263
264Implicit 5->7 algorithm upgrades
265^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
266
267Since version 3.0 (the first version of the PowerDNS Authoritative Server that supported DNSSEC signing), we have automatically, silently, upgraded algorithm 5 (RSASHA1) keys to algorithm 7 (RSASHA1-NSEC3-SHA1) when the user enabled NSEC3. This has been a source of confusion, and because of that, we introduced warnings for users of this feature in 4.0 and 4.1. To see if you are affected, run ``pdnsutil check-all-zones`` from version 4.0 or up. In this release, the automatic upgrade is gone, and affected zones will break if no action is taken.
268
269.. _ixfr-in-corruption-4.3.0:
270
271IXFR-in corruption
272^^^^^^^^^^^^^^^^^^
273
274A bug in PowerDNS versions before 4.2.2/4.3.0 would cause wrong deletion or addition of records if IXFR deltas came in very quickly (within the query cache timeout, which defaults to 20/60 seconds).
275If you have zones which use inbound IXFR (in other words, the ``IXFR`` metadata item for that zone is set to ``1``), we strongly suggest triggering a completely fresh transfer.
276You could accomplish that by deleting all records in the zone with an SQL query and waiting for a fresh transfer, or (1) disabling IXFR (2) forcing a fresh transfer using ``pdns_control retrieve example.com`` (3) enabling IXFR again.
277
2784.2.X to 4.2.3
279--------------
280
281Unknown record encoding (`RFC 3597 <https://tools.ietf.org/html/rfc3597>`__) has become more strict as a result of the fixes for :doc:`PowerDNS Security Advisory 2020-05 <../security-advisories/powerdns-advisory-2020-05>`. Please use ``pdnsutil check-all-zones`` to review your zone contents.
282
2834.X.X to 4.2.2
284--------------
285
286.. _ixfr-in-corruption-4.2.2:
287
288IXFR-in corruption
289^^^^^^^^^^^^^^^^^^
290
291A bug in PowerDNS versions before 4.2.2/4.3.0 would cause wrong deletion or addition of records if IXFR deltas came in very quickly (within the query cache timeout, which defaults to 20/60 seconds).
292If you have zones which use inbound IXFR (in other words, the ``IXFR`` metadata item for that zone is set to ``1``), we strongly suggest triggering a completely fresh transfer.
293You could accomplish that by deleting all records in the zone with an SQL query and waiting for a fresh transfer, or (1) disabling IXFR (2) forcing a fresh transfer using ``pdns_control retrieve example.com`` (3) enabling IXFR again.
294
295
2964.1.X to 4.2.0
297--------------
298
299- Superslave operation is no longer enabled by default, use :ref:`setting-superslave` to enable. This setting was called ``supermaster`` in some 4.2.0 prereleases.
300- The gsqlite3 backend, and the DNSSEC database for the BIND backend, have a new journal-mode setting. This setting defaults to `WAL <https://www.sqlite.org/wal.html>`_; older versions of PowerDNS did not set the journal mode, which means they used the SQLite default of DELETE.
301- Autoserial support has been removed. The ``change_date`` column has been removed from the ``records`` table in all gsql backends, but leaving it in is harmless.
302- The :doc:`Generic PostgreSQL backend <backends/generic-postgresql>` schema has changed: the ``notified_serial`` column type in the ``domains`` table has been changed from ``INT DEFAULT NULL`` to ``BIGINT DEFAULT NULL``: ``ALTER TABLE domains ALTER notified_serial TYPE bigint USING CASE WHEN notified_serial >= 0 THEN notified_serial::bigint END;``
303- Rectification after API changes is now default (:ref:`setting-default-api-rectify`). If you do mutations in large zones, you may notice a slowdown.
304
3054.1.X to 4.1.14
306---------------
307
308Unknown record encoding (`RFC 3597 <https://tools.ietf.org/html/rfc3597>`__) has become more strict as a result of the fixes for :doc:`PowerDNS Security Advisory 2020-05 <../security-advisories/powerdns-advisory-2020-05>`. Please use ``pdnsutil check-all-zones`` to review your zone contents.
309
3104.1.0 to 4.1.1
311--------------
312
313- The :doc:`Generic MySQL backend <backends/generic-mysql>` schema has
314 changed: the ``notified_serial`` column default in the ``domains``
315 table has been changed from ``INT DEFAULT NULL`` to ``INT UNSIGNED
316 DEFAULT NULL``:
317
318 - ``ALTER TABLE domains MODIFY notified_serial INT UNSIGNED DEFAULT NULL;``
319
3204.0.X to 4.1.0
321--------------
322
323- Recursion has been removed, see the :doc:`dedicated migration guide <guides/recursion>`.
324- ALIAS record expansion is disabled by default, use :ref:`setting-expand-alias` to enable.
325- *Your LDAP schema might need to be updated*, because new record types
326 have been added (see below) and the ``dNSDomain2`` type has been
327 changed.
328- The :doc:`LDAP Backend <backends/ldap>` now supports additional Record types
329
330 - NSEC3
331 - NSEC3PARAM
332 - TLSA
333 - CDS
334 - CDNSKEY
335 - OPENPGPKEY
336 - TKEY
337 - URI
338 - CAA
339
340Changed options
341^^^^^^^^^^^^^^^
342
343- ``experimental-lua-policy-script`` option and the feature itself have
344 been completely dropped. We invite you to use `PowerDNS
345 dnsdist <https://dnsdist.org>`_ instead.
346
347- As recursion has been removed from the Authoritative Server, the
348 ``allow-recursion``, ``recursive-cache-ttl`` and ``recursor`` options have
349 been removed as well.
350
351- ``default-ksk-algorithms`` has been renamed to :ref:`setting-default-ksk-algorithm`
352 and only supports a single algorithm name now.
353
354- ``default-zsk-algorithms`` has been renamed to :ref:`setting-default-zsk-algorithm`
355 and only supports a single algorithm name now.
356
357Changed defaults
358~~~~~~~~~~~~~~~~
359
360- The default value of :ref:`setting-webserver-allow-from` has been changed from ``0.0.0.0, ::/0`` to ``127.0.0.1, ::1``.
361
362Other changes
363^^^^^^^^^^^^^
364
365The ``--with-pgsql``, ``--with-pgsql-libs``, ``--with-pgsql-includes``
366and ``--with-pgsql-config`` ``configure`` options have been deprecated.
367``configure`` now attempts to find the Postgresql client libraries via
368``pkg-config``, falling back to detecting ``pg_config``. Use
369``--with-pg-config`` to specify a path to a non-default ``pg_config`` if
370you have Postgresql installed in a non-default location.
371
372The ``--with-libsodium`` configure flag has changed from 'no' to 'auto'.
373This means that if libsodium and its development header are installed, it will be linked in.
374
375The improved :doc:`LDAP Backend <backends/ldap>` backend now requires Kerberos headers to be installed.
376Specifically, it needs `krb5.h` to be installed.
377
3784.0.X to 4.0.2
379--------------
380
381Changed options
382^^^^^^^^^^^^^^^
383
384Changed defaults
385~~~~~~~~~~~~~~~~
386
387- :ref:`setting-any-to-tcp` changed from ``no`` to ``yes``
388
3893.4.X to 4.0.0
390--------------
391
392Database changes
393^^^^^^^^^^^^^^^^
394
395No changes have been made to the database schema. However, several
396superfluous queries have been dropped from the SQL backend. Furthermore,
397the generic SQL backends switched to prepared statements. If you use a
398non-standard SQL schema, please review the new defaults.
399
400- ``insert-ent-query``, ``insert-empty-non-terminal-query``,
401 ``insert-ent-order-query`` have been replaced by one query named
402 ``insert-empty-non-terminal-order-query``
403- ``insert-record-order-query`` has been dropped,
404 ``insert-record-query`` now sets the ordername (or NULL)
405- ``insert-slave-query`` has been dropped, ``insert-zone-query`` now
406 sets the type of zone
407
408Changed options
409^^^^^^^^^^^^^^^
410
411Several options have been removed or renamed, for the full overview of
412all options, see :doc:`settings`.
413
414Renamed options
415~~~~~~~~~~~~~~~
416
417The following options have been renamed:
418
419- ``experimental-json-interface`` ==> :ref:`setting-api`
420- ``experimental-api-readonly`` ==> ``api-readonly``
421- ``experimental-api-key`` ==> :ref:`setting-api-key`
422- ``experimental-dname-processing`` ==> :ref:`setting-dname-processing`
423- ``experimental-dnsupdate`` ==> :ref:`setting-dnsupdate`
424- ``allow-dns-update-from`` ==> :ref:`setting-allow-dnsupdate-from`
425- ``forward-dnsupdates`` ==> :ref:`setting-forward-dnsupdate`
426
427Changed defaults
428~~~~~~~~~~~~~~~~
429
430- :ref:`setting-default-ksk-algorithms`
431 changed from rsasha256 to ecdsa256
432- :ref:`setting-default-zsk-algorithms`
433 changed from rsasha256 to empty
434
435Removed options
436~~~~~~~~~~~~~~~
437
438The following options are removed:
439
440- ``pipebackend-abi-version``, it now a setting per-pipe backend.
441- ``strict-rfc-axfrs``
442- ``send-root-referral``
443
444API
445^^^
446
447The API path has changed to ``/api/v1``.
448
449Incompatible change: ``SOA-EDIT-API`` now follows ``SOA-EDIT-DNSUPDATE``
450instead of ``SOA-EDIT`` (incl. the fact that it now has a default value
451of ``DEFAULT``). You must update your existing ``SOA-EDIT-API`` metadata
452(set ``SOA-EDIT`` to your previous ``SOA-EDIT-API`` value, and
453``SOA-EDIT-API`` to ``SOA-EDIT`` to keep the old behaviour).
454
455Resource Record Changes
456^^^^^^^^^^^^^^^^^^^^^^^
457
458Since PowerDNS 4.0.0 the CAA resource record (type 257) is supported.
459Before PowerDNS 4.0.0 type 257 was used for a proprietary MBOXFW
460resource record, which was removed from PowerDNS 4.0. Hence, if you used
461CAA records with 3.4.x (stored in the DB with wrong type=MBOXFW but
462worked fine) and upgrade to 4.0, PowerDNS will fail to parse this
463records and will throw an exception on all queries for a label with
464MBOXFW records. Thus, make sure to clean up the records in the DB.
465
466In version 3.X, the PowerDNS Authoritative Server silently ignored records that
467have a 'priority' field (like MX or SRV), but where one was not in the database.
468In 4.X, :doc:`pdnsutil check-zone <manpages/pdnsutil.1>` will complain about this.