Skip to content

Commit e26a061

Browse files
committed
fix: use system DNS and check only valid 127.0.0.x codes for DNSBL
- Revert from hardcoded Cloudflare/Google DNS resolvers to system DNS - Match only 127.0.0.x (standard DNSBL listing codes), excluding non-standard codes like 127.255.255.254 (Spamhaus query refusal caused by ISP DNS issues like Free's)
1 parent 16c1a9e commit e26a061

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

services/security.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ import { randomBytes } from 'crypto';
44
import { resolve } from 'path';
55
import { readFile } from 'fs/promises';
66

7-
const dnsResolver = new dns.promises.Resolver({ timeout: 3000, tries: 1 });
8-
dnsResolver.setServers(['1.1.1.1', '8.8.8.8']);
9-
107
const DISPOSABLE_DOMAINS_URL = 'https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/master/disposable_email_blocklist.conf';
118
const LOCAL_DISPOSABLE_DOMAINS = new Set([
129
'ztzt.net',
@@ -124,8 +121,11 @@ async function checkDnsbl(ip, dnsbl) {
124121
if (octets[0] === 172 && octets[1] >= 16 && octets[1] <= 31) return false;
125122
if (octets[0] === 192 && octets[1] === 168) return false;
126123
const reverseHost = `${octets[3]}.${octets[2]}.${octets[1]}.${octets[0]}.${dnsbl}`;
127-
const addresses = await dnsResolver.resolve4(reverseHost);
128-
return addresses.some(addr => addr.startsWith('127.'));
124+
const addresses = await Promise.race([
125+
dns.promises.resolve4(reverseHost),
126+
new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), 3000)),
127+
]);
128+
return addresses.some(addr => addr.startsWith('127.0.0.'));
129129
} catch {
130130
return false;
131131
}

0 commit comments

Comments
 (0)