Review: Hetzner: Set PTR/rDNS for mail.landscaping-assistant.app (v2)

review-1735-2026-07-03-v2 Review

review ready

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.