development log
I wanted IRC bots. Obviously this became mail infrastructure.
I was bored, added Geoff and an actual friends room to the IRC network, then followed the existing VPS far enough to prepare self-hosted mail without pretending it already exists.
I was bored and wanted some IRC bots.
That is a completely normal reason to start changing infrastructure, apparently.
The network already existed. Ergo was there, ZNC was there, and #chat was a
perfectly fine room if the only people around were me, myself, and whichever
client I had forgotten was connected. That is not the same thing as having a
place I can give to actual people later.
So #chat stays the public lobby. I added #friends as the private social hub
for friends and close contacts. It is registered, invite-only, and not a
pretend secret channel with a cute name and no actual boundary behind it.
Then there is Geoff.
Geoff is a separate little Limnoria bot with games, polls, reminders, RSS,
quotes, presence, geography, time, and !help. That is the useful part. The
other useful part is what Geoff is not: he cannot operate Docker, deploy the
VPS, open Portainer, or turn a joke command into a production incident. I want
the IRC network to be social infrastructure, not a root shell with a mascot.
I considered something hacky and very Lain/FF00 about the name. Then “Geoff” was funnier. Geoff won. This is the only context I am ever giving anyone.
Then I looked at mail properly
The original question was much smaller: how do I send as an address that currently arrives in Hotmail? The IONOS addresses were forwarding rules, not real mailboxes. Buying a mailbox would solve that in the usual way, but there is already a VPS on the domain doing real work, with a stable public address, TLS, private routing, and an infrastructure record intended to rebuild it.
So it was worth following the idea honestly before paying for another mailbox product.
The provider-facing groundwork is done now. The mail hostname has forward and reverse DNS, and the domain’s SPF record authorizes the VPS. The existing MX records have deliberately not moved. Mail still lands through IONOS and keeps forwarding where it already forwarded. Nothing disappeared while I was trying to build the next thing.
This is not “self-hosted mail complete.” There is no deployed mail service yet, no DKIM signing key, no DMARC policy, and no MX cutover. The VPS provider also blocks outbound port 25 by default, so the next gate is a support request to lift that central block. Only after that can the actual mail service be added, tested, signed, and trusted with the domain’s inbound mail.
Unfortunately this means I now have to face my fear of getting on a phone call. Apparently the final boss of self-hosted email is talking to a human at the VPS provider.
That boring order is intentional. I have enough infrastructure already. I do not need another service that technically exists and is operationally vague.
What changed and what did not
What changed:
- IRC has a public landing room and a real private friends room.
- Geoff exists and responds to normal chat commands.
- The network greeting now explains what the rooms are for.
- The mail DNS prerequisites and the provider support request are documented instead of living only in a conversation.
What did not change:
- The existing mail forwarding remains in place.
- No MX records point at a new server yet.
- No one should mistake DNS preparation for a working mail platform.
This is general infrastructure work, not a product release. It is the quiet kind of change that makes the larger system less awkward to use: a friend can join a room without landing in an admin space, and a future mail server has a real route into the stack instead of becoming another paid workaround I forget why I accepted.