Swaks IPv6 Support – Initial Draft

I’ve put together an initial attempt at IPv6 support in swaks. If this sort of thing interests you, please take a look at what I have so far and let me know what you think.

LINK REMOVED – this was a development release and the changes have been incorporated in official releases. Please see the project home page at http://jetmore.org/john/code/swaks/ for the latest release.

There is no documentation included yet, but the only real change to the documentation is the addition of the -4 and -6 options to force IPv4 or IPv6. There are a few unrelated tweaks since the last release, but nothing that needs documentation at this point.

Static routing (where the target server is explicitly set using the –server option) is fairly solid and intuitive in my opinion. MX routing when -4 or -6 is given is also pretty solid – the MXs are cycled through and only chosen if the MX has the correct IP records associated with it (if -4 set, the exchanger is only chose if it has A records).

The only really muddy issue I have outstanding is how much work to do sorting out MX records when neither -4 or -6 is specified. If I were to build the most robust thing I could, I would have to find the local machine’s interfaces to see if IPv6 will be available, then sort the MX records accordingly. However, I really don’t want to get that deep into the local machine config. As the code stands right now, without a hint about whether we will be using IPv4 or IPv6 at transport time, we can end up choosing an A-only MX record on an IPv6-only machine, or an AAAA-only MX record on an IPv4 machine.

Still early goings on this. Please download it and try it out and let me know what you think. Feedback greatly appreciated.

2 thoughts on “Swaks IPv6 Support – Initial Draft

  1. Just my opinion, buts I think the odds of anyone installing an IPv6-only host at this point is very, very, very low. Don’t let that hold you up for very long. ;-)

Leave a Reply to at0r Cancel reply

Your email address will not be published. Required fields are marked *