⚡ The Setup It started out harmlessly. All I wanted was a clean, automated backup process for Clifford’s Webhole — my corner of the internet where code, chaos, and a bit of sanity coexist.

I built a bash-driven backup system:

• Docker containers humming,

• Databases dumping on schedule,

• Logs archiving like clockwork.

Then came the final step — sending myself an email notification after each backup.

Simple, right? Not even close.

The Descent

I configured a lightweight SMTP client on my VPS and pointed it at my domain’s mail relay. WordPress’s SMTP plugin was content. I could log in to webmail without a hitch. But the command-line mailer stubbornly replied with: 535 Authentication credentials invalid That message marked the beginning of a deep dive through TLS settings, authentication methods, ports, verbose logs — and a few colorful words that don’t belong in documentation.

The Debugging Spiral

As the night went on, I cycled through the classic stages of sysadmin grief:

• Denial: “It’s probably caching.”

• Anger: “Why does the GUI work but the CLI doesn’t?!”

• Bargaining: “Maybe reinstalling packages will fix it.”

• Depression: “Guess I’m doing manual backups forever.”

• Acceptance: “Verbose logging. One. More. Time.”

TLS handshakes looked fine, STARTTLS worked, the server offered both AUTH PLAIN and AUTH LOGIN — yet every attempt ended in failure.

The Revelation

The culprit turned out to be deceptively small. In the mail client’s configuration, my password was wrapped in angle brackets — literally entered as \<mypassword>.

The mailer dutifully included those brackets when authenticating. The fix was simple: remove the brackets, retype the password cleanly (no quotes, no symbols), and test again.

Moments later, the terminal proudly displayed: 250 Requested mail action okay, completed 221 Service closing transmission channel For a sysadmin, that’s the digital equivalent of popping a champagne cork.

The Aftermath With SMTP finally behaving, the backup script now:

• Dumps the database

• Archives site files

• Emails the logs (with the archive attached)

• Rotates old backups automatically

Everything runs nightly. Each morning, a short success or failure log lands in my inbox. Quiet, reliable, predictable — exactly how infrastructure should be.

⚙️ Lessons Learned

• Never underestimate a misplaced character.

• Always test mailers in verbose mode.

• Explicit authentication methods are your friend.

• Detailed logging preserves your sanity.

• Coffee remains an essential debugging tool. ☕

Key Takeaways • A single character can break automation.

• GUI tools may hide subtle authentication issues.

• Test at the command line before blaming your application.

• Backups should be boring — that’s when you know they’re working.