[Web][Postfix][Dovecot] Mail policies: compare addresses like Postfix, close bypasses via alias forms, temporary aliases, Sieve and cross-domain groups

This commit is contained in:
FreddleSpl0it committed 2026-11-07 17:51:27 +01:00
1 parent 4484cfcd42
commit 46c9ec90b0
22 files changed
+614 -141

No files matched your search

@@ -1,5 +1,6 @@
{# Fields of a mail policy (add modal, edit page): policy, id (prefix of the element ids), groups (choices: id, name,
domain, address), mailboxes (choices), ro, label_class. Groups of a list are sent apart as <list>_groups. #}
domain, address), mailboxes (choices), ro, label_class. Groups of a list are sent apart as <list>_groups; without
group choices (none in the domain, no access to groups) the group fields are left out and stay unchanged. #}
{% set entries = {} %}
{% set listed = {} %}
{% for key in ['send_allow', 'send_block', 'receive_allow', 'receive_block'] %}
@@ -35,13 +36,15 @@
<label class="control-label col-sm-2{{ label_class }}" for="{{ id }}_{{ key }}">{{ attribute(lang.mail_policy, list ~ '_' ~ side) }}</label>
<div class="col-sm-10">
<textarea class="form-control" rows="3" name="{{ key }}" id="{{ id }}_{{ key }}" placeholder="partner.example, user@example.org"{% if ro %} disabled{% endif %}>{{ attribute(entries, key) }}</textarea>
<small class="text-muted d-block mb-1">{{ lang.mail_policy.entries_info }}</small>
<small class="text-muted d-block mb-1">{{ attribute(lang.mail_policy, 'entries_info_' ~ side) }}</small>
{% if groups %}
{% if not ro %}<input type="hidden" name="{{ key }}_groups" value="">{% endif %}
<select data-live-search="true" data-width="100%" name="{{ key }}_groups" class="form-control mail-policy-groups" multiple title="{{ lang.mail_policy.groups }}"{% if ro %} disabled{% endif %}>
{% for group in groups %}
<option value="{{ group.id }}" data-domain="{{ group.domain }}"{% if group.id ~ '' in attribute(listed, key) %} selected{% endif %}>{{ group.name }}{% if group.address %} ({{ group.address }}){% endif %}</option>
{% endfor %}
</select>
{% endif %}
</div>
</div>
{% endfor %}
@@ -66,6 +69,7 @@
</select>
</div>
</div>
{% if groups %}
<div class="row mb-2">
<label class="control-label col-sm-2{{ label_class }}" for="{{ id }}_groups">{{ lang.mail_policy.groups }}</label>
<div class="col-sm-10">
@@ -77,3 +81,4 @@
</select>
</div>
</div>
{% endif %}