diff --git a/extras/kolab_policy_spf b/extras/kolab_policy_spf --- a/extras/kolab_policy_spf +++ b/extras/kolab_policy_spf @@ -7,9 +7,14 @@ import json import time import sys +import logging +from logging.handlers import SysLogHandler import requests +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +logger.addHandler(SysLogHandler()) def read_request_input(): """ @@ -23,6 +28,7 @@ while not end_of_request: if (time.time() - start_time) >= 10: + logger.warning("policy/spf took too long reading the request.") print("action=DEFER_IF_PERMIT Temporary error, try again later.\n") sys.stdout.flush() sys.exit(0) @@ -57,6 +63,7 @@ ) # pylint: disable=broad-except except Exception: + logger.warning("policy/spf request failed.") print("action=DEFER_IF_PERMIT Temporary error, try again later.\n") sys.stdout.flush() sys.exit(0) @@ -65,6 +72,7 @@ R = json.loads(RESPONSE.text) # pylint: disable=broad-except except Exception: + logger.warning("Failed to load json from policy/spf request.") print("action=DEFER_IF_PERMIT Temporary error, try again later.\n") sys.stdout.flush() sys.exit(0) @@ -73,10 +81,15 @@ for prepend in R['prepend']: print("action=PREPEND {0}".format(prepend)) + if 'log' in R: + for line in R['log']: + logger.warning(line) + if RESPONSE.ok: print("action={0}\n".format(R['response'])) else: print("action={0} {1}\n".format(R['response'], R['reason'])) + logger.warning("spf failed with reason: %s" % R['reason']) sys.stdout.flush() sys.exit(0) diff --git a/src/app/Http/Controllers/API/V4/PolicyController.php b/src/app/Http/Controllers/API/V4/PolicyController.php --- a/src/app/Http/Controllers/API/V4/PolicyController.php +++ b/src/app/Http/Controllers/API/V4/PolicyController.php @@ -299,6 +299,7 @@ [ 'response' => 'DEFER_IF_PERMIT', 'reason' => 'Temporary error. Please try again later.' + 'log' => ["SPF: Request without client_address: " . json_encode($data)] ], 403 ); @@ -314,6 +315,7 @@ [ 'response' => 'DEFER_IF_PERMIT', 'reason' => 'Temporary error. Please try again later.' + 'log' => ["SPF: Request without recognizable network: " . json_encode($data)] ], 403 );