drupal / postfix_admin_console
A Drupal Recipe for adding the Postfix Admin console to a Drupal site.
Package info
git.drupalcode.org/project/postfix_admin_console.git
Type:drupal-recipe
pkg:composer/drupal/postfix_admin_console
Requires
- drupal/core: ^11.4 || ^12
- drupal/postfix_admin: ^1.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-04 05:29:26 UTC
README
postfix_admin_console is a Drupal Recipe package for adding the
postfix_admin module to an
existing Drupal site.
The package is intentionally small. The postfix_admin module contains the
PHP code, entity definitions, database updates, and runtime permissions. This
repository contains the Recipe package, its documentation, and the Docker demo
build files.
Versioned documentation for the 1.x release line is available on GitLab Pages.
Try the Docker demo
The public pixieworks/postfix_admin_console:latest
image provides a disposable Drupal site for evaluating the Postfix Admin Console
interface. It uses SQLite and applies both the base Recipe and the optional
dedicated-site preset. Docker on linux/amd64 or linux/arm64 is required.
Use latest to try the most recently published demo. Pull it again before
creating a new container to pick up a later publication. See the
Docker demo guide
for checking the installed package versions and selecting a specific image.
docker pull pixieworks/postfix_admin_console:latest
docker run --detach --rm \
--name postfix-admin-console \
-p 127.0.0.1:8080:80 \
pixieworks/postfix_admin_console:latest
docker logs postfix-admin-console
Wait for the first-install message, then open
http://localhost:8080/user/login?destination=/admin/structure/postfix_admin/domain.
The generated username and password appear in the container log; keep that log
private. Stop and discard the demo with docker stop postfix-admin-console.
The default --rm invocation uses no volume, so stopping it deletes its data.
This image is for local evaluation, not production or mail delivery. Do not
publish its port beyond the local host or enter real data.
See the Docker demo guide for credential options, restart behavior, and limitations.
Requirements and installation
- PHP 8.3 or later.
- Drupal 11.4 or later, including Drupal 12 when available.
- Postfix Admin and Postfix Admin Console
1.0.0or later in the1.xrelease line.
Install the stable releases from the directory containing the Drupal site's
composer.json:
composer require 'drush/drush:^13' 'drupal/postfix_admin:^1.0' 'drupal/postfix_admin_console:^1.0'
cd web
../vendor/bin/drush recipe ../recipes/postfix_admin_console
The 1.0.0 releases do not require Composer beta stability flags.
Drupal's recommended project template configures recipe unpacking, so the
package is available at recipes/postfix_admin_console after Composer runs.
Projects with a custom Composer layout should use the equivalent path where
the recipe was installed.
For development, a local checkout can be tested with a Composer path repository:
composer config repositories.postfix_admin_console path /path/to/postfix_admin_console
composer require 'drush/drush:^13' 'drupal/postfix_admin:^1.0' 'drupal/postfix_admin_console:@dev'
cd web
../vendor/bin/drush recipe /path/to/postfix_admin_console
Current scope
- Drupal 11.4 and later.
- Install the
postfix_adminmodule through Composer. - Create a
postfix_administratorrole with only the module permissions needed to operate Postfix Admin.
After this package is available in the Drupal codebase, run Drush from the
Drupal web root (usually web):
../vendor/bin/drush recipe ../recipes/postfix_admin_console
The Recipe does not create users or grant the role to an existing user. Review the role and assign it through the site's normal user administration workflow.
The Recipe has no update hooks. It installs the module and creates the role; module updates and site-specific data migrations remain the responsibility of the module and the site owner.
To run the disposable SQLite installation test locally:
tests/install-recipe.sh
The test creates a temporary Drupal 11.4 site, applies the local Recipe, and removes the site and database when it exits.
Pass --existing to pre-populate the disposable site with a module, content,
user, and role before applying the Recipe. The test then verifies that those
existing values are preserved:
tests/install-recipe.sh --existing
The optional dedicated-site preset is applied after the base Recipe. It installs
Drupal core's experimental default_admin theme, sets it as both themes,
enables its primary and secondary local-task blocks, enables dark mode, and
points the site front page to the Postfix Admin domain list. This makes the four
resource-list tabs, Settings tab, and contextual + action available in the
administration UI.
Anonymous visitors can use /user/login:
../vendor/bin/drush recipe ../recipes/postfix_admin_console/examples/dedicated-site
The dedicated preset can also be exercised end-to-end with the disposable test:
tests/install-recipe.sh --dedicated
The dedicated preset lives in examples/dedicated-site/recipe.yml. Keep it
separate from the base Recipe so existing sites are never changed by default.
The preset does not change Drupal's post-login redirect. A distribution that
requires every operator to land on the Domain list should provide that
site-wide login behavior separately.
The Recipe does not include Drupal core, a database dump, a theme, mail transport, Postfix, Dovecot, DNS, or site secrets.
Development
The module dependency and permission list are recorded in
docs/module-compatibility.md
and the minimal Recipe is defined in recipe.yml.
License
GPL-2.0-or-later. See LICENSE.txt.