1 ChangeLog for Dean Strik's IPv6 patch for Postfix. The patch is based on
2 PLD's patch, which in turn seems to be based on KAME's. For more information:
4 http://www.ipnet6.org/postfix/
6 ---------------------------------------------------------------------
8 Version 1.25 Postfix release 2.1.3
10 Postfix snapshot 2.2-20040616
12 Bugfix: Misplaced myfree() caused a small memory leak. Reported
13 by Christian von Roques.
14 File: util/match_ops.c
16 Removed the colon (:) from the characters XFORWARD replaces by
17 a question mark (IPv6 addresses looked like 2001?610?1108?5010??1
18 in logging). Reported by Philipp Morger.
21 Version 1.24 Postfix release 2.1.1
22 Postfix release 2.0.20
23 Postfix snapshot 2.0.19-20040312
24 Postfix snapshot 2.2-20040504
26 Bugfix: Prefixlen non-null host portion validation (in CIDR maps
27 for example) yielded incorrect results sometimes because signed
28 arithmetic was used instead of unsigned.
29 File: util/match_ops.c
31 Patch correction: The TLS+IPv6 patch for Postfix 2.1.0 missed
32 the master.cf update (used for new installations). Added it
35 Version 1.23 Postfix release 2.1.0
36 Postfix release 2.0.20
37 Postfix snapshot 2.0.19-20040312
39 Patch fixes: Several code fixes to make the patch compile
40 and work correctly when compiled without IPv6 support.
42 Bugfix (Solaris only?): address family length was not updated
43 which could cause client hostname validation errors.
44 File: smtpd/smtpd_peer.c
46 Portability: added support for Darwin 7.3+. This may need
49 Cleanup: Restructure and redocument interface address
50 retrieval functions. (This reduced the number of preprocessor
51 statements from 99 to 93 ;)
52 File: util/inet_addr_local.c
54 Cleanup: make several explicit casts to have compilers shut
55 their pie holes about uninteresting things.
57 Version 1.22 Postfix release 2.0.19
58 Postfix snapshot 2.0.19-20040312
60 Feature: Support "inet_interfaces = IPv4:all" and
61 "inet_interfaces = IPv6:all", to restrict postfix to use
62 either IPv4-only or IPv6-only. A more complete implementation
63 will be part of a future patch. (Slightly modified) patch by
65 Files: util/interfaces_to_af.[ch], util/inet_addr_local.c,
66 global/own_inet_addr.c, global/wildcard_inet_addr.[ch],
69 Bugfix: In Postfix snapshots, a #define was misplaced with
70 the effect that IPv6 subnets were not included in auto-
71 generated $mynetworks (i.e., mynetworks not defined in main.cf,
72 when also mynetworks_style=subnet) on Linux 2.x systems.
73 File: utils/sys_defs.h
75 Version 1.21a Postfix snapshots 2.0.18-2004{0122,0205,0209}
78 TLS/snapshot version: Update TLS patch to 0.8.18-20040122.
79 Performed as a total repatch. 0.8.18 is cleaner with tls_*
80 variables if TLS is not actually compiled in.
82 Version 1.21 Postfix releases 2.0.18 - 2.0.19
83 Postfix snapshot 2.0.16-20031231
85 Bugfix: The SMTP client could fail to setup a connection,
86 erroring with a bogus "getaddrinfo(...): hostname nor servname
87 provided" warning, because the wrong address was selected.
88 File: smtp/smtp_connect.c
90 Safety: in dynamically growing data structures, update the
91 length info after (instead of before) updating the data size.
92 File: util/inet_addr_list.c
94 Version 1.20 Postfix release 2.0.16
95 Postfix snapshot 2.0.16-20031207
97 Bugfix: The SMTP client would abort when binding to specific
99 File: smtp/smtp_connect.c
101 Synchronisation/bugfix: LMTP source address binding is identical
102 to the SMTP source binding setup, avoiding the need for
103 lmtp_bind_address(6) if inet_interfaces is set to a single
104 host for an address family.
105 File: lmtp/lmtp_connect.c
107 Version 1.19 Postfix release 2.0.16
108 Postfix snapshot 2.0.16-20031207
110 Bugfix: Synchronisation of TLS patches in snapshots of 1.18[ab]
111 was not complete, causing a crash of smtpd if used with the new
115 Bugfix: SMTP source address binding based on a single hostname
116 in inet_interfaces did not work since the code counted IPv4 and
117 IPv6 addresses instead of only the used address family. Fixed,
118 thereby no longer requiring exact specification of
119 smtp_bind_address(6) in this case.
120 File: smtp/smtp_connect.c
122 Bugfix: The QMQP sink server did not compile correctly. This
123 program, part of smtpstone tools, is not compiled or installed
125 File: smtpstone/qmqp-sink.c
127 Bugfix: NI_WITHSCOPEID was not correctly defined everywhere,
128 which could result in EAI_BADFLAGS. Changed location of
129 definition to correct it.
130 Files: util/sys_defs.h, util/inet_addr_list.h
132 Version 1.18b Postfix snapshot 2.0.16-20030921
134 IPv6 support: Added IPv6-enabled code to the new snapshot
135 check_*_{ns,mx}_access restrictions.
136 File: smtpd/smtpd_check.c
138 Version 1.18a Postfix release 2.0.16
140 Update (TLS patches): Updated Lutz Jaenicke's TLS patch to
141 version 0.8.16. See pfixtls/ChangeLog for details.
142 Diff contributed by Tuomo Soini.
144 The TLS+IPv6 patch now contains the original TLS patch
145 documentation from Lutz Jaenicke.
147 Version 1.18 Postfix releases 2.0.14 - 2.0.15
148 Postfix snapshot 2.0.14-20030812
150 Bugfix: Perform actual hostname verification in the SMTP
151 and QMTP servers. This was never supported in the IPv6
152 patch. Reported by Wolfgang S. Rupprecht.
153 Files: smtpd/smtpd_peer.c, qmqpd/qmqpd_peer.c
155 IPv6 address ranges using address/prefixlength (e.g. in
156 mynetworks and access maps) should be written as
157 [ipv6:addr:ess]/plen (e.g. [fec0:10:20::]/48). The old
158 supported syntax, [ipv6:addr:ess/plen] is deprecated and
159 support will be removed in a later version.
160 Thanks to Dr. Peter Bieringer and Pekka Savola for discussion.
161 Files: util/match_ops.c, global/mynetworks.c
163 Explicitly prefer IPv6 over IPv4 addresses when delivering
164 to a host when MX lookups are disabled when SMTP address
165 randomization is on (default).
166 File: smtp/smtp_addr.c
168 Compliance: write IPv6 address literals in mail headers
169 as [IPv6:addr] instead of [addr] as per RFC 2821:4.1.3
170 tagging requirement, for example [IPv6:fec0:10:20::1].
171 Pointed out by Dr. Peter Bieringer.
172 Files: smtpd/smtpd{,_peer,_state}.c, smtpd/smtpd.h
174 Version 1.17 Postfix release 2.0.13, 2.0.14
175 Postfix snapshot 2.0.13-20030706, 2.0.14-20030812
177 Bugfix: Two memory allocation/deallocation bugs were
178 introduced in patch 1.16. The impact of these bugs could
179 be 'arbitrary' memory corruption.
180 File: util/match_ops.c
182 Version 1.16 Postfix release 2.0.13
183 Postfix snapshot 2.0.13-20030706
185 Cleanup: rewrote match_ops.c. This rewrite is partly based on
186 patch by Takahiro Igarashi. The rewrite enables some better
187 handling of scoped addresses, and drops all GPL code from the
188 patch, easying license considerations. Also, allowed for
189 use of this code by the CIDR maps.
190 Files: util/match_ops.[ch]
192 Bugfix: correctly relay for scoped unicast addresses when
193 applicable. Until now, while Postfix was able to recognize
194 scoped addresses, it was not able to see e.g. fe80::10%fxp0
195 as local in mynetworks validation. KAME-only code.
196 (I've never heard of people using scoped addresses (think
197 link-local addresses) for mail relaying though...)
198 Files: util/inet_addr_list.[ch]
200 Feature (snapshot only): rewrote CIDR maps code to support
201 IPv6 addresses, using new match_ops code. Allow the use
202 of [::/0] since it allows one to easily disable further
203 checks for IPv6 addresses.
204 File: util/dict_cidr.c
206 Consistency: require IPv6 addresses in inet_interfaces to
207 be enclosed in square brackets.
208 File: util/inet_addr_host.c
210 Bugfix: (Linux2-only) A #define was misspelled. This could
211 lead to Postfix being unable to read the system's local IPv6
212 addresses (e.g. when using inet_interfaces).
213 Spotted by Jochen Friedrich.
214 File: util/sys_defs.h
216 Cleanup: require non-null host portion in CIDR /
217 prefixlength notations for IPv6 (was IPv4-only).
219 Version 1.15a Postfix release 2.0.13
221 Update (TLS patches): Updated Lutz Jaenicke's TLS patch
222 to version 0.8.15. This version introduces new options
223 for managing SASL mechanisms. More information at:
224 http://www.aet.tu-cottbus.de/personen/jaenicke/pfixtls/
225 Diff contributed by Tuomo Soini.
227 Version 1.15 Postfix release 2.0.12, 2.0.13
228 Postfix snapshot 2.0.12-20030621
230 Bugfix (TLS-snapshots only): a change in Postfix snapshot
231 2.0.11-20030609 broke initialisation of TLS in smtpd,
232 causing TLS to both be unadvertised and unaccepted.
233 This was fixed again by reordering initialisation.
236 Update (TLS patches): Updated Lutz Jaenicke's TLS patch
237 to version 0.8.14. This version introduces a few fixes and
238 uses USE_SSL instead of HAS_SSL. More information at:
239 http://www.aet.tu-cottbus.de/personen/jaenicke/pfixtls/
240 Diff contributed by Tuomo Soini.
242 Bugfix (Postfix releases only - this was already added to
243 the snapshots in patch 1.14). KAME derived systems only.
244 Correctly decode scoped addresses, including network
245 interface specifiers.
246 File: util/inet_addr_local.c
248 Version 1.14 Postfix releases 2.0.9, 2.0.10, 2.0.11, 2.0.12
249 Postfix snapshots 2.0.9-20030424, 2.0.10-20030521,
250 2.0.11-20030609, 2.0.12-20030611
252 Patch change: made the patch available as an IPv6-only
253 patch (i.e., without the TLS code). This on popular
254 request by users and packagers.
255 A TLS+IPv6 version is still available of course.
257 Bugfix: correctly decode scoped addresses from now on
258 (KAME derived systems only). I think the original code
259 was written by Itojun, so I'm rather puzzled that it
261 File: util/inet_addr_local.c
263 Bugfix/portability: Recent KAME snapshots return both
264 TCP and SCTP address information on getaddrinfo() if
265 no protocol was specified. This causes the socket counts
266 to be wrong, confusing child processes.
267 Merged patch by JINMEI Tatuya of KAME to fix this.
268 Files: master/master.h, master/master_{ent,conf}.[ch],
271 Documentation: added an IPV6_README file to the patch.
272 This file contains the primary documentation. Also,
273 added a sample-ipv6.cf to describe the (currently few)
274 IPv6 related main.cf parameters.
276 Bugfix: the netmask structures for the *unsupported*
277 platforms (boldly assume /64) were added to the wrong
278 list (addresses instead of masks). This bug did not affect
279 any supported platform though.
280 File: util/inet_addr_local.c
282 Portability: added support for HP/Compaq Tru64Unix V5.1
283 and later. (compiled with CompaqCC only).
284 Thanks to Sten Spans for providing root access to an
285 IPv6-connected Tru64 testing machine.
287 Version 1.13 Postfix releases 2.0.4 - 2.0.9
288 Postfix snapshots 2.0.3-20030126 - 2.0.7-20030319
290 Bugfix: Due to a missing storage pointer, DNS lookup
291 results in the permit_mx_backups code were not processed,
292 and smtpd would likely crash.
293 Thanks to Wouter de Jong for reporting the crashes.
294 File: smtpd/smtpd_check.c
296 Incompatible change: The addresses given to the parameters
297 smtp_bind_address6 and lmtp_bind_address6 now need to be
298 enclosed in square brackets for consistency.
299 Files: [ls]mtp/[ls]mtp_connect.c
301 Version 1.12 Postfix releases 2.0.2, 2.0.3
302 Postfix snapshots 2.0.2-20030115, 2.0.3-20030126
304 Bugfix/workaround (Solaris): A simplified comparison
305 function for Solaris' qsort() function, would result
306 in corruption of network addresses in the SMTP client.
307 Fixed. Reported with possible fix by Edvard Tuinder.
308 File: smtp/smtp_addr.c
310 Version 1.11 Postfix releases 2.0.0.x, 2.0.1, 2.0.2
311 Postfix snapshots 2.0.0-20030105, 2.0.1-20030112
314 Bugfix (Solaris): Properly initialize lifconf structure
315 when requesting host interface addresses. If you get
316 warnings about SIOCGLIFCONF with earlier versions,
318 File: util/inet_addr_local.c
320 Patch fix: fixed compilation errors in case the patch is
321 applied but built without IPv6 support (i.e., on unsupported
324 Version 1.10 Postfix snapshots 1.1.12-200212{19,21}
325 Postfix releases 2.0.0, 2.0.0.{1,2}
326 Postfix snapshots 2.0.0-20021223 - 2.0.0-20030101
328 'Bugfix': don't show spurious warnings on Linux systems
329 about missing /proc/net/if_inet6 unless verbose mode
331 File: util/inet_addr_local.c
333 Bugfix: If unable to create a socket for a specific adress
334 in the SMTP client (e.g., when trying to create an IPv6
335 connection while the local host has no configured IPv6
336 addresses), then stop the attempt.
337 File: smtp/smtp_connect.c
339 Small bugfix: never query DNS for <localpart@[domain.tld]>.
340 This syntax now correctly generates an error immediately.
341 File: global/resolve_local.c
343 Updated TLS patch to 0.8.12-1.1.12-20021219-0.9.6h, fixing
344 a bug with "sendmail -bs".
346 Version 1.9 Postfix version 1.1.11-20021115
347 Postfix version 1.1.12-2002{1124,1209-1213}
349 Bugfix: with getifaddrs() code (*BSD, linux-USAGI), IPv4
350 netmasks were set to /32 effectively. Work around broken
351 netmask data structures (*BSD only perhaps).
353 Bugfix: same data corruption in another place created
354 entirely wrong IPv4 netmasks. Work around broken
355 SIOCGIFNETMASK structure.
357 New code was added for correct IPv6 netmasks. The original
358 code did not contain IPv6 netmask support at all!
359 For Solaris, use SIOCGLIF*; Linux: /proc/net/if_inet6.
360 Getifaddrs() support is used otherwise. This should cover
361 all supported systems. Other systems also work, prefix
362 length is always set to /64 then.
364 Since there are no classes (context: Class A, class B etc
365 networks) with IPv6, default to IPv6 subnet style if the
366 mynetworks style is 'class'. I recommend against this style
369 Added support to display IPv6 nets mynetworks output.
371 Version 1.8 Postfix version 1.1.11-200211{01,15}
373 An earlier author of the patch made a typo in the GAI_STRERROR()
374 macro, resulting in bogus error messages when checking for
377 IPv4-mapped addresses in the smtpd are converted to true IPv4
378 addresses just after the connection has been made. This means
379 that all IPv4-mapped addresses are now logged as true IPv4
380 addresses. Hence beside RBL checks, also access maps now treat
381 IPv4-mapped addresses as native IPv4. Note that ::ffff:...
382 entries in your access tables will no longer work.
384 You can now specify IPv6 'parent' networks in your access maps,
385 e.g. to reject all mail from 3ffe:200:... nodes, add the line
387 Use of trailing colons is discouraged because postmap will
388 warn about it possibly being an alias...
389 NOTE: I'll soon obsolete this again in favor of the more
390 common address/len notation. This was just so trivial to add
391 that it didn't hurt and I needed it :)
393 For easy reference, the version of the TLS/IPv6 patch can be
394 dynamically queried using the tls_ipv6_version variable.
395 This gives the short version (like, "1.8").
397 The service bind address for 'inet' sockets in master.cf (e.g.,
398 smtpd), must be enclosed in square brackets '[..]' for IPv6
399 addresses. The old style (without brackets) still works but is
400 unsupported and may be removed in the future. Example
401 [::1]:smtp inet n - n - - smtpd
403 Version 1.7 Postfix version 1.1.11-20021029 - 1.1.11-20021101
405 Postfix' SMTP client performs randomization of MX addresses
406 when sending mail. This however could result in A records
407 being used before AAAA records. This has been corrected.
409 Note that from Postfix version 1.1.11-20021029 on, there is
410 a proxy_interfaces parameter. This has of course not been
411 ported to IPv6 addresses...
413 Version 1.6 Postfix version 1.1.11-20020928
415 Added IPv6 support for backup_mx_networks feature; also the
416 behaviour when DNS lookups fail when checking whether the
417 local host is an MX for a domain conforms to the IPv4 case:
418 defer rather than allow.
420 Version 1.5 Postfix version 1.1.11-20020917
422 I introduced two bugs when I rewrote my older LMTP IPv6 patch.
423 These bugs effectively rendered LMTP useless. Now fixed.
424 Bugs spotted by Kaj Niemi.
426 Now supports Solaris 8 and 9. Due to lack of testing equipment,
427 this has been only tested in production on Solaris 9, both
428 with gcc and the Sun Workshop Compiler.
430 Version 1.4 Postfix version 1.1.11-20020822 - 1.1.11-20020917
432 OpenBSD (>=200003) and FreeBSD release 4 and up now use
433 getifaddrs(). This makes for cleaner code. The old code
434 seems to be bug-ridden anyway.
436 Got rid of some compiler warnings. Should be cleaner on
437 Alpha as well now. Thanks to Sten Spans for providing me
438 access to an Alpha running FreeBSD4.
440 Fixed an old bug in smtpd memory alloation if you compiled
441 without IPv6 support (the wrong buffer size was used. This
442 was harmless for IPv6-enabled compiles since the sizes were
445 Added ChangeLog to the patch (as IPv6-ChangeLog) (this
446 was absent in 1.3 contrary to docs).
448 Version 1.3 Postfix version 1.1.11-20020613 - 1.1.11-20020718
450 FYI: In postfix version 1.1.11-20020718, DNS lookups for
451 AAAA can be done natively. The code matches the code in
452 the patch (though the #ifdef changed from INET6 to T_AAAA).
453 This change causes the patch for 1.1.11-20020718 to be a
456 Version 1.2 Postfix version 1.1.11-20020613
458 Added IPv6 support for the LMTP client.
460 Added lmtp_bind_address and lmtp_bind_address6 parameters,
461 similar to those for smtp.
463 Added IPv6 support for the QMQP server.
465 Version 1.1 Postfix version 1.1.11-20020602 - 1.1.11-20020613
467 Added parameter smtp_bind_address6. By using this parameter,
468 it is possible to bind to an IPv6 address, independently of
469 IPv4 address binding.
471 Lutz fixed a bug in his TLS patch regarding SASL. Incorporated.
473 Version 1.0.x Postfix version 1.1.8-20020505 - 1.1.11-20020602
475 Patch derived from PLD's IPv6 patch for Postfix, revision 1.10
476 which applied to early Postfix snapshots 1.1.x. Updated this
477 patch to apply to 1.1.8-20020505.
479 Added compile-time checks for SS_LEN. Some Linux installations,
480 and maybe other systems, do define SA_LEN, but not SS_LEN.
482 Several updates of postfix snapshots.