Is an IPv6-only MTA possible yet?

Solution 1:

Short answer: it will work, technically, but you will have lots of undeliverable mail.

Long answer: Take your SMTP logs. Sed out all the domain names you send mail to. Check if they have IPv6 DNS and MX. Once you get 100% (you won't, not anytime this decade), then you can try if the IPv6 IPs actually work.

I don't have any interesting production logs at hand (those I do have don't have enough domains to be of interest), but I took a list of domains offering free e-mail services from https://gist.github.com/tbrianjones/5992856

Out of the 536 first, 173 did not seem to have any MX resolving to an IP, 7 had MXs resolving to IPv4 and IPv6 MX addresses, and the remaining 356 had only IPv4 MXs. Out of domains having MXs, that is less than two percent OK, even before actually trying the IPv6 address to see if it works. Even admitting that the domains in the list are not in any sense the majority of Internet e-mail domains, I do not think that is enough for running a mail server that you actually expect to use.

EDIT: since the 536 alphabetically first of a random list of over 3600 free e-mail providers is not very representative, I've checked a few big-name domains, and here are those that did not have IPv6 MXs (remember IPv6-accessible DNS would also be needed):

  • microsoft.com / hotmail.com / outlook.com
  • mail.com
  • gmx.net
  • icloud.com / mac.com
  • comcast.com
  • inbox.com
  • zoho.com
  • aol.com
  • orange.fr
  • twitter.com

Do you want to register a domain?

  • godaddy.com
  • networksolutions.com
  • registrar.com

Or . . . do you want mail from this site?

  • stackexchange.com

(Of course) gmail.com and google.com have IPv6, and so does Facebook.com.

For those who are interested, I used an ancestor to this line of bash script:

for i in $(cat domains.txt) ; do
  echo $(
    echo $i
    echo \;
    for j in $(dig +short mx $i) ; do
      dig +short a $j
      dig +short aaaa $i         
    done \
    | sed -r -e 's/[^;:\.]//g' \
             -e 's/^:+$/v6/'  \
             -e 's/^\.+$/v4/' \
    | sort -u
  )
done \
| sed 's/ v4 v6/ v4+v6/' \
| sed -r 's/^([^;]+); *([^;]*)$/\2;\1/' \
| sed 's/^;/none;/' \
| sort '-t;' -k 1,1 \
| tr ';' '\t'

It's certainly improvable, but most of the bizarre things are to make the output prettier.

Solution 2:

The answer depends on your success criteria. But most likely will be no.

If you are running a business where any undelivered mail means a measurable cost. Then the answer is no, IPv6-only is not viable yet.

There are many providers including some large providers who are still running IPv4-only. The largest provider I know of with dual stack support is Gmail, but I frequently see delivery attempts over IPv6 being rejected by Gmail and then succeeding when retried over IPv4. So even for delivering mail to providers with dual stack, you are not going to experience reliable delivery.

If your primary goal isn't to be operating a reliable mail service for your users, but rather to make IPv4-only look less viable. And if you only need a high enough success rate to not have everybody laugh at you when you blame delivery failures on those running IPv4-only, then the answer is that IPv6-only could be almost viable today.

Hopefully in another two years most administrators will agree that IPv4-only is no longer viable, and dual stack will be a requirement.