Skip to content

Commit 68bb801

Browse files
committed
feat(states): add exim.mailname and exim.aliases states
1 parent 63a132e commit 68bb801

File tree

8 files changed

+87
-0
lines changed

8 files changed

+87
-0
lines changed

docs/README.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ Installs the exim package.
5757
^^^^^^^^^^^^^^^
5858
This state manages the file ``update-exim4.conf.conf`` under ``/etc/exim4`` (template found in "exim/files"). The configuration is populated by values in "exim/map.jinja" based on the package's default values (and RedHat, Debian, Suse and Arch family distribution specific values), which can then be overridden by values of the same name in pillar.
5959

60+
``exim.mailname``
61+
^^^^^^^^^^^^^^^^^
62+
This state manages the ``/etc/mailname`` value used by Debian hosts.
63+
64+
``exim.aliases``
65+
^^^^^^^^^^^^^^^^
66+
This state manages the hosts mail aliases.
67+
6068
``exim.service``
6169
^^^^^^^^^^^^^^^^
6270
Manages the startup and running state of the exim service.

exim/config/aliases.sls

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_package_install = tplroot ~ '.package.install' %}
7+
{%- from tplroot ~ "/map.jinja" import exim with context %}
8+
9+
{%- set virtual_aliases = salt['pillar.get']('exim:virtual_aliases', {}) %}
10+
11+
{%- for name, targets in salt['pillar.get']('exim:aliases', {}) | dictsort %}
12+
exim/alias/{{ name }}:
13+
{%- if not targets %}
14+
alias.absent:
15+
- name: {{ name }}
16+
{%- else %}
17+
alias.present:
18+
- name: {{ name }}
19+
- target:
20+
{%- if targets is list %}
21+
{%- for target in targets %}
22+
- {{ target }}
23+
{%- endfor %}
24+
{%- else %}
25+
{{ targets }}
26+
{%- endif %}
27+
{%- endif %}
28+
{%- endfor %}
29+
30+
{%- if virtual_aliases %}
31+
exim/virtual-aliases/dir:
32+
file.directory:
33+
- name: {{ exim.virtual_aliases_dir }}
34+
{%- endif %}
35+
36+
{%- for domain, aliases in virtual_aliases | dictsort %}
37+
exim/virtual-aliases/{{ domain }}:
38+
file.managed:
39+
- name: {{ exim.virtual_aliases_dir }}/{{ domain }}
40+
- source: salt://exim/files/virtual_aliases.jinja
41+
- template: jinja
42+
- context:
43+
aliases: {{ aliases|json }}
44+
domain: {{ domain }}
45+
{%- endfor %}

exim/config/init.sls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33

44
include:
55
- .file
6+
- .mailname
7+
- .aliases

exim/config/mailname.sls

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_package_install = tplroot ~ '.package.install' %}
7+
{%- from tplroot ~ "/map.jinja" import exim with context %}
8+
9+
{%- set mailname = salt['pillar.get']('exim:mailname', salt['grains.get']('fqdn')) %}
10+
11+
exim/config/mailname:
12+
file.managed:
13+
- name: {{ exim.mailname_file }}
14+
- contents: {{ mailname }}

exim/osfamilymap.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Debian:
1616
service: exim4
1717
config_dir: /etc/exim4
1818
config_file: update-exim4.conf.conf
19+
mailname_file: /etc/mailname
20+
virtual_aliases_dir: /etc/exim4/virtual
1921
sub_dirs:
2022
- main
2123
- acl

pillar.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ exim:
1414
relay_domains: ''
1515
relay_nets: ''
1616
smarthost: ''
17+
mailname: foo.bar.baz
18+
aliases:
19+
1720
files:
1821
main:
1922
'01_exim4-config_listmacrosdefs': |

test/integration/default/controls/config_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,14 @@
88
# Custom config
99
its('content') { should include "dc_hide_mailname='false'" }
1010
end
11+
12+
describe file('/etc/mailname') do
13+
# Custom config
14+
its('content') { should include 'foo.bar.baz' }
15+
end
16+
17+
describe file('/etc/aliases') do
18+
# Custom config
19+
its('content') { should include 'root: [email protected]' }
20+
end
1121
end

test/salt/pillar/exim.sls

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@ exim:
55
config:
66
configtype: 'satellite'
77
hide_mailname: 'false'
8+
mailname: foo.bar.baz
9+
aliases:
10+

0 commit comments

Comments
 (0)