The Great Email Catastrophe of Launch Day
Or: How I learned that "it works on my machine" doesn't count when your machine doesn't have email
So there I was, feeling pretty smug. First blog post published. Whatsapp Status update posted. The Coin-Operated Engineer was officially live.
Then the messages started rolling in.
"Ek wil opteken maar kon ongelukkig nie"
"I tried multiple times to subscribe, but every time it says 'Failed', try again later..."
That feeling when you realize you've invited people to a party but forgot to unlock the front door? Yeah. That.
The "Well, that's not good " Moment
Here's the thing about Ghost blog - it has this beautiful member signup feature. Newsletter subscriptions! Magic sign-in links! All the modern blog goodness!
What it needs to work: A functioning email server.

What I had configured: Absolutely nothing.
I'd spent hours getting Docker containers talking to each other, wrestling with reverse proxies, making sure the blog looked perfect. But email? That boring, obvious, critical piece of infrastructure that literally makes the membership features work?
Details, details.
The 60-Minute Scramble
Picture this: Me, frantically alt-tabbing between:
- Plesk mail server settings
- Ghost environment variables
- Claude, who's probably thinking "you test satellite components but forgot email?"
- Gmail's increasingly passive-aggressive bounce messages
The error messages were chef's kiss perfect:
550-5.7.25 [217.154.199.232] The IP address sending this message does not have a PTR record setup
Translation: "Your server looks sketchy as hell, goodbye."
The Comedy of Errors
First attempt: Just add SMTP settings to Ghost. Easy! Result: Emails sent! ...straight to the void.
Second attempt: Oh right, PTR records. Let me just set those in GoDaddy... Result: Lol no, that's not how PTR records work, rookie.
Third attempt: Find the actual place to set PTR records (spoiler: it's your hosting provider, not your domain registrar) Result: Plesk decides to override it, because why not!
Fourth attempt: Fix SPF records because Ghost wants to send from blog.glyphsystems.co.za but I only configured the main domain Result: Gmail: "Better, but still no. Back to square one for you, peasant"
Final attempt: Just use the existing hello@glyphsystems.co.za for everything and call it a day Result: SUCCESS! 🎉
The Stack That Finally Worked
mail__transport: SMTP
mail__options__host: glyphsystems.co.za
mail__options__port: 465
mail__options__secure: true
mail__options__auth__user: hello@glyphsystems.co.za
mail__options__auth__pass: [REDACTED because I'm not THAT much of a rookie]
mail__from: hello@glyphsystems.co.za
Lessons Learned
- Test the ENTIRE user journey - Not just "can they read my beautiful prose?" but "can they actually sign up to read more beautiful prose?"
- Email is still hard in 2025 - We can land satellites in precise orbits, but email deliverability remains a dark art involving PTR records, SPF, DKIM, and probably some goat sacrifices on a mountain somewhere.
- Users are incredibly patient - People actually took the time to message me about the broken signup instead of just closing the tab. My friends are the best.
- Claude is a patient coding partner - Didn't even judge me (out loud) for forgetting something so basic.
The Silver Lining
You know what? This is exactly the kind of chaos I'm trying to fix for radiographers. The Chief spending 40 hours on schedules is basically me spending an hour on email config, multiplied by infinity.
At least my panic was only 60 minutes. And now anyone who wants to follow along on this ridiculous journey of building Shepherd 🐑 can actually, you know, follow along.
Huzzah! 🎉
To everyone who tried to sign up during that first chaotic hour: You're the real MVPs. Welcome to the adventure. It only gets better from here.
(He says, knowing full well something else will break spectacularly next week.)
Stay Tuned.
Update: The "Fixed One Thing, Broke Everything" Sequel 9 August - the next day
Remember when I said "it only gets better from here"?
Yeah, about that...
Turns out, fixing email is like playing infrastructure Jenga. You carefully place that SPF record to make Gmail happy, and suddenly the whole tower comes crashing down.
The Plot Twist Nobody Asked For
Here's what happened: My server had this beautiful wildcard DNS setup. Type in literally-anything.glyphsystems.co.za and boom - you're at my server. Blog? Check. Random-subdomain-I-made-up-at-3am? Also check. It was elegant. It was simple. It was working.
Then I added that explicit SPF record (you know, the one that finally convinced Gmail I wasn't a Nigerian prince), and apparently DNS records are like jealous siblings. The new SPF record looked at my wildcard and said "Oh, you think you're special? Watch this."
Result: Total. Site. Blackout.
NO ONE could access the blog anymore. Not blog.glyphsystems.co.za. Not www. Not even if they asked nicely.
The Morning After
Picture me, coffee in hand, checking my site metrics:
- Visitors: 0
- Signups: 0
- My confidence in understanding basic networking: Also 0
The fix? An explicit A record that basically had to spell out for the internet: "When someone types blog.glyphsystems.co.za, GO HERE. No, not there. HERE. THIS IP ADDRESS. I WILL USE SMALL WORDS."
Lessons Learned (Part 2)
- DNS is held together by hopes and wildcard dreams - Touch one thing, break three others
- "It's working" is always temporary - Especially when you're writing blog posts about how you fixed things
- The universe has a sense of humor - And it specifically enjoys waiting until AFTER you've told everyone your site is live
At this rate, by next week I'll have accidentally deleted the entire internet while trying to add a favicon.
Stay tuned for more episodes of "How Many Ways Can One Developer Break a Simple Blog Setup?"
(Spoiler: The limit does not exist)
P.S. - If you're reading this, it means the email system AND the DNS is working. Or you just found the RSS feed. Or clicked on my whatsapp status. Either way, you're brilliant.
P.P.S: Please sign up for the link below. I'm not desperate, I'm persistent.