Review: Hetzner: Set PTR/rDNS for mail.landscaping-assistant.app (v2)
Verdict: APPROVED
Re-review after NEEDS_REFINEMENT (review-1735-2026-07-03). Both issues resolved: AC4 (HELO/EHLO) removed, arch-edge-vps note created.
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- present, documents dependencies (Stalwart install, port 25 unblock)
- [x] Repo -- ldraney/pal-e-platform
- [x] User Story -- well-formed (As a platform admin / I want correct PTR/rDNS / So that outbound email passes FCrDNS)
- [x] Context -- explains FCrDNS requirement clearly
- [x] File Targets -- 1 manual action (Hetzner Console) + 1 code file (terraform comment)
- [x] Feature Flag -- none (appropriate for infra work)
- [x] Acceptance Criteria -- 3 items, all verifiable via dig
- [x] Test Expectations -- mxtoolbox FCrDNS validation
- [x] Constraints -- single PTR per IP acknowledged, A record dependency noted
- [x] Checklist -- present
- [x] Related -- present (stalwart-email project)
Traceability
- [x] story:custom-domain label -- "As platform admin, I want each app to send from its own domain so emails look professional and build domain reputation"
- [x] story note verified -- found in project-stalwart-email user-stories section (key: custom-domain)
- [x] arch:edge-vps label -- references the Hetzner edge VPS component
- [x] arch note verified -- arch-edge-vps note exists in pal-e-docs (project: stalwart-email, type: architecture)
- [x] Forgejo issue -- ldraney/pal-e-platform#500, open
File Targets
- [x] terraform/modules/hetzner-edge/main.tf -- verified: file exists at /home/ldraney/pal-e-platform/terraform/modules/hetzner-edge/main.tf, contains hcloud_server "edge" resource (60 lines). No PTR/rDNS comments exist yet; ticket correctly scopes adding them.
- [x] Manual: Hetzner Cloud Console rDNS -- not a file target, manual action appropriate for Hetzner panel PTR setting.
Repo Placement
Correct. Issue filed on pal-e-platform which owns the terraform code. Manual Hetzner Console action is appropriate here. No cross-repo concerns now that AC4 (HELO/EHLO) has been removed.
Dependencies
- Board item #1732 (issue #497) -- "Hetzner: Request port 25 outbound unblock" (backlog, arch:edge-vps). Prerequisite documented in Lineage.
- Board item #1733 (issue #498) -- Stalwart install (backlog, arch:stalwart). Prerequisite documented in Lineage.
- Board item #1737 or #1738 (pal-e-services DNS tickets) -- A record for mail.landscaping-assistant.app. Dependency documented in Constraints section.
All prerequisites documented. All prerequisite items remain in backlog -- ordering is correct (this ticket should not start until dependencies complete).
Acceptance Criteria
3 criteria, all verifiable via dig commands:
- AC1: PTR resolves to mail.landscaping-assistant.app -- verifiable via
dig -x 178.156.129.142 - AC2: A record resolves back to the IP -- verifiable via
dig mail.landscaping-assistant.app(verifies FCrDNS forward leg; depends on DNS ticket completion) - AC3: Specific dig command with expected output -- directly executable
Test expectation (mxtoolbox FCrDNS check) is valid and automatable. All criteria are agent-verifiable post-implementation.
Blast Radius
Only ONE PTR per IP (178.156.129.142). Multiple domains share this IP (palinks.app, landscaping-assistant.app, westsidekingsandqueens.com). Constraints section correctly acknowledges this and selects mail.landscaping-assistant.app as canonical. No downstream consumers affected -- PTR is for outbound mail identity only. No existing hcloud_rdns resources in the codebase.
Decomposition Assessment
1 code file target + 1 manual action. 3 acceptance criteria. Estimated agent work well under 5 minutes (add terraform comment + manual Hetzner Console action). No decomposition needed.
Recommendations
No action needed.