import type { Email } from '../core/classes.email.js'; /** * SPF result qualifiers */ export declare enum SpfQualifier { PASS = "+", NEUTRAL = "?", SOFTFAIL = "~", FAIL = "-" } /** * SPF mechanism types */ export declare enum SpfMechanismType { ALL = "all", INCLUDE = "include", A = "a", MX = "mx", IP4 = "ip4", IP6 = "ip6", EXISTS = "exists", REDIRECT = "redirect", EXP = "exp" } /** * SPF mechanism definition */ export interface SpfMechanism { qualifier: SpfQualifier; type: SpfMechanismType; value?: string; } /** * SPF record parsed data */ export interface SpfRecord { version: string; mechanisms: SpfMechanism[]; modifiers: Record; } /** * SPF verification result */ export interface SpfResult { result: 'pass' | 'neutral' | 'softfail' | 'fail' | 'temperror' | 'permerror' | 'none'; explanation?: string; domain: string; ip: string; record?: string; error?: string; } /** * Class for verifying SPF records */ export declare class SpfVerifier { private dnsManager?; private lookupCount; constructor(dnsManager?: any); /** * Parse SPF record from TXT record * @param record SPF TXT record * @returns Parsed SPF record or null if invalid */ parseSpfRecord(record: string): SpfRecord | null; /** * Check if IP is in CIDR range * @param ip IP address to check * @param cidr CIDR range * @returns Whether the IP is in the CIDR range */ private isIpInCidr; /** * Check if a domain has the specified IP in its A or AAAA records * @param domain Domain to check * @param ip IP address to check * @returns Whether the domain resolves to the IP */ private isDomainResolvingToIp; /** * Verify SPF for a given email with IP and helo domain * @param email Email to verify * @param ip Sender IP address * @param heloDomain HELO/EHLO domain used by sender * @returns SPF verification result */ verify(email: Email, ip: string, heloDomain: string): Promise; /** * Check SPF record against IP address * @param spfRecord Parsed SPF record * @param domain Domain being checked * @param ip IP address to check * @returns SPF result */ private checkSpfRecord; /** * Check if email passes SPF verification * @param email Email to verify * @param ip Sender IP address * @param heloDomain HELO/EHLO domain used by sender * @returns Whether email passes SPF */ verifyAndApply(email: Email, ip: string, heloDomain: string): Promise; }