From 4190491e9638f56872f47d4e463c7124874112e4 Mon Sep 17 00:00:00 2001 From: bugspencor Date: Wed, 20 Dec 2023 11:25:54 +0100 Subject: [PATCH 1/2] Modify aliases template for regexp entries This was already discussed in #88 and was supposedly fixed, but did not work for me. Now aliases are possible with correct regexp format (no colon). Alias for postmaster is omitted in that case (incorrect regexp format with colon). Defaults are unchanged. --- README.md | 14 ++++++++++++++ templates/etc/aliases.j2 | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/README.md b/README.md index 412604c..4017c60 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,20 @@ Conditional relaying: result: "smtp:{{ ansible_lo['ipv4']['address'] }}:1025" ``` +Aliases with regexp table: + +```yaml +--- +- hosts: all + roles: + - oefenweb.postfix + vars: + postfix_default_database_type: regexp + postfix_aliases: + - user: /.*/ + alias: you@yourdomain.org +``` + For AWS SES support: ```yaml diff --git a/templates/etc/aliases.j2 b/templates/etc/aliases.j2 index 8dedf5e..30fed45 100644 --- a/templates/etc/aliases.j2 +++ b/templates/etc/aliases.j2 @@ -1,7 +1,13 @@ {{ ansible_managed | comment }} # See man 5 aliases for format +{% if postfix_default_database_type == "regexp" %} +{% for alias in postfix_aliases %} +{{ alias.user }} {{ alias.alias }} +{% endfor %} +{% else %} postmaster: root {% for alias in postfix_aliases %} {{ alias.user }}: {{ alias.alias }} {% endfor %} +{% endif %} From ac2fd67c36d4555496af5f389893fe0da9946614 Mon Sep 17 00:00:00 2001 From: bugspencor Date: Tue, 2 Jan 2024 13:38:38 +0100 Subject: [PATCH 2/2] New variable postfix_alias_database_type Makes it possible to specify alias database type independent of postfix_default_database_type. Use the new variable for the alias_maps and alias_database configuration options. Default is the value of "postfix_default_database_type". This is the minimum invasive change to support regexp expressions in aliases without changing other functionality of the role, especially default database types for other configuration mappings. --- README.md | 5 +++-- defaults/main.yml | 1 + handlers/main.yml | 2 +- tasks/main.yml | 2 +- templates/etc/aliases.j2 | 2 +- templates/etc/postfix/main.cf.j2 | 4 ++-- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4017c60..ed52d6a 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ None * `postfix_compatibility_level` [optional]: With backwards compatibility turned on (the compatibility_level value is less than the Postfix built-in value), Postfix looks for settings that are left at their implicit default value, and logs a message when a backwards-compatible default setting is required (e.g. `2`, `Postfix >= 3.0`) * `postfix_default_database_type` [default: `hash`]: The default database type for use in `newaliases`, `postalias` and `postmap` commands + * `postfix_alias_database_type` [default: `"{{ postfix_default_database_type }}"`]: The database type for aliases * `postfix_aliases` [default: `[]`]: Aliases to ensure present in `/etc/aliases` * `postfix_virtual_aliases` [default: `[]`]: Virtual aliases to ensure present in `/etc/postfix/virtual` * `postfix_sender_canonical_maps` [default: `[]`]: Sender address rewriting in `/etc/postfix/sender_canonical_maps` ([see](http://www.postfix.org/postconf.5.html#transport_maps)) @@ -176,7 +177,7 @@ Conditional relaying: result: "smtp:{{ ansible_lo['ipv4']['address'] }}:1025" ``` -Aliases with regexp table: +Aliases with regexp table (forward all local mail to specified address): ```yaml --- @@ -184,7 +185,7 @@ Aliases with regexp table: roles: - oefenweb.postfix vars: - postfix_default_database_type: regexp + postfix_alias_database_type: regexp postfix_aliases: - user: /.*/ alias: you@yourdomain.org diff --git a/defaults/main.yml b/defaults/main.yml index 0ae3c00..5dffdbe 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -11,6 +11,7 @@ postfix_hostname: "{{ ansible_fqdn }}" postfix_mailname: "{{ ansible_fqdn }}" postfix_default_database_type: hash +postfix_alias_database_type: "{{ postfix_default_database_type }}" postfix_aliases: [] postfix_virtual_aliases: [] postfix_sender_canonical_maps: [] diff --git a/handlers/main.yml b/handlers/main.yml index 1d6761e..cbafc2f 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -3,7 +3,7 @@ - name: new aliases ansible.builtin.command: > newaliases - when: postfix_default_database_type != 'regexp' + when: postfix_alias_database_type != 'regexp' changed_when: true - name: new virtual aliases diff --git a/tasks/main.yml b/tasks/main.yml index b7dd031..cc4bd46 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -96,7 +96,7 @@ path: "{{ postfix_aliases_file }}.db" register: _aliasesdb changed_when: not _aliasesdb.stat.exists - when: postfix_default_database_type == 'hash' + when: postfix_alias_database_type == 'hash' notify: - new aliases - restart postfix diff --git a/templates/etc/aliases.j2 b/templates/etc/aliases.j2 index 30fed45..f75b950 100644 --- a/templates/etc/aliases.j2 +++ b/templates/etc/aliases.j2 @@ -1,7 +1,7 @@ {{ ansible_managed | comment }} # See man 5 aliases for format -{% if postfix_default_database_type == "regexp" %} +{% if postfix_alias_database_type == "regexp" %} {% for alias in postfix_aliases %} {{ alias.user }} {{ alias.alias }} {% endfor %} diff --git a/templates/etc/postfix/main.cf.j2 b/templates/etc/postfix/main.cf.j2 index 0ca384e..d62d742 100644 --- a/templates/etc/postfix/main.cf.j2 +++ b/templates/etc/postfix/main.cf.j2 @@ -34,8 +34,8 @@ smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache myhostname = {{ postfix_hostname }} default_database_type = {{ postfix_default_database_type }} -alias_maps = {{ postfix_default_database_type }}:{{ postfix_aliases_file }} -alias_database = {{ postfix_default_database_type }}:{{ postfix_aliases_file }} +alias_maps = {{ postfix_alias_database_type }}:{{ postfix_aliases_file }} +alias_database = {{ postfix_alias_database_type }}:{{ postfix_aliases_file }} {% if postfix_virtual_aliases %} virtual_alias_maps = {{ postfix_default_database_type }}:{{ postfix_virtual_aliases_file }} {% endif %}