mrsleeps/vexim-web-plugin-pdns
A Vexim web interface plugin that adds PowerDNS DNS management, letting you create and edit zones and records alongside your virtual mail domains from one admin panel.
Architecture fit vexim-web-plugin-pdns is a PHP plugin that bridges the Vexim mail-administration UI with a PowerDNS backend. It is not a Laravel-native package: expect no service provider, facade, config publication, or Eloquent models. Integration into a Laravel app means wrapping it behind an adapter/repository rather than consuming it idiomatically. Two schema-level frictions matter for architecture fit:
domains table. Any Laravel-side integration must resolve this collision explicitly (connection separation or table aliasing) before the package is usable.Integration feasibility v1.2.1 is a single-PR patch release (PR #24, "Respect authoritative parent zones for child-domain records"). The commit surface is narrow and there are no stated breaking changes, no schema migrations, and no API signature changes mentioned. Feasibility is high provided the change is read-path only. That is the central unknown: if the plugin now resolves child-domain records against an authoritative parent zone, the behavior can alter which zone a record is attributed to on both display and write paths. Confirm before adopting.
Technical risk
Key questions
mysql_* calls?Stack fit
Treat the plugin as an infrastructure-side component, not an application dependency. Recommended pattern: keep it outside the Laravel service container and expose only a thin, typed interface (zone lookup, record CRUD) that Laravel code calls. Do not let controllers touch Vexim/PowerDNS tables directly. Configure two distinct database connections — one for the Vexim schema, one for the PowerDNS schema — to neutralize the domains table collision.
Migration path
Pin explicitly in composer.json (or vendor as a submodule if it is not Packagist-distributed). The 1.2.0 → 1.2.1 step requires no data migration on the evidence available; verify by diffing the release for migration or SQL files before merge. Because this is a patch that changes resolution behavior, treat it as a behavioral migration and gate it behind a feature flag if the code permits.
Compatibility
Verify three axes before rollout: PHP runtime version against the plugin's actual syntax level, PowerDNS schema version (the records/domains layout differs across 4.x), and MySQL vs MariaDB behavior for any GROUP BY/subquery logic in the zone traversal. None of this is documented in the release note, so it must be checked against source.
Sequencing
Maintenance Single-maintainer project (@MrSleeps), low release cadence, patch-style releases. Recent activity is a positive signal, but bus factor is 1 and there is no vendor backing. Budget for the possibility of forking; keep the integration surface thin so a fork remains cheap.
Support GitHub issues and PRs only — no SLA, no commercial support channel. Internal ownership must be assigned explicitly; do not rely on upstream responsiveness for production incidents.
Scaling Parent-zone resolution adds traversal work per lookup. The risk concentrates in bulk paths: zone exports, record sync jobs, and any admin list view that renders records across many domains. Instrument query counts on those paths before and after the upgrade; an N+1 introduced by parent traversal will not appear in a single-record smoke test.
Failure modes
Ramp-up Low for a PHP developer — the code is procedural PHP over MySQL. The real prerequisite is DNS competence: zone delegation, SOA/NS authority, and PowerDNS record semantics. Assign review to someone with authoritative-DNS experience; a competent PHP reviewer without that background will not catch the failure modes above.
How can I help you explore Laravel packages today?