94 lines
2.7 KiB
Python
94 lines
2.7 KiB
Python
defaults = {}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'mailserver/autoconfig_hostname',
|
|
)
|
|
def hostname(metadata):
|
|
return {
|
|
'mailserver': {
|
|
'autoconfig_hostname': f"autoconfig.{metadata.get('mailserver/hostname')}",
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'nginx/vhosts',
|
|
)
|
|
def nginx(metadata):
|
|
return {
|
|
'nginx': {
|
|
'vhosts': {
|
|
metadata.get('mailserver/autoconfig_hostname'): {
|
|
'content': 'mailserver-autodiscover/vhost.conf',
|
|
'context': {
|
|
'root': f"/var/www/{metadata.get('mailserver/autoconfig_hostname')}",
|
|
},
|
|
'check_path': '/mail/config-v1.1.xml',
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'letsencrypt/domains',
|
|
)
|
|
def letsencrypt(metadata):
|
|
return {
|
|
'letsencrypt': {
|
|
'domains': {
|
|
metadata.get('mailserver/autoconfig_hostname'): {
|
|
'aliases': {
|
|
*{
|
|
f'autoconfig.{domain}'
|
|
for domain in metadata.get('mailserver/domains')
|
|
},
|
|
*{
|
|
f'autodiscover.{domain}'
|
|
for domain in metadata.get('mailserver/domains')
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'dns',
|
|
)
|
|
def autoconfig(metadata):
|
|
dns = {}
|
|
|
|
for domain in metadata.get('mailserver/domains'):
|
|
dns.update({
|
|
f'autoconfig.{domain}': {
|
|
'CNAME': {f"{metadata.get('mailserver/autoconfig_hostname')}."},
|
|
},
|
|
f'autodiscover.{domain}': {
|
|
'CNAME': {f"{metadata.get('mailserver/autoconfig_hostname')}."},
|
|
},
|
|
f'_autodiscover._tcp.{domain}': {
|
|
'SRV': {f"0 1 443 {metadata.get('mailserver/autoconfig_hostname')}."},
|
|
},
|
|
f'_smtp._tcp.{domain}': {
|
|
'SRV': {f"0 1 25 {metadata.get('mailserver/hostname')}."},
|
|
},
|
|
f'_smtps._tcp.{domain}': {
|
|
'SRV': {f"0 1 465 {metadata.get('mailserver/hostname')}."},
|
|
},
|
|
f'_submission._tcp.{domain}': {
|
|
'SRV': {f"0 1 587 {metadata.get('mailserver/hostname')}."},
|
|
},
|
|
f'_imap._tcp.{domain}': {
|
|
'SRV': {f"0 1 143 {metadata.get('mailserver/hostname')}."},
|
|
},
|
|
f'_imaps._tcp.{domain}': {
|
|
'SRV': {f"0 1 993 {metadata.get('mailserver/hostname')}."},
|
|
},
|
|
})
|
|
|
|
return {
|
|
'dns': dns,
|
|
}
|