feat(postfix): implement virtual mailbox configuration for Dovecot LMTP

Updates the Postfix configuration to correctly handle virtual domains when Dovecot LMTP is enabled, moving away from local system delivery settings.

- Removes `postfix_mail_domain` from `postfix_mydestination` to prevent conflicts with virtual domain handling.
- Updates `main.cf` to set `virtual_transport`, `virtual_mailbox_domains`, and `virtual_mailbox_maps` instead of `mailbox_transport`.
- Adds a new template `virtual_mailbox_maps.j2` to authorize specific users defined in `dovecot_users`.
- Adds tasks to generate the virtual mailbox map file and run `postmap` upon changes.
This commit is contained in:
2026-02-11 14:49:22 -03:00
parent c9892b9e51
commit f76e0a31ae
4 changed files with 39 additions and 8 deletions

View File

@@ -51,9 +51,6 @@ alias_database = hash:/etc/aliases
# Dovecot Integration
{% if dovecot_enabled | default(false) %}
# Use Maildir format
home_mailbox = Maildir/
{% if dovecot_postfix_sasl_enable | default(false) %}
# SASL Authentication via Dovecot
smtpd_sasl_type = dovecot
@@ -62,7 +59,9 @@ smtpd_sasl_auth_enable = yes
{% endif %}
{% if dovecot_postfix_lmtp_enable | default(false) %}
# Delivery via LMTP
mailbox_transport = lmtp:unix:private/dovecot-lmtp
# Virtual mailbox configuration for Dovecot users
virtual_mailbox_domains = {{ postfix_mail_domain }}
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
virtual_transport = lmtp:unix:private/dovecot-lmtp
{% endif %}
{% endif %}

View File

@@ -0,0 +1,8 @@
# Virtual mailbox maps for Postfix
# Ansible managed: {{ ansible_managed }}
# Format: user@domain OK
{% if dovecot_users is defined and dovecot_users | length > 0 %}
{% for user in dovecot_users %}
{{ user.name }}@{{ postfix_mail_domain }} OK
{% endfor %}
{% endif %}