82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import type { EmailProcessingMode } from '../delivery/interfaces.ts'; | ||
|  | 
 | ||
|  | // Re-export EmailProcessingMode type
 | ||
|  | export type { EmailProcessingMode }; | ||
|  | 
 | ||
|  | 
 | ||
|  | /** | ||
|  |  * Domain rule interface for pattern-based routing | ||
|  |  */ | ||
|  | export interface IDomainRule { | ||
|  |   // Domain pattern (e.g., "*@example.com", "*@*.example.net")
 | ||
|  |   pattern: string; | ||
|  |    | ||
|  |   // Handling mode for this pattern
 | ||
|  |   mode: EmailProcessingMode; | ||
|  |    | ||
|  |   // Forward mode configuration
 | ||
|  |   target?: { | ||
|  |     server: string; | ||
|  |     port?: number; | ||
|  |     useTls?: boolean; | ||
|  |     authentication?: { | ||
|  |       user?: string; | ||
|  |       pass?: string; | ||
|  |     }; | ||
|  |   }; | ||
|  |    | ||
|  |   // MTA mode configuration
 | ||
|  |   mtaOptions?: IMtaOptions; | ||
|  |    | ||
|  |   // Process mode configuration
 | ||
|  |   contentScanning?: boolean; | ||
|  |   scanners?: IContentScanner[]; | ||
|  |   transformations?: ITransformation[]; | ||
|  |    | ||
|  |   // Rate limits for this domain
 | ||
|  |   rateLimits?: { | ||
|  |     maxMessagesPerMinute?: number; | ||
|  |     maxRecipientsPerMessage?: number; | ||
|  |   }; | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * MTA options interface | ||
|  |  */ | ||
|  | export interface IMtaOptions { | ||
|  |   domain?: string; | ||
|  |   allowLocalDelivery?: boolean; | ||
|  |   localDeliveryPath?: string; | ||
|  |   dkimSign?: boolean; | ||
|  |   dkimOptions?: { | ||
|  |     domainName: string; | ||
|  |     keySelector: string; | ||
|  |     privateKey?: string; | ||
|  |   }; | ||
|  |   smtpBanner?: string; | ||
|  |   maxConnections?: number; | ||
|  |   connTimeout?: number; | ||
|  |   spoolDir?: string; | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Content scanner interface | ||
|  |  */ | ||
|  | export interface IContentScanner { | ||
|  |   type: 'spam' | 'virus' | 'attachment'; | ||
|  |   threshold?: number; | ||
|  |   action: 'tag' | 'reject'; | ||
|  |   blockedExtensions?: string[]; | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Transformation interface | ||
|  |  */ | ||
|  | export interface ITransformation { | ||
|  |   type: string; | ||
|  |   header?: string; | ||
|  |   value?: string; | ||
|  |   domains?: string[]; | ||
|  |   append?: boolean; | ||
|  |   [key: string]: any; | ||
|  | } |