Adventures in IPv6 Part 2
As the world inches toward IPv6, my quest to run this blog on IPv6-only infrastructure continues. While progress has been made, challenges abound—from SMTP configurations to Nodemailer quirks and Docker networking.
SMTP and Mail Challenges
Switching from Mailgun to Scaleway resolved one major IPv6 hurdle, but getting Ghost CMS to play nicely with IPv6-only SMTP servers revealed deep compatibility gaps in the tooling ecosystem.
Findings:
Scaleway Compatibility:
- Successfully connected to Scaleway’s SMTP over IPv6 (
smtp.tem.scw.cloud
). - Verified connectivity with
telnet
and ICMP tests.
- Successfully connected to Scaleway’s SMTP over IPv6 (
Nodemailer and Ghost CMS:
- Nodemailer struggles with IPv6:
- Error:
connect ENETUNREACH
. - Workaround: Manually set the IPv6 address and hostname in the transport configuration.
- Error:
- Submitted a fix for Ghost CMS to address this.
- Nodemailer struggles with IPv6:
Docker Networking for IPv6
Docker networking posed its own set of challenges:
IPv6 Container Communication:
- Docker’s default bridge failed for IPv6-only networks.
- Solution: Create a user-defined network with IPv6 configuration.
Image Pulls:
- Required using
registry.ipv6.docker.com
for pulling images.
- Required using
Resolving Python Issues
The pre-installed Python on my system created unexpected headaches:
Pip Problems:
- Encountered PEP 668-related restrictions.
- Solution: Compiled Python 3.11.4 from source and used
venv
.
Scripts:
- Successfully tested custom scripts using the
requests
library, which handled IPv6 seamlessly.
- Successfully tested custom scripts using the
Conclusion
Running an IPv6-only server is an ongoing challenge. From mail and Docker configurations to Node.js and Python quirks, compatibility issues abound. While solutions exist, they require significant troubleshooting and patchwork.
IPv6 adoption is growing, but this experiment underscores the need for broader, more robust support in popular tooling. If you’re venturing into IPv6-only infrastructure, be prepared for a time-intensive process.
Thoughts or feedback? Connect with me: LinkedIn, GitHub, BlueSky.