105 lines
2.7 KiB
Python
105 lines
2.7 KiB
Python
from bundlewrap.metadata import atomic
|
|
|
|
defaults = {
|
|
'apt': {
|
|
'packages': {
|
|
'dovecot-fts-xapian': {},
|
|
'dovecot-imapd': {},
|
|
'dovecot-lmtpd': {},
|
|
'dovecot-managesieved': {},
|
|
'dovecot-pgsql': {},
|
|
'dovecot-sieve': {},
|
|
},
|
|
},
|
|
'icinga2_api': {
|
|
'dovecot': {
|
|
'services': {
|
|
'DOVECOT PROCESS': {
|
|
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit dovecot',
|
|
},
|
|
'IMAP CONNECT': {
|
|
'check_command': 'check_imap',
|
|
'vars.imap_port': 143,
|
|
'vars.notification.sms': True,
|
|
},
|
|
'IMAPS CONNECT': {
|
|
'check_command': 'check_imap',
|
|
'vars.imap_port': 993,
|
|
'vars.imap_ssl': True,
|
|
'vars.notification.sms': True,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'letsencrypt': {
|
|
'reload_after': {
|
|
'dovecot',
|
|
},
|
|
},
|
|
'systemd-timers': {
|
|
'timers': {
|
|
'dovecot_fts_optimize': {
|
|
'command': [
|
|
'/usr/bin/doveadm fts optimize -A',
|
|
],
|
|
'when': '02:{}:00'.format(node.magic_number % 60),
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
if node.has_bundle('postfixadmin'):
|
|
defaults['dovecot'] = {
|
|
'database': {
|
|
'dbname': 'postfixadmin',
|
|
'dbuser': 'postfixadmin',
|
|
},
|
|
}
|
|
|
|
if node.has_bundle('telegraf'):
|
|
defaults['telegraf'] = {
|
|
'input_plugins': {
|
|
'builtin': {
|
|
'dovecot': [{
|
|
'type': 'global',
|
|
}],
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'dovecot/admin_email',
|
|
'dovecot/database/dbpass',
|
|
)
|
|
def import_database_settings_from_postfixadmin(metadata):
|
|
if not node.has_bundle('postfixadmin'):
|
|
raise DoNotRunAgain
|
|
|
|
return {
|
|
'dovecot': {
|
|
'admin_email': metadata.get('postfixadmin/admin_email'),
|
|
'database': {
|
|
'dbpass': metadata.get('postgresql/roles/postfixadmin/password'),
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'firewall/port_rules',
|
|
'firewall/port_rules',
|
|
'firewall/port_rules',
|
|
)
|
|
def firewall(metadata):
|
|
return {
|
|
'firewall': {
|
|
'port_rules': {
|
|
# imap(s)
|
|
'143/tcp': atomic(metadata.get('dovecot/restrict-to', {'*'})),
|
|
'993/tcp': atomic(metadata.get('dovecot/restrict-to', {'*'})),
|
|
# managesieve
|
|
'4190/tcp': atomic(metadata.get('dovecot/restrict-to', {'*'})),
|
|
},
|
|
},
|
|
}
|