fix(mail options): simplify mail options
This commit is contained in:
@ -3,10 +3,9 @@ import * as paths from './paths.js';
|
||||
|
||||
// Certificate types are available via plugins.tsclass
|
||||
|
||||
// Import the consolidated email config
|
||||
import type { IEmailConfig, IDomainRule } from './mail/routing/classes.email.config.js';
|
||||
import type { EmailProcessingMode } from './mail/delivery/interfaces.js';
|
||||
import { UnifiedEmailServer } from './mail/routing/classes.unified.email.server.js';
|
||||
// Import the email server and its configuration
|
||||
import { UnifiedEmailServer, type IUnifiedEmailServerOptions } from './mail/routing/classes.unified.email.server.js';
|
||||
import type { IDomainRule, EmailProcessingMode } from './mail/routing/classes.email.config.js';
|
||||
import { logger } from './logger.js';
|
||||
// Import the email configuration helpers directly from mail/delivery
|
||||
import { configureEmailStorage, configureEmailServer } from './mail/delivery/index.js';
|
||||
@ -19,10 +18,10 @@ export interface IDcRouterOptions {
|
||||
smartProxyConfig?: plugins.smartproxy.ISmartProxyOptions;
|
||||
|
||||
/**
|
||||
* Consolidated email configuration
|
||||
* Email server configuration
|
||||
* This enables all email handling with pattern-based routing
|
||||
*/
|
||||
emailConfig?: IEmailConfig;
|
||||
emailConfig?: IUnifiedEmailServerOptions;
|
||||
|
||||
/**
|
||||
* Custom email port configuration
|
||||
@ -238,7 +237,7 @@ export class DcRouter {
|
||||
/**
|
||||
* Generate SmartProxy routes for email configuration
|
||||
*/
|
||||
private generateEmailRoutes(emailConfig: IEmailConfig): plugins.smartproxy.IRouteConfig[] {
|
||||
private generateEmailRoutes(emailConfig: IUnifiedEmailServerOptions): plugins.smartproxy.IRouteConfig[] {
|
||||
const emailRoutes: plugins.smartproxy.IRouteConfig[] = [];
|
||||
|
||||
// Get the custom port mapping if available, otherwise use defaults
|
||||
@ -442,20 +441,22 @@ export class DcRouter {
|
||||
throw new Error('Email configuration is required for unified email handling');
|
||||
}
|
||||
|
||||
const emailConfig = this.options.emailConfig;
|
||||
// Apply port mapping if behind SmartProxy
|
||||
const portMapping = this.options.emailPortConfig?.portMapping || {
|
||||
25: 10025, // SMTP
|
||||
587: 10587, // Submission
|
||||
465: 10465 // SMTPS
|
||||
};
|
||||
|
||||
// Create unified email server with mapped internal ports
|
||||
this.emailServer = new UnifiedEmailServer(this, {
|
||||
...emailConfig,
|
||||
domains: emailConfig.domains || [], // Provide default empty array
|
||||
ports: emailConfig.ports.map(port => portMapping[port] || port + 10000),
|
||||
// Create config with mapped ports
|
||||
const emailConfig: IUnifiedEmailServerOptions = {
|
||||
...this.options.emailConfig,
|
||||
ports: this.options.emailConfig.ports.map(port => portMapping[port] || port + 10000),
|
||||
hostname: 'localhost' // Listen on localhost for SmartProxy forwarding
|
||||
});
|
||||
};
|
||||
|
||||
// Create unified email server
|
||||
this.emailServer = new UnifiedEmailServer(this, emailConfig);
|
||||
|
||||
// Set up error handling
|
||||
this.emailServer.on('error', (err: Error) => {
|
||||
@ -465,14 +466,14 @@ export class DcRouter {
|
||||
// Start the server
|
||||
await this.emailServer.start();
|
||||
|
||||
logger.log('info', `Email server started on ports: ${this.emailServer['options'].ports.join(', ')}`);
|
||||
logger.log('info', `Email server started on ports: ${emailConfig.ports.join(', ')}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the unified email configuration
|
||||
* @param config New email configuration
|
||||
*/
|
||||
public async updateEmailConfig(config: IEmailConfig): Promise<void> {
|
||||
public async updateEmailConfig(config: IUnifiedEmailServerOptions): Promise<void> {
|
||||
// Stop existing email components
|
||||
await this.stopUnifiedEmailComponents();
|
||||
|
||||
@ -598,7 +599,7 @@ export class DcRouter {
|
||||
}
|
||||
}
|
||||
|
||||
// Re-export types for convenience
|
||||
export type { IEmailConfig, IDomainRule, EmailProcessingMode };
|
||||
// Re-export email server types for convenience
|
||||
export type { IUnifiedEmailServerOptions, IDomainRule, EmailProcessingMode };
|
||||
|
||||
export default DcRouter;
|
||||
|
Reference in New Issue
Block a user