„update-fwds.py“ hinzufügen
This commit is contained in:
parent
6c8288945b
commit
01366bfc82
36
update-fwds.py
Normal file
36
update-fwds.py
Normal file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/python3
|
||||
# Put this script into a Crontab on your Mailcow instance.
|
||||
# I use an interval of 5 minutes.
|
||||
import requests
|
||||
import socket
|
||||
# Your Mailcow API key
|
||||
API_KEY=''
|
||||
# The forwarding host you would like to whitelist
|
||||
DYN_FWDHOST='dsl-dynamic-host.example.org'
|
||||
# The public-facing hostname of your Mailcow instance
|
||||
MAILCOW_HOSTNAME='mx.example.org'
|
||||
|
||||
s = requests.Session()
|
||||
s.headers.update({'X-API-Key': API_KEY})
|
||||
r = s.get('https://{}/api/v1/get/fwdhost/all'.format(MAILCOW_HOSTNAME))
|
||||
r.raise_for_status()
|
||||
current_fwdhosts = r.json()
|
||||
print('got current hosts: {}'.format(r.text))
|
||||
home_ip = socket.gethostbyname(DYN_FWDHOST)
|
||||
current_ips = [x['host'] for x in current_fwdhosts]
|
||||
if home_ip in current_ips:
|
||||
exit('Home IP already registered, exiting.')
|
||||
fwdhosts_to_delete = []
|
||||
if current_fwdhosts:
|
||||
for host in current_fwdhosts:
|
||||
if host['source'] == DYN_FWDHOST:
|
||||
fwdhosts_to_delete.append(host['host']) # ['host'] => IP
|
||||
d = s.post('https://{}/api/v1/delete/fwdhost'.format(MAILCOW_HOSTNAME), json=fwdhosts_to_delete)
|
||||
print('Deleted hosts {} with response {}:'.format(str(fwdhosts_to_delete), d.status_code))
|
||||
print(d.text)
|
||||
a = s.post('https://{}/api/v1/add/fwdhost'.format(MAILCOW_HOSTNAME), json={
|
||||
'filter_spam':'0',
|
||||
'hostname': DYN_FWDHOST
|
||||
})
|
||||
print('Added host {} with response {}'.format(DYN_FWDHOST, a.status_code))
|
||||
exit(0)
|
Loading…
Reference in New Issue
Block a user