82 lines
1.6 KiB
TypeScript
82 lines
1.6 KiB
TypeScript
import type { EmailProcessingMode } from '../delivery/interfaces.js';
|
|
|
|
// 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;
|
|
} |