|
111 | 111 | {%- endif %} |
112 | 112 | {%- endfor %} |
113 | 113 | # |
114 | | -{%- macro extra_service(service_name, wrap=False, force_enable=False) -%} |
| 114 | +{%- set handled_extra_services = [] -%} |
| 115 | +{%- macro extra_service(service_name, wrap=False) -%} |
| 116 | +{%- do handled_extra_services.append(service_name) -%} |
115 | 117 | {%- set service = salt['pillar.get']('postfix:master_config:services:%s' % ( |
116 | 118 | service_name,), |
117 | 119 | postfix_master_services_defaults[service_name]) -%} |
118 | | -{%- if force_enable -%} |
119 | | -{%- do service.update({'enable': True}) -%} |
120 | | -{%- endif -%} |
121 | 120 | {%- if service.get('enable', True) -%} |
122 | 121 | {%- set comment = '' -%} |
123 | 122 | {%- else -%} |
|
149 | 148 | {%- else %} |
150 | 149 | {{ parameter_str }} |
151 | 150 | {%- endif -%} |
152 | | -{%- endmacro %} |
| 151 | +{%- endmacro -%} |
| 152 | + |
| 153 | +{#- Handle legacy configuration of services for backwards compatibility |
| 154 | + by extending the services dictionary accordingly #} |
| 155 | +{%- if salt['pillar.get']('postfix:policyd-spf:enabled', False) %} |
| 156 | +{%- do postfix_master_services_defaults.update({'policy-spf': { |
| 157 | + 'command': 'spawn', |
| 158 | + 'chroot': False, |
| 159 | + 'enable': True, |
| 160 | + 'type': 'unix', |
| 161 | + 'unpriv': False, |
| 162 | + 'user': 'nobody', |
| 163 | + 'argv': '%s/bin/policyd-spf' | format(postfix.xbin_prefix)}}) %} |
| 164 | +{%- endif %} |
| 165 | +{%- if master_config.get('enable_dovecot', False) -%} |
| 166 | +{%- set dovecot = master_config.get('dovecot', {} )%} |
| 167 | +{%- do postfix_master_services_defaults.update({'dovecot': { |
| 168 | + 'command': 'pipe', |
| 169 | + 'chroot': False, |
| 170 | + 'enable': True, |
| 171 | + 'extras': '-d ${recipient}', |
| 172 | + 'flags': dovecot.get('flags', 'DRhu'), |
| 173 | + 'type': 'unix', |
| 174 | + 'unpriv': False, |
| 175 | + 'user': '%s:%s' | format(dovecot.get('user', 'vmail'), dovecot.get('group', 'vmail')), |
| 176 | + 'argv': dovecot.get('argv', postfix.dovecot_deliver) }}) %} |
| 177 | +{%- endif %} |
153 | 178 | # ==================================================================== |
154 | 179 | # Interfaces to non-Postfix software. Be sure to examine the manual |
155 | 180 | # pages of the non-Postfix software to find out what options it wants. |
|
205 | 230 | {{ extra_service('scalemail-backend', 79) }} |
206 | 231 | # |
207 | 232 | {{ extra_service('mailman', 79) }} |
208 | | -{%- if salt['pillar.get']('postfix:policyd-spf:enabled', False) %} |
209 | | -# |
210 | | -{{ extra_service('policy-spf', False, True) }} |
211 | | -{%- endif %} |
212 | | -{%- if master_config.get('enable_dovecot', False) -%} |
213 | | -{%- set dovecot = master_config.get('dovecot', {} )%} |
214 | | -# |
215 | | -dovecot unix - n n - - pipe |
216 | | - flags={{ dovecot.get('flags', 'DRhu') }} user={{ dovecot.get('user', 'vmail') }}:{{ dovecot.get('group', 'vmail') }} argv={{ dovecot.get('argv', postfix.dovecot_deliver) ~ ' -d ${recipient}' }} |
217 | | -{% endif -%} |
| 233 | +{#- Handle custom services configured as pillars by extending the services |
| 234 | + dictionary for all defined services that have not been otherwise be |
| 235 | + handled yet. -#} |
| 236 | +{%- for service in salt['pillar.get']('postfix:master_config:services', []) if not service in handled_extra_services -%} |
| 237 | +{%- do postfix_master_services_defaults.update({service: salt['pillar.get']('postfix:master_config:services:%s' % (service,))}) -%} |
| 238 | +{%- endfor -%} |
| 239 | +{%- for service in postfix_master_services_defaults if not service in handled_extra_services and not service in postfix_master_services_order %} |
| 240 | +# |
| 241 | +{%- if postfix_master_services_defaults[service].get('wrap', False) %} |
| 242 | +{{ extra_service(service, 78) }} |
| 243 | +{%- else %} |
| 244 | +{{ extra_service(service) }} |
| 245 | +{%- endif %} |
| 246 | +{%- endfor %} |
0 commit comments