/** * Reputation check result information */ export interface IReputationResult { score: number; isSpam: boolean; isProxy: boolean; isTor: boolean; isVPN: boolean; country?: string; asn?: string; org?: string; blacklists?: string[]; timestamp: number; error?: string; } /** * Reputation threshold scores */ export declare enum ReputationThreshold { HIGH_RISK = 20,// Score below this is considered high risk MEDIUM_RISK = 50,// Score below this is considered medium risk LOW_RISK = 80 } /** * IP type classifications */ export declare enum IPType { RESIDENTIAL = "residential", DATACENTER = "datacenter", PROXY = "proxy", TOR = "tor", VPN = "vpn", UNKNOWN = "unknown" } /** * Options for the IP Reputation Checker */ export interface IIPReputationOptions { maxCacheSize?: number; cacheTTL?: number; dnsblServers?: string[]; highRiskThreshold?: number; mediumRiskThreshold?: number; lowRiskThreshold?: number; enableLocalCache?: boolean; enableDNSBL?: boolean; enableIPInfo?: boolean; } /** * Class for checking IP reputation of inbound email senders */ export declare class IPReputationChecker { private static instance; private reputationCache; private options; private storageManager?; private static readonly DEFAULT_DNSBL_SERVERS; private static readonly DEFAULT_OPTIONS; /** * Constructor for IPReputationChecker * @param options Configuration options * @param storageManager Optional StorageManager instance for persistence */ constructor(options?: IIPReputationOptions, storageManager?: any); /** * Get the singleton instance of the checker * @param options Configuration options * @param storageManager Optional StorageManager instance for persistence * @returns Singleton instance */ static getInstance(options?: IIPReputationOptions, storageManager?: any): IPReputationChecker; /** * Check an IP address's reputation * @param ip IP address to check * @returns Reputation check result */ checkReputation(ip: string): Promise; /** * Check an IP against DNS blacklists * @param ip IP address to check * @returns DNSBL check results */ private checkDNSBL; /** * Get information about an IP address * @param ip IP address to check * @returns IP information */ private getIPInfo; /** * Simplified method to determine country from IP * In a real implementation, this would use a geolocation database or service * @param ip IP address * @returns Country code */ private determineCountry; /** * Simplified method to determine organization from IP * In a real implementation, this would use an IP-to-org database or service * @param ip IP address * @returns Organization name */ private determineOrg; /** * Reverse an IP address for DNSBL lookups (e.g., 1.2.3.4 -> 4.3.2.1) * @param ip IP address to reverse * @returns Reversed IP for DNSBL queries */ private reverseIP; /** * Create an error result for when reputation check fails * @param ip IP address * @param errorMessage Error message * @returns Error result */ private createErrorResult; /** * Validate IP address format * @param ip IP address to validate * @returns Whether the IP is valid */ private isValidIPAddress; /** * Log reputation check to security logger * @param ip IP address * @param result Reputation result */ private logReputationCheck; /** * Save cache to disk or storage manager */ private saveCache; /** * Load cache from disk or storage manager */ private loadCache; /** * Get the risk level for a reputation score * @param score Reputation score (0-100) * @returns Risk level description */ static getRiskLevel(score: number): 'high' | 'medium' | 'low' | 'trusted'; /** * Update the storage manager after instantiation * This is useful when the storage manager is not available at construction time * @param storageManager The StorageManager instance to use */ updateStorageManager(storageManager: any): void; }