2026-02-10 15:31:31 +00:00
|
|
|
import * as plugins from '../../plugins.js';
|
|
|
|
|
import * as paths from '../../paths.js';
|
|
|
|
|
import type { UnifiedEmailServer } from '../routing/classes.unified.email.server.js';
|
2025-10-24 08:09:29 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Configures email server storage settings
|
|
|
|
|
* @param emailServer Reference to the unified email server
|
|
|
|
|
* @param options Configuration options containing storage paths
|
|
|
|
|
*/
|
2026-02-10 15:31:31 +00:00
|
|
|
export async function configureEmailStorage(emailServer: UnifiedEmailServer, options: any): Promise<void> {
|
2025-10-24 08:09:29 +00:00
|
|
|
// Extract the receivedEmailsPath if available
|
|
|
|
|
if (options?.emailPortConfig?.receivedEmailsPath) {
|
|
|
|
|
const receivedEmailsPath = options.emailPortConfig.receivedEmailsPath;
|
2026-02-10 15:31:31 +00:00
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
// Ensure the directory exists
|
2026-02-10 15:31:31 +00:00
|
|
|
await plugins.smartfs.directory(receivedEmailsPath).recursive().create();
|
|
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
// Set path for received emails
|
|
|
|
|
if (emailServer) {
|
|
|
|
|
// Storage paths are now handled by the unified email server system
|
2026-02-10 15:31:31 +00:00
|
|
|
await plugins.smartfs.directory(paths.receivedEmailsDir).recursive().create();
|
|
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
console.log(`Configured email server to store received emails to: ${receivedEmailsPath}`);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Configure email server with port and storage settings
|
|
|
|
|
* @param emailServer Reference to the unified email server
|
|
|
|
|
* @param config Configuration settings for email server
|
|
|
|
|
*/
|
2026-02-10 15:31:31 +00:00
|
|
|
export async function configureEmailServer(
|
|
|
|
|
emailServer: UnifiedEmailServer,
|
2025-10-24 08:09:29 +00:00
|
|
|
config: {
|
|
|
|
|
ports?: number[];
|
|
|
|
|
hostname?: string;
|
|
|
|
|
tls?: {
|
|
|
|
|
certPath?: string;
|
|
|
|
|
keyPath?: string;
|
|
|
|
|
caPath?: string;
|
|
|
|
|
};
|
|
|
|
|
storagePath?: string;
|
|
|
|
|
}
|
2026-02-10 15:31:31 +00:00
|
|
|
): Promise<boolean> {
|
2025-10-24 08:09:29 +00:00
|
|
|
if (!emailServer) {
|
|
|
|
|
console.error('Email server not available');
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2026-02-10 15:31:31 +00:00
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
// Configure the email server with updated options
|
|
|
|
|
const serverOptions = {
|
|
|
|
|
ports: config.ports || [25, 587, 465],
|
|
|
|
|
hostname: config.hostname || 'localhost',
|
|
|
|
|
tls: config.tls
|
|
|
|
|
};
|
2026-02-10 15:31:31 +00:00
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
// Update the email server options
|
|
|
|
|
emailServer.updateOptions(serverOptions);
|
2026-02-10 15:31:31 +00:00
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
console.log(`Configured email server on ports ${serverOptions.ports.join(', ')}`);
|
2026-02-10 15:31:31 +00:00
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
// Set up storage path if provided
|
|
|
|
|
if (config.storagePath) {
|
2026-02-10 15:31:31 +00:00
|
|
|
await configureEmailStorage(emailServer, {
|
2025-10-24 08:09:29 +00:00
|
|
|
emailPortConfig: {
|
|
|
|
|
receivedEmailsPath: config.storagePath
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2026-02-10 15:31:31 +00:00
|
|
|
|
2025-10-24 08:09:29 +00:00
|
|
|
return true;
|
|
|
|
|
}
|