Home | History | Annotate | Line # | Download | only in html
IPV6_README.html revision 1.1.1.1.2.2
      1  1.1.1.1.2.2  snj <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
      2  1.1.1.1.2.2  snj         "http://www.w3.org/TR/html4/loose.dtd">
      3  1.1.1.1.2.2  snj 
      4  1.1.1.1.2.2  snj <html>
      5  1.1.1.1.2.2  snj 
      6  1.1.1.1.2.2  snj <head>
      7  1.1.1.1.2.2  snj 
      8  1.1.1.1.2.2  snj <title>Postfix IPv6 Support</title>
      9  1.1.1.1.2.2  snj 
     10  1.1.1.1.2.2  snj <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
     11  1.1.1.1.2.2  snj 
     12  1.1.1.1.2.2  snj </head>
     13  1.1.1.1.2.2  snj 
     14  1.1.1.1.2.2  snj <body>
     15  1.1.1.1.2.2  snj 
     16  1.1.1.1.2.2  snj <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix
     17  1.1.1.1.2.2  snj IPv6 Support</h1>
     18  1.1.1.1.2.2  snj 
     19  1.1.1.1.2.2  snj <hr>
     20  1.1.1.1.2.2  snj 
     21  1.1.1.1.2.2  snj <h2>Introduction</h2>
     22  1.1.1.1.2.2  snj 
     23  1.1.1.1.2.2  snj <p> Postfix 2.2 introduces support for the IPv6 (IP version 6)
     24  1.1.1.1.2.2  snj protocol. IPv6 support for older Postfix versions was available as
     25  1.1.1.1.2.2  snj an add-on patch. The section "<a href="#compat">Compatibility with
     26  1.1.1.1.2.2  snj Postfix &lt;2.2 IPv6 support</a>" below discusses the differences
     27  1.1.1.1.2.2  snj between these implementations. </p>
     28  1.1.1.1.2.2  snj 
     29  1.1.1.1.2.2  snj <p> The main feature of interest is that IPv6 uses 128-bit IP
     30  1.1.1.1.2.2  snj addresses instead of the 32-bit addresses used by IPv4. It can
     31  1.1.1.1.2.2  snj therefore accommodate a much larger number of hosts and networks
     32  1.1.1.1.2.2  snj without ugly kluges such as NAT. A side benefit of the much larger
     33  1.1.1.1.2.2  snj address space is that it makes random network scanning impractical.
     34  1.1.1.1.2.2  snj </p>
     35  1.1.1.1.2.2  snj 
     36  1.1.1.1.2.2  snj <p> Postfix uses the same SMTP protocol over IPv6 as it already
     37  1.1.1.1.2.2  snj uses over the older IPv4 network, and does AAAA record lookups in
     38  1.1.1.1.2.2  snj the DNS in addition to the older A records.  Information about IPv6
     39  1.1.1.1.2.2  snj can be found at <a href="http://www.ipv6.org/">http://www.ipv6.org/</a>. </p>
     40  1.1.1.1.2.2  snj 
     41  1.1.1.1.2.2  snj <p> This document provides information on the following topics:
     42  1.1.1.1.2.2  snj </p>
     43  1.1.1.1.2.2  snj 
     44  1.1.1.1.2.2  snj <ul>
     45  1.1.1.1.2.2  snj 
     46  1.1.1.1.2.2  snj <li><a href="#platforms">Supported platforms</a>
     47  1.1.1.1.2.2  snj 
     48  1.1.1.1.2.2  snj <li><a href="#configuration">Configuration</a>
     49  1.1.1.1.2.2  snj 
     50  1.1.1.1.2.2  snj <li><a href="#limitations">Known limitations</a>
     51  1.1.1.1.2.2  snj 
     52  1.1.1.1.2.2  snj <li><a href="#compat">Compatibility with Postfix &lt;2.2 IPv6 support</a>
     53  1.1.1.1.2.2  snj 
     54  1.1.1.1.2.2  snj <li><a href="#porting">IPv6 Support for unsupported platforms</a>
     55  1.1.1.1.2.2  snj 
     56  1.1.1.1.2.2  snj <li><a href="#credits">Credits</a>
     57  1.1.1.1.2.2  snj 
     58  1.1.1.1.2.2  snj </ul>
     59  1.1.1.1.2.2  snj 
     60  1.1.1.1.2.2  snj <h2><a name="platforms">Supported Platforms</a></h2>
     61  1.1.1.1.2.2  snj 
     62  1.1.1.1.2.2  snj <p> Postfix version 2.2 supports IPv4 and IPv6 on the following
     63  1.1.1.1.2.2  snj platforms:  </p>
     64  1.1.1.1.2.2  snj 
     65  1.1.1.1.2.2  snj <ul>
     66  1.1.1.1.2.2  snj 
     67  1.1.1.1.2.2  snj <li> AIX 5.1+
     68  1.1.1.1.2.2  snj <li> Darwin 7.3+
     69  1.1.1.1.2.2  snj <li> FreeBSD 4+
     70  1.1.1.1.2.2  snj <li> Linux 2.4+
     71  1.1.1.1.2.2  snj <li> NetBSD 1.5+
     72  1.1.1.1.2.2  snj <li> OpenBSD 2+
     73  1.1.1.1.2.2  snj <li> Solaris 8+
     74  1.1.1.1.2.2  snj <li> Tru64Unix V5.1+
     75  1.1.1.1.2.2  snj 
     76  1.1.1.1.2.2  snj </ul>
     77  1.1.1.1.2.2  snj 
     78  1.1.1.1.2.2  snj <p> On other platforms Postfix will simply use IPv4 as it has always
     79  1.1.1.1.2.2  snj done. </p>
     80  1.1.1.1.2.2  snj 
     81  1.1.1.1.2.2  snj <p> See <a href="#porting">below</a> for tips how to port Postfix
     82  1.1.1.1.2.2  snj IPv6 support to other environments.  </p>
     83  1.1.1.1.2.2  snj 
     84  1.1.1.1.2.2  snj <h2><a name="configuration">Configuration</a></h2>
     85  1.1.1.1.2.2  snj 
     86  1.1.1.1.2.2  snj <p> Postfix IPv6 support introduces two new <a href="postconf.5.html">main.cf</a> configuration
     87  1.1.1.1.2.2  snj parameters, and introduces an important change in address syntax
     88  1.1.1.1.2.2  snj notation in match lists such as <a href="postconf.5.html#mynetworks">mynetworks</a> or
     89  1.1.1.1.2.2  snj <a href="postconf.5.html#debug_peer_list">debug_peer_list</a>. </p>
     90  1.1.1.1.2.2  snj 
     91  1.1.1.1.2.2  snj <p> Postfix IPv6 address syntax is a little tricky, because there
     92  1.1.1.1.2.2  snj are a few places where you must enclose an IPv6 address inside
     93  1.1.1.1.2.2  snj "<tt>[]</tt>" characters, and a few places where you must not. It is
     94  1.1.1.1.2.2  snj a good idea to use "<tt>[]</tt>" only in the few places where you
     95  1.1.1.1.2.2  snj have to. Check out the <a href="postconf.5.html">postconf(5)</a> manual whenever you do IPv6
     96  1.1.1.1.2.2  snj related configuration work with Postfix.  </p>
     97  1.1.1.1.2.2  snj 
     98  1.1.1.1.2.2  snj <ul>
     99  1.1.1.1.2.2  snj 
    100  1.1.1.1.2.2  snj <li> <p> Instead of hard-coding 127.0.0.1 and ::1 loopback addresses
    101  1.1.1.1.2.2  snj in <a href="master.5.html">master.cf</a>, specify "<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback-only" in <a href="postconf.5.html">main.cf</a>.
    102  1.1.1.1.2.2  snj This way you can use the same <a href="master.5.html">master.cf</a> file regardless of whether
    103  1.1.1.1.2.2  snj or not Postfix will run on an IPv6-enabled system. </p>
    104  1.1.1.1.2.2  snj 
    105  1.1.1.1.2.2  snj <li> <p> The first new parameter is called <a href="postconf.5.html#inet_protocols">inet_protocols</a>.  This
    106  1.1.1.1.2.2  snj specifies what protocols Postfix will use when it makes or accepts
    107  1.1.1.1.2.2  snj network connections, and also controls what DNS lookups Postfix
    108  1.1.1.1.2.2  snj will use when it makes network connections.  </p>
    109  1.1.1.1.2.2  snj 
    110  1.1.1.1.2.2  snj <blockquote>
    111  1.1.1.1.2.2  snj <pre>
    112  1.1.1.1.2.2  snj /etc/postfix/<a href="postconf.5.html">main.cf</a>:
    113  1.1.1.1.2.2  snj     # You must stop/start Postfix after changing this parameter.
    114  1.1.1.1.2.2  snj     <a href="postconf.5.html#inet_protocols">inet_protocols</a> = ipv4       (DEFAULT: enable IPv4 only)
    115  1.1.1.1.2.2  snj     <a href="postconf.5.html#inet_protocols">inet_protocols</a> = all        (enable IPv4, and IPv6 if supported)
    116  1.1.1.1.2.2  snj     <a href="postconf.5.html#inet_protocols">inet_protocols</a> = ipv4, ipv6 (enable both IPv4 and IPv6)
    117  1.1.1.1.2.2  snj     <a href="postconf.5.html#inet_protocols">inet_protocols</a> = ipv6       (enable IPv6 only)
    118  1.1.1.1.2.2  snj </pre>
    119  1.1.1.1.2.2  snj </blockquote>
    120  1.1.1.1.2.2  snj 
    121  1.1.1.1.2.2  snj <p> By default, Postfix uses IPv4 only, because most systems aren't
    122  1.1.1.1.2.2  snj attached to an IPv6 network. </p>
    123  1.1.1.1.2.2  snj 
    124  1.1.1.1.2.2  snj <ul>
    125  1.1.1.1.2.2  snj 
    126  1.1.1.1.2.2  snj <li> <p> On systems with combined IPv4/IPv6 stacks, attempts to
    127  1.1.1.1.2.2  snj deliver mail via IPv6 would always fail with "network unreachable",
    128  1.1.1.1.2.2  snj and those attempts would only slow down Postfix. </p>
    129  1.1.1.1.2.2  snj 
    130  1.1.1.1.2.2  snj <li> <p> Linux kernels don't even load IPv6 protocol support by
    131  1.1.1.1.2.2  snj default. Any attempt to use it would fail immediately. </p>
    132  1.1.1.1.2.2  snj 
    133  1.1.1.1.2.2  snj </ul>
    134  1.1.1.1.2.2  snj 
    135  1.1.1.1.2.2  snj <p> Note 1: you must stop and start Postfix after changing the
    136  1.1.1.1.2.2  snj <a href="postconf.5.html#inet_protocols">inet_protocols</a> configuration parameter. </p>
    137  1.1.1.1.2.2  snj 
    138  1.1.1.1.2.2  snj <p> Note 2: if you see error messages like the following, then
    139  1.1.1.1.2.2  snj you're running Linux and need to turn on IPv6 in the kernel: see
    140  1.1.1.1.2.2  snj <a href="http://www.ipv6.org/">http://www.ipv6.org/</a> for hints and tips. Unlike other systems,
    141  1.1.1.1.2.2  snj Linux does not have a combined stack for IPv4 and IPv6, and IPv6
    142  1.1.1.1.2.2  snj protocol support is not loaded by default.  </p>
    143  1.1.1.1.2.2  snj 
    144  1.1.1.1.2.2  snj <blockquote>
    145  1.1.1.1.2.2  snj <pre>
    146  1.1.1.1.2.2  snj postconf: warning: <a href="postconf.5.html#inet_protocols">inet_protocols</a>: IPv6 support is disabled: Address family not supported by protocol
    147  1.1.1.1.2.2  snj postconf: warning: <a href="postconf.5.html#inet_protocols">inet_protocols</a>: configuring for IPv4 support only
    148  1.1.1.1.2.2  snj </pre>
    149  1.1.1.1.2.2  snj </blockquote>
    150  1.1.1.1.2.2  snj 
    151  1.1.1.1.2.2  snj <p> Note 3: on older Linux and Solaris systems, the setting
    152  1.1.1.1.2.2  snj "<a href="postconf.5.html#inet_protocols">inet_protocols</a> = ipv6" will not prevent Postfix from
    153  1.1.1.1.2.2  snj accepting IPv4 connections.  Postfix will present the client IP
    154  1.1.1.1.2.2  snj addresses in IPv6 format, though. In all other cases, Postfix always
    155  1.1.1.1.2.2  snj presents IPv4 client IP addresses in the traditional dotted quad
    156  1.1.1.1.2.2  snj IPv4 format.  </p>
    157  1.1.1.1.2.2  snj 
    158  1.1.1.1.2.2  snj <li> <p> The other new parameter is <a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a>.
    159  1.1.1.1.2.2  snj This sets the local interface address for outgoing IPv6 SMTP
    160  1.1.1.1.2.2  snj connections, just like the <a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> parameter
    161  1.1.1.1.2.2  snj does for IPv4: </p>
    162  1.1.1.1.2.2  snj 
    163  1.1.1.1.2.2  snj <blockquote>
    164  1.1.1.1.2.2  snj <pre>
    165  1.1.1.1.2.2  snj /etc/postfix/<a href="postconf.5.html">main.cf</a>:
    166  1.1.1.1.2.2  snj     <a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> = 2001:240:587:0:250:56ff:fe89:1
    167  1.1.1.1.2.2  snj </pre>
    168  1.1.1.1.2.2  snj </blockquote>
    169  1.1.1.1.2.2  snj 
    170  1.1.1.1.2.2  snj <li> <p> If you left the value of the <a href="postconf.5.html#mynetworks">mynetworks</a> parameter at its
    171  1.1.1.1.2.2  snj default (i.e. no <a href="postconf.5.html#mynetworks">mynetworks</a> setting in <a href="postconf.5.html">main.cf</a>) Postfix will figure
    172  1.1.1.1.2.2  snj out by itself what its network addresses are. This is what a typical
    173  1.1.1.1.2.2  snj setting looks like: </p>
    174  1.1.1.1.2.2  snj 
    175  1.1.1.1.2.2  snj <blockquote>
    176  1.1.1.1.2.2  snj <pre>
    177  1.1.1.1.2.2  snj % postconf <a href="postconf.5.html#mynetworks">mynetworks</a>
    178  1.1.1.1.2.2  snj <a href="postconf.5.html#mynetworks">mynetworks</a> = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [fe80::]/10 [2001:240:587::]/64 
    179  1.1.1.1.2.2  snj </pre>
    180  1.1.1.1.2.2  snj </blockquote>
    181  1.1.1.1.2.2  snj 
    182  1.1.1.1.2.2  snj <p> If you did specify the <a href="postconf.5.html#mynetworks">mynetworks</a> parameter value in
    183  1.1.1.1.2.2  snj <a href="postconf.5.html">main.cf</a>, you need update the <a href="postconf.5.html#mynetworks">mynetworks</a> value to include
    184  1.1.1.1.2.2  snj the IPv6 networks the system is in. Be sure to specify IPv6 address
    185  1.1.1.1.2.2  snj information inside "<tt>[]</tt>", like this: </p>
    186  1.1.1.1.2.2  snj 
    187  1.1.1.1.2.2  snj <blockquote>
    188  1.1.1.1.2.2  snj <pre>
    189  1.1.1.1.2.2  snj /etc/postfix/<a href="postconf.5.html">main.cf</a>:
    190  1.1.1.1.2.2  snj     <a href="postconf.5.html#mynetworks">mynetworks</a> = ...<i>IPv4 networks</i>... [::1]/128 [2001:240:587::]/64 ...
    191  1.1.1.1.2.2  snj </pre>
    192  1.1.1.1.2.2  snj </blockquote>
    193  1.1.1.1.2.2  snj 
    194  1.1.1.1.2.2  snj </ul>
    195  1.1.1.1.2.2  snj 
    196  1.1.1.1.2.2  snj <p> <b> NOTE: when configuring Postfix match lists such as
    197  1.1.1.1.2.2  snj <a href="postconf.5.html#mynetworks">mynetworks</a> or <a href="postconf.5.html#debug_peer_list">debug_peer_list</a>, you must specify
    198  1.1.1.1.2.2  snj IPv6 address information inside "<tt>[]</tt>" in the <a href="postconf.5.html">main.cf</a> parameter
    199  1.1.1.1.2.2  snj value and in files specified with a "<i>/file/name</i>" pattern.
    200  1.1.1.1.2.2  snj IPv6 addresses contain the ":" character, and would otherwise be
    201  1.1.1.1.2.2  snj confused with a "<i><a href="DATABASE_README.html">type:table</a></i>" pattern. </b>  </p>
    202  1.1.1.1.2.2  snj 
    203  1.1.1.1.2.2  snj <h2><a name="limitations">Known Limitations</a></h2>
    204  1.1.1.1.2.2  snj 
    205  1.1.1.1.2.2  snj <ul>
    206  1.1.1.1.2.2  snj 
    207  1.1.1.1.2.2  snj <li> <p> The order of IPv6/IPv4 outgoing connection attempts is
    208  1.1.1.1.2.2  snj not yet configurable.  Currently, IPv6 is tried before IPv4. </p>
    209  1.1.1.1.2.2  snj 
    210  1.1.1.1.2.2  snj <li> <p> Postfix currently does not support DNSBL (real-time
    211  1.1.1.1.2.2  snj blackhole list) lookups for IPv6 client IP addresses; currently
    212  1.1.1.1.2.2  snj there are no blacklists that cover the IPv6 address space. </p>
    213  1.1.1.1.2.2  snj 
    214  1.1.1.1.2.2  snj <li> <p> IPv6 does not have class A, B, C, etc. networks. With IPv6
    215  1.1.1.1.2.2  snj networks, the setting "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = class" has the
    216  1.1.1.1.2.2  snj same effect as the setting "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet".
    217  1.1.1.1.2.2  snj </p>
    218  1.1.1.1.2.2  snj 
    219  1.1.1.1.2.2  snj <li> <p> On Tru64Unix and AIX, Postfix can't figure out the local
    220  1.1.1.1.2.2  snj subnet mask
    221  1.1.1.1.2.2  snj and always assumes a /128 network. This is a problem only with
    222  1.1.1.1.2.2  snj "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" and no explicit <a href="postconf.5.html#mynetworks">mynetworks</a>
    223  1.1.1.1.2.2  snj setting in <a href="postconf.5.html">main.cf</a>. </p>
    224  1.1.1.1.2.2  snj 
    225  1.1.1.1.2.2  snj </ul>
    226  1.1.1.1.2.2  snj 
    227  1.1.1.1.2.2  snj <h2> <a name="compat">Compatibility with Postfix &lt;2.2 IPv6 support</a>
    228  1.1.1.1.2.2  snj </h2>
    229  1.1.1.1.2.2  snj 
    230  1.1.1.1.2.2  snj <p> Postfix version 2.2 IPv6 support is based on the Postfix/IPv6 patch
    231  1.1.1.1.2.2  snj by Dean Strik and others, but differs in a few minor ways. </p>
    232  1.1.1.1.2.2  snj 
    233  1.1.1.1.2.2  snj <ul>
    234  1.1.1.1.2.2  snj 
    235  1.1.1.1.2.2  snj <li> <p> <a href="postconf.5.html">main.cf</a>: The <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> parameter does not support
    236  1.1.1.1.2.2  snj the notation  "ipv6:all" or "ipv4:all". Use the
    237  1.1.1.1.2.2  snj <a href="postconf.5.html#inet_protocols">inet_protocols</a> parameter instead. </p>
    238  1.1.1.1.2.2  snj 
    239  1.1.1.1.2.2  snj <li> <p> <a href="postconf.5.html">main.cf</a>: Specify "<a href="postconf.5.html#inet_protocols">inet_protocols</a> = all" or
    240  1.1.1.1.2.2  snj "<a href="postconf.5.html#inet_protocols">inet_protocols</a> = ipv4, ipv6" in order to enable both IPv4
    241  1.1.1.1.2.2  snj and IPv6 support. </p>
    242  1.1.1.1.2.2  snj 
    243  1.1.1.1.2.2  snj <li> <p> <a href="postconf.5.html">main.cf</a>: The <a href="postconf.5.html#inet_protocols">inet_protocols</a> parameter also controls
    244  1.1.1.1.2.2  snj what DNS lookups Postfix will attempt to make when delivering or
    245  1.1.1.1.2.2  snj receiving mail. </p>
    246  1.1.1.1.2.2  snj 
    247  1.1.1.1.2.2  snj <li> <p> <a href="postconf.5.html">main.cf</a>: Specify "<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback-only"
    248  1.1.1.1.2.2  snj to listen on loopback network interfaces only. </p>
    249  1.1.1.1.2.2  snj 
    250  1.1.1.1.2.2  snj <li> <p> The <a href="postconf.5.html#lmtp_bind_address">lmtp_bind_address</a> and <a href="postconf.5.html#lmtp_bind_address6">lmtp_bind_address6</a>
    251  1.1.1.1.2.2  snj features were omitted. The Postfix LMTP client will be absorbed
    252  1.1.1.1.2.2  snj into the SMTP client, so there is no reason to keep adding features
    253  1.1.1.1.2.2  snj to the LMTP client. </p>
    254  1.1.1.1.2.2  snj 
    255  1.1.1.1.2.2  snj <li> <p> The SMTP server now requires that IPv6 addresses in SMTP
    256  1.1.1.1.2.2  snj commands are specified as [ipv6:<i>ipv6address</i>], as
    257  1.1.1.1.2.2  snj described in <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>. </p>
    258  1.1.1.1.2.2  snj 
    259  1.1.1.1.2.2  snj <li> <p> The IPv6 network address matching code was rewritten from
    260  1.1.1.1.2.2  snj the ground up, and is expected to be closer to the specification.
    261  1.1.1.1.2.2  snj The result may be incompatible with the Postfix/IPv6 patch.
    262  1.1.1.1.2.2  snj </p>
    263  1.1.1.1.2.2  snj 
    264  1.1.1.1.2.2  snj </ul>
    265  1.1.1.1.2.2  snj 
    266  1.1.1.1.2.2  snj <h2><a name="porting">IPv6 Support for unsupported platforms</a></h2>
    267  1.1.1.1.2.2  snj 
    268  1.1.1.1.2.2  snj <p> Getting Postfix IPv6 working on other platforms involves the
    269  1.1.1.1.2.2  snj following steps: </p>
    270  1.1.1.1.2.2  snj 
    271  1.1.1.1.2.2  snj <ul>
    272  1.1.1.1.2.2  snj 
    273  1.1.1.1.2.2  snj <li> <p> Specify how Postfix should find the local network interfaces.
    274  1.1.1.1.2.2  snj Postfix needs this information to avoid mailer loops and to find out
    275  1.1.1.1.2.2  snj if mail for <i>user@[ipaddress]</i> is a local or remote destination. </p>
    276  1.1.1.1.2.2  snj 
    277  1.1.1.1.2.2  snj <p> If your system has the getifaddrs() routine then add
    278  1.1.1.1.2.2  snj the following to your platform-specific section in
    279  1.1.1.1.2.2  snj src/util/sys_defs.h:  </p>
    280  1.1.1.1.2.2  snj 
    281  1.1.1.1.2.2  snj <blockquote>
    282  1.1.1.1.2.2  snj <pre>
    283  1.1.1.1.2.2  snj #ifndef NO_IPV6
    284  1.1.1.1.2.2  snj # define HAS_IPV6
    285  1.1.1.1.2.2  snj # define HAVE_GETIFADDRS
    286  1.1.1.1.2.2  snj #endif
    287  1.1.1.1.2.2  snj </pre>
    288  1.1.1.1.2.2  snj </blockquote>
    289  1.1.1.1.2.2  snj 
    290  1.1.1.1.2.2  snj <p> Otherwise, if your system has the SIOCGLIF ioctl()
    291  1.1.1.1.2.2  snj command in /usr/include/*/*.h, add the following to your
    292  1.1.1.1.2.2  snj platform-specific section in src/util/sys_defs.h: </p>
    293  1.1.1.1.2.2  snj 
    294  1.1.1.1.2.2  snj <blockquote>
    295  1.1.1.1.2.2  snj <pre>
    296  1.1.1.1.2.2  snj #ifndef NO_IPV6
    297  1.1.1.1.2.2  snj # define HAS_IPV6
    298  1.1.1.1.2.2  snj # define HAS_SIOCGLIF
    299  1.1.1.1.2.2  snj #endif
    300  1.1.1.1.2.2  snj </pre> 
    301  1.1.1.1.2.2  snj </blockquote>
    302  1.1.1.1.2.2  snj 
    303  1.1.1.1.2.2  snj <p> Otherwise, Postfix will have to use the old SIOCGIF commands
    304  1.1.1.1.2.2  snj and get along with reduced IPv6 functionality (it won't be able to
    305  1.1.1.1.2.2  snj figure out your IPv6 netmasks, which are needed for "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a>
    306  1.1.1.1.2.2  snj = subnet". Add this to your platform-specific section in
    307  1.1.1.1.2.2  snj src/util/sys_defs.h: </p>
    308  1.1.1.1.2.2  snj 
    309  1.1.1.1.2.2  snj <blockquote>
    310  1.1.1.1.2.2  snj <pre>
    311  1.1.1.1.2.2  snj #ifndef NO_IPV6
    312  1.1.1.1.2.2  snj # define HAS_IPV6
    313  1.1.1.1.2.2  snj #endif
    314  1.1.1.1.2.2  snj </pre> 
    315  1.1.1.1.2.2  snj </blockquote>
    316  1.1.1.1.2.2  snj 
    317  1.1.1.1.2.2  snj <li> <p> Test if Postfix can figure out its interface information. </p>
    318  1.1.1.1.2.2  snj 
    319  1.1.1.1.2.2  snj <p> After compiling Postfix in the usual manner, step into the
    320  1.1.1.1.2.2  snj src/util directory and type "<b>make inet_addr_local</b>".
    321  1.1.1.1.2.2  snj Running this file by hand should produce all the interface addresses
    322  1.1.1.1.2.2  snj and network masks, for example: </p>
    323  1.1.1.1.2.2  snj 
    324  1.1.1.1.2.2  snj <blockquote>
    325  1.1.1.1.2.2  snj <pre>
    326  1.1.1.1.2.2  snj % make
    327  1.1.1.1.2.2  snj % cd src/util
    328  1.1.1.1.2.2  snj % make inet_addr_local
    329  1.1.1.1.2.2  snj [... some messages ...]
    330  1.1.1.1.2.2  snj % ./inet_addr_local
    331  1.1.1.1.2.2  snj [... some messages ...]
    332  1.1.1.1.2.2  snj ./inet_addr_local: inet_addr_local: configured 2 IPv4 addresses
    333  1.1.1.1.2.2  snj ./inet_addr_local: inet_addr_local: configured 4 IPv6 addresses
    334  1.1.1.1.2.2  snj 168.100.189.2/255.255.255.224
    335  1.1.1.1.2.2  snj 127.0.0.1/255.0.0.0
    336  1.1.1.1.2.2  snj fe80:1::2d0:b7ff:fe88:2ca7/ffff:ffff:ffff:ffff::
    337  1.1.1.1.2.2  snj 2001:240:587:0:2d0:b7ff:fe88:2ca7/ffff:ffff:ffff:ffff::
    338  1.1.1.1.2.2  snj fe80:5::1/ffff:ffff:ffff:ffff::
    339  1.1.1.1.2.2  snj ::1/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
    340  1.1.1.1.2.2  snj </pre>
    341  1.1.1.1.2.2  snj </blockquote>
    342  1.1.1.1.2.2  snj 
    343  1.1.1.1.2.2  snj <p> The above is for an old FreeBSD machine. Other systems produce
    344  1.1.1.1.2.2  snj slightly different results, but you get the idea. </p>
    345  1.1.1.1.2.2  snj 
    346  1.1.1.1.2.2  snj </ul>
    347  1.1.1.1.2.2  snj 
    348  1.1.1.1.2.2  snj <p> If none of all this produces a usable result, send email to the
    349  1.1.1.1.2.2  snj postfix-users (a] postfix.org mailing list and we'll try to help you
    350  1.1.1.1.2.2  snj through this. </p>
    351  1.1.1.1.2.2  snj 
    352  1.1.1.1.2.2  snj <h2><a name="credits">Credits</a></h2>
    353  1.1.1.1.2.2  snj 
    354  1.1.1.1.2.2  snj <p> The following information is in part based on information that
    355  1.1.1.1.2.2  snj was compiled by Dean Strik. </p>
    356  1.1.1.1.2.2  snj 
    357  1.1.1.1.2.2  snj <ul>
    358  1.1.1.1.2.2  snj 
    359  1.1.1.1.2.2  snj <li> <p> Mark Huizer wrote the original Postfix IPv6 patch. </p>
    360  1.1.1.1.2.2  snj 
    361  1.1.1.1.2.2  snj <li> <p> Jun-ichiro 'itojun' Hagino of the KAME project made
    362  1.1.1.1.2.2  snj substantial improvements. Since then, we speak of the KAME patch.
    363  1.1.1.1.2.2  snj </p>
    364  1.1.1.1.2.2  snj 
    365  1.1.1.1.2.2  snj <li> <p> The PLD Linux Distribution ported the code to other stacks
    366  1.1.1.1.2.2  snj (notably USAGI).  We speak of the PLD patch. A very important
    367  1.1.1.1.2.2  snj feature of the PLD patch was that it can work with Lutz Jaenicke's
    368  1.1.1.1.2.2  snj TLS patch for Postfix.  </p>
    369  1.1.1.1.2.2  snj 
    370  1.1.1.1.2.2  snj <li> <p> Dean Strik extended IPv6 support to platforms other than
    371  1.1.1.1.2.2  snj KAME and USAGI, updated the patch to keep up with Postfix development,
    372  1.1.1.1.2.2  snj and provided a combined IPv6 + TLS patch.  Information about his
    373  1.1.1.1.2.2  snj effort can be found on Dean Strik's Postfix website at
    374  1.1.1.1.2.2  snj <a href="http://www.ipnet6.org/postfix/">http://www.ipnet6.org/postfix/</a>. </p>
    375  1.1.1.1.2.2  snj 
    376  1.1.1.1.2.2  snj <li> <p> Wietse Venema took Dean Strik's IPv6 patch, merged it into
    377  1.1.1.1.2.2  snj Postfix 2.2, and took the opportunity to eliminate all IPv4-specific
    378  1.1.1.1.2.2  snj code from Postfix that could be removed.  For systems without IPv6
    379  1.1.1.1.2.2  snj support in the kernel and system libraries, Postfix has a simple
    380  1.1.1.1.2.2  snj compatibility layer, so that it will use IPv4 as before.  </p>
    381  1.1.1.1.2.2  snj 
    382  1.1.1.1.2.2  snj </ul>
    383  1.1.1.1.2.2  snj 
    384  1.1.1.1.2.2  snj </body>
    385  1.1.1.1.2.2  snj 
    386  1.1.1.1.2.2  snj </html>
    387