102 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| assert node.has_bundle('mailserver')
 | |
| 
 | |
| file_options = {
 | |
|     'needs': [
 | |
|         'pkg_apt:postfix',
 | |
|     ],
 | |
|     'needed_by': [
 | |
|         'svc_systemd:postfix',
 | |
|     ],
 | |
|     'triggers': [
 | |
|         'svc_systemd:postfix:restart',
 | |
|     ],
 | |
| }
 | |
| 
 | |
| files = {
 | |
|     '/etc/postfix/main.cf': {
 | |
|         'content_type': 'mako',
 | |
|         'context': {
 | |
|             'hostname': node.metadata.get('mailserver/hostname'),
 | |
|             'debug': node.metadata.get('mailserver/debug')
 | |
|         },
 | |
|         **file_options,
 | |
|     },
 | |
|     '/etc/postfix/master.cf': {
 | |
|         **file_options,
 | |
|     },
 | |
|     '/etc/postfix/virtual_mailbox_domains.cf': {
 | |
|         'content_type': 'mako',
 | |
|         'context': node.metadata.get('mailserver/database'),
 | |
|         **file_options,
 | |
|     },
 | |
|     '/etc/postfix/virtual_mailbox_maps.cf': {
 | |
|         'content_type': 'mako',
 | |
|         'context': node.metadata.get('mailserver/database'),
 | |
|         **file_options,
 | |
|     },
 | |
|     '/etc/postfix/virtual_alias_maps.cf': {
 | |
|         'content_type': 'mako',
 | |
|         'context': node.metadata.get('mailserver/database'),
 | |
|         **file_options,
 | |
|     },
 | |
| }
 | |
| 
 | |
| svc_systemd['postfix'] = {
 | |
|     'needs': [
 | |
|         'postgres_db:mailserver',
 | |
|     ],
 | |
| }
 | |
| 
 | |
| actions['test_postfix_config'] = {
 | |
|     'command': 'false',
 | |
|     'unless': "postconf check | grep -v 'symlink leaves directory' | wc -l | grep -q '^0$'",
 | |
|     'needs': [
 | |
|         'svc_systemd:postfix',
 | |
|     ],
 | |
| }
 | |
| actions['test_virtual_mailbox_domains'] = {
 | |
|     'command': 'false',
 | |
|     'unless': "postmap -q example.com pgsql:/etc/postfix/virtual_mailbox_domains.cf | grep -q '^example.com$'",
 | |
|     'needs': [
 | |
|         'svc_systemd:postfix',
 | |
|         'action:mailserver_update_test_pw',
 | |
|     ],
 | |
| }
 | |
| actions['test_virtual_mailbox_maps'] = {
 | |
|     'command': 'false',
 | |
|     'unless': "postmap -q bw_test_user@example.com pgsql:/etc/postfix/virtual_mailbox_maps.cf | grep -q '^bw_test_user@example.com$'",
 | |
|     'needs': [
 | |
|         'svc_systemd:postfix',
 | |
|         'action:mailserver_update_test_pw',
 | |
|     ],
 | |
| }
 | |
| actions['test_virtual_alias_maps'] = {
 | |
|     'command': 'false',
 | |
|     'unless': "postmap -q bw_test_alias@example.com pgsql:/etc/postfix/virtual_alias_maps.cf | grep -q '^somewhere@example.com$'",
 | |
|     'needs': [
 | |
|         'svc_systemd:postfix',
 | |
|         'action:mailserver_update_test_pw',
 | |
|     ],
 | |
| }
 | |
| 
 | |
| if node.has_bundle('telegraf'):
 | |
|     actions['postfix_setfacl_telegraf'] = {
 | |
|         'command': 'setfacl -Rm g:telegraf:rX /var/spool/postfix',
 | |
|         'unless': 'getfacl -a /var/spool/postfix | grep -q "^group:telegraf:r-x$"',
 | |
|         'needs': [
 | |
|             'pkg_apt:acl',
 | |
|             'svc_systemd:postfix',
 | |
|             'svc_systemd:postfix:reload',
 | |
|             'svc_systemd:postfix:restart',
 | |
|         ],
 | |
|     }
 | |
|     actions['postfix_setfacl_default_telegraf'] = {
 | |
|         'command': 'setfacl -dm g:telegraf:rX /var/spool/postfix',
 | |
|         'unless': 'getfacl -d /var/spool/postfix | grep -q "^group:telegraf:r-x$"',
 | |
|         'needs': [
 | |
|             'pkg_apt:acl',
 | |
|             'svc_systemd:postfix',
 | |
|             'svc_systemd:postfix:reload',
 | |
|             'svc_systemd:postfix:restart',
 | |
|         ],
 | |
|     }
 |