include: - firewall.public.pop3s - firewall.public.imaps - systemd.helpers vmail: group.present: - system: False user.present: - system: False - gid: vmail - home: /data/vmail - createhome: False - require: - group: vmail /data/vmail: file.directory: - user: vmail - group: vmail - require: - user: vmail - group: vmail dovecot: pkg.installed: - pkgs: - dovecot-core - dovecot-imapd - dovecot-lmtpd - dovecot-mysql - dovecot-pop3d - require: - user: vmail - group: vmail - file: /data/vmail service.running: - require: - file: /etc/systemd/system/dovecot.socket - watch: - pkg: dovecot # Stop systemd from listening on the dovecot ports. /etc/systemd/system/dovecot.socket: file.symlink: - target: /dev/null - require: - pkg: dovecot - onchanges_in: - module: reload_systemd {% for file in [ 'dovecot.conf', 'conf.d/10-auth.conf', 'conf.d/10-mail.conf', 'conf.d/10-master.conf', 'conf.d/10-ssl.conf', 'conf.d/auth-sql.conf.ext', ] %} /etc/dovecot/{{ file }}: file.managed: - source: salt://vmail/files/{{ grains['osfinger'] }}/dovecot/{{ file }} - template: jinja - require: - pkg: dovecot - watch_in: - service: dovecot {% endfor %} /etc/dovecot/dovecot-sql.conf.ext: file.managed: - source: salt://vmail/files/{{ grains['osfinger'] }}/dovecot/dovecot-sql.conf.ext - mode: 640 - group: dovecot - template: jinja - context: db_host: {{ pillar['vmail']['db_host'] }} db_name: {{ pillar['vmail']['db_name'] }} db_user: {{ pillar['vmail']['db_user'] }} db_password: {{ pillar['vmail']['db_password'] }} - require: - pkg: dovecot - watch_in: - service: dovecot