Domain and Email Hosting Onboarding
Hostinger email, Cloudflare DNS, Invoice Ninja SMTP and annual billing procedures
Domain and Email Hosting Onboarding
This procedure covers KareTech-managed email domains using Hostinger for mail delivery, Cloudflare for DNS, and Invoice Ninja for annual billing.
Standard annual pricing
| Service | Price |
|---|---|
| Email & Web-Hosting | GYD 30,000 |
| Domain Management & DNS Services | GYD 4,000 |
| Total | GYD 34,000 |
Confirm the client, domain, scope and price before creating billing records.
Security rules
- Credentials belong in Infisical and must never be pasted into documentation or chat.
- Back up affected DNS records and record IDs before changing or deleting them.
- Do not expose Docker environment values wholesale.
- Do not email invoices or clients without explicit authorisation.
- Provide mailbox credentials through an approved secure channel.
Hostinger DNS records
All mail records are DNS-only in Cloudflare.
MX
| Name | Target | Priority |
|---|---|---|
@ | mx1.hostinger.com | 5 |
@ | mx2.hostinger.com | 10 |
SPF
Publish exactly one SPF policy. For a Hostinger-only sender:
If another sender is already authorised, merge it into that policy instead of creating another SPF record.
DKIM
| Name | Target |
|---|---|
hostingermail-a._domainkey | hostingermail-a.dkim.mail.hostinger.com |
hostingermail-b._domainkey | hostingermail-b.dkim.mail.hostinger.com |
hostingermail-c._domainkey | hostingermail-c.dkim.mail.hostinger.com |
Each selector must resolve to exactly one value.
DMARC
Start new domains with one monitoring policy:
Tighten the policy only after SPF/DKIM alignment and real delivery are verified.
TXT content safety
Submit TXT values to the Cloudflare API as plain ASCII. Do not paste smart quotes such as “ or ”, and do not publish escaped UTF-8 byte strings. Multiple SPF or DMARC records are invalid even if each record looks plausible on its own.
DNS validation
Check Cloudflare authoritative nameservers and public resolvers:
Release only when:
- Both Hostinger MX records resolve.
- Exactly one SPF record exists.
- Exactly one DMARC record exists.
- Each Hostinger DKIM selector returns one value.
- No smart quotes or malformed duplicate TXT records remain.
Invoice Ninja SMTP
The verified transport for KareTech's Hetzner host is:
| Setting | Value |
|---|---|
| Host | smtp.hostinger.com |
| Port | 587 |
| Encryption | STARTTLS / tls |
| TLS peer verification | Enabled |
Do not use ports 465 or 25 from the KareTech Hetzner host; both are blocked. Port 587 is verified.
Invoice Ninja company-level SMTP settings override Laravel's global MAIL_* environment for company mail. Inspect both layers when troubleshooting.
Diagnostic order
- Resolve
smtp.hostinger.comfrom the host and container. - Test TCP 465, 587 and 25 at both boundaries.
- If 587 connects, test STARTTLS and authentication without sending.
- Check Invoice Ninja company-level SMTP fields for stale 465/SSL values.
- Send one approved test message.
- If SMTP accepts the message but the recipient does not receive it, investigate SPF, DKIM, DMARC, alignment and spam filtering.
A TCP timeout occurs before mailbox authentication and is not caused by Cloudflare DNS. DNS becomes relevant after the SMTP server accepts the message.
Invoice Ninja annual billing
- Confirm the intended client and contact.
- Search normal and recurring invoices for the domain to prevent duplicates.
- Resolve the live currency by code/name. Never hard-code a historical currency ID.
- Create an annual recurring template with
frequency_id=6,remaining_cycles=-1, andauto_bill=off. - Activate it with the supported bulk
startaction. - Create the initial annual invoice when required.
- For manual forwarding, mark it sent for bookkeeping without invoking email, download the PDF, and provide it to Kareem.
- Do not send, mark paid, void or alter balances without explicit instruction.
Handover checklist
- Domain ownership and renewal responsibility confirmed.
- Existing mail migration risk assessed.
- DNS backup captured.
- Hostinger ownership TXT verified if required.
- MX, single SPF, single DMARC and all DKIM values verified.
- Invoice Ninja uses 587/STARTTLS with peer verification.
- Outbound and inbound delivery tests pass.
- Duplicate billing checks complete.
- Live currency resolved.
- Credentials delivered securely.
- Changelog and service documentation updated.
Incident reference
On 31 July 2026, Invoice Ninja reset email failed because company-level SMTP retained Hostinger 465/SSL while the Hetzner host blocked port 465. The repair moved SMTP to 587/STARTTLS and enabled peer verification. A separate DNS audit found duplicate/malformed SPF, DMARC and legacy DKIM records; they were backed up, consolidated and verified through authoritative and public resolvers.