PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $database_user, $database_pass, $opt); } catch (PDOException $e) { error_log("MAILPOLICY: " . $e . PHP_EOL); http_response_code(501); exit; } if (!isset($_POST['request']) || $_POST['request'] !== 'smtpd_access_policy') { http_response_code(400); exit; } $value = fn(string $key): string => is_string($_POST[$key] ?? null) ? $_POST[$key] : ''; try { $policy = \Mailcow\MailPolicy\MailPolicyModule::create($pdo, \Mailcow\Core\Context::system()); echo $policy->api->check($value('sender'), $value('recipient'), $value('sasl_username'), (int)$value('server_port'), $value('helo_name')); } catch (Throwable $e) { // the policy service answers with a temporary error error_log("MAILPOLICY: " . $e->getMessage() . PHP_EOL); http_response_code(500); }