update
This commit is contained in:
92
ts/mail/delivery/smtpserver/create-server.ts
Normal file
92
ts/mail/delivery/smtpserver/create-server.ts
Normal file
@ -0,0 +1,92 @@
|
||||
/**
|
||||
* SMTP Server Creation Factory
|
||||
* Provides a simple way to create a complete SMTP server
|
||||
*/
|
||||
|
||||
import { SmtpServer } from './smtp-server.js';
|
||||
import { SessionManager } from './session-manager.js';
|
||||
import { ConnectionManager } from './connection-manager.js';
|
||||
import { CommandHandler } from './command-handler.js';
|
||||
import { DataHandler } from './data-handler.js';
|
||||
import { TlsHandler } from './tls-handler.js';
|
||||
import { SecurityHandler } from './security-handler.js';
|
||||
import type { ISmtpServerOptions } from './interfaces.js';
|
||||
import { UnifiedEmailServer } from '../../routing/classes.unified.email.server.js';
|
||||
|
||||
/**
|
||||
* Create a complete SMTP server with all components
|
||||
* @param emailServer - Email server reference
|
||||
* @param options - SMTP server options
|
||||
* @returns Configured SMTP server instance
|
||||
*/
|
||||
export function createSmtpServer(emailServer: UnifiedEmailServer, options: ISmtpServerOptions): SmtpServer {
|
||||
// Create session manager
|
||||
const sessionManager = new SessionManager({
|
||||
socketTimeout: options.socketTimeout,
|
||||
connectionTimeout: options.connectionTimeout,
|
||||
cleanupInterval: options.cleanupInterval
|
||||
});
|
||||
|
||||
// Create security handler
|
||||
const securityHandler = new SecurityHandler(
|
||||
emailServer,
|
||||
undefined, // IP reputation service
|
||||
options.auth
|
||||
);
|
||||
|
||||
// Create TLS handler
|
||||
const tlsHandler = new TlsHandler(
|
||||
sessionManager,
|
||||
{
|
||||
key: options.key,
|
||||
cert: options.cert,
|
||||
ca: options.ca
|
||||
}
|
||||
);
|
||||
|
||||
// Create data handler
|
||||
const dataHandler = new DataHandler(
|
||||
sessionManager,
|
||||
emailServer,
|
||||
{
|
||||
size: options.size
|
||||
}
|
||||
);
|
||||
|
||||
// Create command handler
|
||||
const commandHandler = new CommandHandler(
|
||||
sessionManager,
|
||||
{
|
||||
hostname: options.hostname,
|
||||
size: options.size,
|
||||
maxRecipients: options.maxRecipients,
|
||||
auth: options.auth
|
||||
},
|
||||
dataHandler,
|
||||
tlsHandler,
|
||||
securityHandler
|
||||
);
|
||||
|
||||
// Create connection manager
|
||||
const connectionManager = new ConnectionManager(
|
||||
sessionManager,
|
||||
(socket, line) => commandHandler.processCommand(socket, line),
|
||||
{
|
||||
hostname: options.hostname,
|
||||
maxConnections: options.maxConnections,
|
||||
socketTimeout: options.socketTimeout
|
||||
}
|
||||
);
|
||||
|
||||
// Create and return SMTP server
|
||||
return new SmtpServer({
|
||||
emailServer,
|
||||
options,
|
||||
sessionManager,
|
||||
connectionManager,
|
||||
commandHandler,
|
||||
dataHandler,
|
||||
tlsHandler,
|
||||
securityHandler
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user