266 lines
4.6 KiB
TypeScript
266 lines
4.6 KiB
TypeScript
|
import type { IBaseConfig, ITlsConfig, IQueueConfig, IRateLimitConfig, IMonitoringConfig } from './base.config.js';
|
||
|
|
||
|
/**
|
||
|
* Email service configuration
|
||
|
*/
|
||
|
export interface IEmailConfig extends IBaseConfig {
|
||
|
/**
|
||
|
* Whether to use MTA for sending emails
|
||
|
*/
|
||
|
useMta?: boolean;
|
||
|
|
||
|
/**
|
||
|
* MTA configuration
|
||
|
*/
|
||
|
mtaConfig?: IMtaConfig;
|
||
|
|
||
|
/**
|
||
|
* Template configuration
|
||
|
*/
|
||
|
templateConfig?: {
|
||
|
/**
|
||
|
* Default sender email address
|
||
|
*/
|
||
|
from?: string;
|
||
|
|
||
|
/**
|
||
|
* Default reply-to email address
|
||
|
*/
|
||
|
replyTo?: string;
|
||
|
|
||
|
/**
|
||
|
* Default footer HTML
|
||
|
*/
|
||
|
footerHtml?: string;
|
||
|
|
||
|
/**
|
||
|
* Default footer text
|
||
|
*/
|
||
|
footerText?: string;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Whether to load templates from directory
|
||
|
*/
|
||
|
loadTemplatesFromDir?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Directory path for email templates
|
||
|
*/
|
||
|
templatesDir?: string;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* MTA configuration
|
||
|
*/
|
||
|
export interface IMtaConfig {
|
||
|
/**
|
||
|
* SMTP server configuration
|
||
|
*/
|
||
|
smtp?: {
|
||
|
/**
|
||
|
* Whether to enable the SMTP server
|
||
|
*/
|
||
|
enabled?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Port to listen on
|
||
|
*/
|
||
|
port?: number;
|
||
|
|
||
|
/**
|
||
|
* SMTP server hostname
|
||
|
*/
|
||
|
hostname?: string;
|
||
|
|
||
|
/**
|
||
|
* Maximum allowed email size in bytes
|
||
|
*/
|
||
|
maxSize?: number;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* TLS configuration
|
||
|
*/
|
||
|
tls?: ITlsConfig;
|
||
|
|
||
|
/**
|
||
|
* Outbound email configuration
|
||
|
*/
|
||
|
outbound?: {
|
||
|
/**
|
||
|
* Maximum concurrent sending jobs
|
||
|
*/
|
||
|
concurrency?: number;
|
||
|
|
||
|
/**
|
||
|
* Retry configuration
|
||
|
*/
|
||
|
retries?: {
|
||
|
/**
|
||
|
* Maximum number of retries per message
|
||
|
*/
|
||
|
max?: number;
|
||
|
|
||
|
/**
|
||
|
* Initial delay between retries (milliseconds)
|
||
|
*/
|
||
|
delay?: number;
|
||
|
|
||
|
/**
|
||
|
* Whether to use exponential backoff for retries
|
||
|
*/
|
||
|
useBackoff?: boolean;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Rate limiting configuration
|
||
|
*/
|
||
|
rateLimit?: IRateLimitConfig;
|
||
|
|
||
|
/**
|
||
|
* IP warmup configuration
|
||
|
*/
|
||
|
warmup?: {
|
||
|
/**
|
||
|
* Whether IP warmup is enabled
|
||
|
*/
|
||
|
enabled?: boolean;
|
||
|
|
||
|
/**
|
||
|
* IP addresses to warm up
|
||
|
*/
|
||
|
ipAddresses?: string[];
|
||
|
|
||
|
/**
|
||
|
* Target domains to warm up
|
||
|
*/
|
||
|
targetDomains?: string[];
|
||
|
|
||
|
/**
|
||
|
* Allocation policy to use
|
||
|
*/
|
||
|
allocationPolicy?: string;
|
||
|
|
||
|
/**
|
||
|
* Fallback percentage for ESP routing during warmup
|
||
|
*/
|
||
|
fallbackPercentage?: number;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Reputation monitoring configuration
|
||
|
*/
|
||
|
reputation?: IMonitoringConfig & {
|
||
|
/**
|
||
|
* Alert thresholds
|
||
|
*/
|
||
|
alertThresholds?: {
|
||
|
/**
|
||
|
* Minimum acceptable reputation score
|
||
|
*/
|
||
|
minReputationScore?: number;
|
||
|
|
||
|
/**
|
||
|
* Maximum acceptable complaint rate
|
||
|
*/
|
||
|
maxComplaintRate?: number;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Security settings
|
||
|
*/
|
||
|
security?: {
|
||
|
/**
|
||
|
* Whether to use DKIM signing
|
||
|
*/
|
||
|
useDkim?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Whether to verify inbound DKIM signatures
|
||
|
*/
|
||
|
verifyDkim?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Whether to verify SPF on inbound
|
||
|
*/
|
||
|
verifySpf?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Whether to verify DMARC on inbound
|
||
|
*/
|
||
|
verifyDmarc?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Whether to enforce DMARC policy
|
||
|
*/
|
||
|
enforceDmarc?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Whether to use TLS for outbound when available
|
||
|
*/
|
||
|
useTls?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Whether to require valid certificates
|
||
|
*/
|
||
|
requireValidCerts?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Log level for email security events
|
||
|
*/
|
||
|
securityLogLevel?: 'info' | 'warn' | 'error';
|
||
|
|
||
|
/**
|
||
|
* Whether to check IP reputation for inbound emails
|
||
|
*/
|
||
|
checkIPReputation?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Whether to scan content for malicious payloads
|
||
|
*/
|
||
|
scanContent?: boolean;
|
||
|
|
||
|
/**
|
||
|
* Action to take when malicious content is detected
|
||
|
*/
|
||
|
maliciousContentAction?: 'tag' | 'quarantine' | 'reject';
|
||
|
|
||
|
/**
|
||
|
* Minimum threat score to trigger action
|
||
|
*/
|
||
|
threatScoreThreshold?: number;
|
||
|
|
||
|
/**
|
||
|
* Whether to reject connections from high-risk IPs
|
||
|
*/
|
||
|
rejectHighRiskIPs?: boolean;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Domains configuration
|
||
|
*/
|
||
|
domains?: {
|
||
|
/**
|
||
|
* List of domains that this MTA will handle as local
|
||
|
*/
|
||
|
local?: string[];
|
||
|
|
||
|
/**
|
||
|
* Whether to auto-create DNS records
|
||
|
*/
|
||
|
autoCreateDnsRecords?: boolean;
|
||
|
|
||
|
/**
|
||
|
* DKIM selector to use
|
||
|
*/
|
||
|
dkimSelector?: string;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Queue configuration
|
||
|
*/
|
||
|
queue?: IQueueConfig;
|
||
|
}
|