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?
(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.