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.
This is not a Laravel/Composer package — it is a PHP plugin for Vexim, the web UI for virtual mail domains, and it wires Vexim's domain lifecycle into a PowerDNS database backend. There is no service provider, no config/ publishing, and no facade. Plan to deploy it as files in your Vexim tree, not via composer require.
Minimal steps:
domains / records schema. The plugin reads and writes those tables directly; it does not talk to the PowerDNS HTTP API or pdnsutil.domains, (b) the expected MX/SPF/A records appear in records, and (c) dig MX yourdomain.tld @your-ns returns them. This end-to-end check is the fastest way to validate credentials, schema assumptions, and caching.mail.example.com), the plugin now checks whether an authoritative parent zone (example.com) already exists and writes the record into that zone instead of creating a conflicting child zone. If you relied on the old behavior of always creating a separate zone per Vexim domain, audit your existing zones before upgrading.A/AAAA for the mail host, MX, SPF/TXT, and a DKIM placeholder. Centralize this in one function so you can extend it without hunting through hook callbacks.records rows. The PowerDNS records table has no universal unique constraint across versions, so guard with an existence check before insert.composer require this and call it from a controller — wrapping it is more work than reimplementing the two or three queries you actually need.dig against the actual authoritative nameserver. Passing DB assertions with a stale PowerDNS cache is a classic false positive..env keys, no migrations, no Artisan commands. Configuration is Vexim-side. Budget time for a thin wrapper if you need it inside a Laravel app.domains.name are stored without a trailing dot; record names in records.name are stored with one (and @-style roots must be expanded). Getting this wrong produces zones that look fine in the DB but never resolve.pdns_control purge (or restart) before concluding the plugin is broken. Debug the cache before debugging the code.SELECT/INSERT/UPDATE/DELETE on the PowerDNS database — not DDL. The plugin should never be in a position to alter the schema.dig against the authoritative NS → PowerDNS log. In that order; most reported "plugin bugs" are permission or caching issues.How can I help you explore Laravel packages today?