feat(rust): scaffold Rust workspace and fix TypeScript build errors

- Add @git.zone/tsrust with linux_amd64/linux_arm64 cross-compilation
- Scaffold Rust workspace with 5 crates: mailer-core, mailer-smtp, mailer-security, mailer-napi, mailer-bin
- Fix all TypeScript compilation errors for upgraded dependencies (smartfile v13, mailauth v4.13, smartproxy v23)
- Replace smartfile.fs/memory with @push.rocks/smartfs throughout codebase
- Fix .ts import extensions to .js for NodeNext module resolution
- Update DKIMSignOptions usage to match mailauth v4.13 API
- Add MTA error classes with permissive signatures for legacy SMTP client
- Replace removed DcRouter/StorageManager/deliverability imports with local interfaces
This commit is contained in:
2026-02-10 15:31:31 +00:00
parent bcde137332
commit 237dba3bab
86 changed files with 6518 additions and 2869 deletions

View File

@@ -5,7 +5,7 @@
import * as fs from 'fs';
import * as tls from 'tls';
import { SmtpLogger } from './utils/logging.ts';
import { SmtpLogger } from './utils/logging.js';
/**
* Certificate data

View File

@@ -3,15 +3,15 @@
* Responsible for parsing and handling SMTP commands
*/
import * as plugins from '../../../plugins.ts';
import { SmtpState } from './interfaces.ts';
import type { ISmtpSession, IEnvelopeRecipient } from './interfaces.ts';
import type { ICommandHandler, ISmtpServer } from './interfaces.ts';
import { SmtpCommand, SmtpResponseCode, SMTP_DEFAULTS, SMTP_EXTENSIONS } from './constants.ts';
import { SmtpLogger } from './utils/logging.ts';
import { adaptiveLogger } from './utils/adaptive-logging.ts';
import { extractCommandName, extractCommandArgs, formatMultilineResponse } from './utils/helpers.ts';
import { validateEhlo, validateMailFrom, validateRcptTo, isValidCommandSequence } from './utils/validation.ts';
import * as plugins from '../../../plugins.js';
import { SmtpState } from './interfaces.js';
import type { ISmtpSession, IEnvelopeRecipient } from './interfaces.js';
import type { ICommandHandler, ISmtpServer } from './interfaces.js';
import { SmtpCommand, SmtpResponseCode, SMTP_DEFAULTS, SMTP_EXTENSIONS } from './constants.js';
import { SmtpLogger } from './utils/logging.js';
import { adaptiveLogger } from './utils/adaptive-logging.js';
import { extractCommandName, extractCommandArgs, formatMultilineResponse } from './utils/helpers.js';
import { validateEhlo, validateMailFrom, validateRcptTo, isValidCommandSequence } from './utils/validation.js';
/**
* Handles SMTP commands and responses

View File

@@ -3,12 +3,12 @@
* Responsible for managing socket connections to the SMTP server
*/
import * as plugins from '../../../plugins.ts';
import type { IConnectionManager, ISmtpServer } from './interfaces.ts';
import { SmtpResponseCode, SMTP_DEFAULTS, SmtpState } from './constants.ts';
import { SmtpLogger } from './utils/logging.ts';
import { adaptiveLogger } from './utils/adaptive-logging.ts';
import { getSocketDetails, formatMultilineResponse } from './utils/helpers.ts';
import * as plugins from '../../../plugins.js';
import type { IConnectionManager, ISmtpServer } from './interfaces.js';
import { SmtpResponseCode, SMTP_DEFAULTS, SmtpState } from './constants.js';
import { SmtpLogger } from './utils/logging.js';
import { adaptiveLogger } from './utils/adaptive-logging.js';
import { getSocketDetails, formatMultilineResponse } from './utils/helpers.js';
/**
* Manager for SMTP connections

View File

@@ -3,7 +3,7 @@
* This file contains all constants and enums used by the SMTP server
*/
import { SmtpState } from '../interfaces.ts';
import { SmtpState } from '../interfaces.js';
// Re-export SmtpState enum from the main interfaces file
export { SmtpState };

View File

@@ -3,15 +3,15 @@
* Provides a simple way to create a complete SMTP server
*/
import { SmtpServer } from './smtp-server.ts';
import { SessionManager } from './session-manager.ts';
import { ConnectionManager } from './connection-manager.ts';
import { CommandHandler } from './command-handler.ts';
import { DataHandler } from './data-handler.ts';
import { TlsHandler } from './tls-handler.ts';
import { SecurityHandler } from './security-handler.ts';
import type { ISmtpServerOptions } from './interfaces.ts';
import { UnifiedEmailServer } from '../../routing/classes.unified.email.server.ts';
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

View File

@@ -3,16 +3,16 @@
* Responsible for processing email data during and after DATA command
*/
import * as plugins from '../../../plugins.ts';
import * as plugins from '../../../plugins.js';
import * as fs from 'fs';
import * as path from 'path';
import { SmtpState } from './interfaces.ts';
import type { ISmtpSession, ISmtpTransactionResult } from './interfaces.ts';
import type { IDataHandler, ISmtpServer } from './interfaces.ts';
import { SmtpResponseCode, SMTP_PATTERNS, SMTP_DEFAULTS } from './constants.ts';
import { SmtpLogger } from './utils/logging.ts';
import { detectHeaderInjection } from './utils/validation.ts';
import { Email } from '../../core/classes.email.ts';
import { SmtpState } from './interfaces.js';
import type { ISmtpSession, ISmtpTransactionResult } from './interfaces.js';
import type { IDataHandler, ISmtpServer } from './interfaces.js';
import { SmtpResponseCode, SMTP_PATTERNS, SMTP_DEFAULTS } from './constants.js';
import { SmtpLogger } from './utils/logging.js';
import { detectHeaderInjection } from './utils/validation.js';
import { Email } from '../../core/classes.email.js';
/**
* Handles SMTP DATA command and email data processing

View File

@@ -4,29 +4,29 @@
*/
// Export interfaces
export * from './interfaces.ts';
export * from './interfaces.js';
// Export server classes
export { SmtpServer } from './smtp-server.ts';
export { SessionManager } from './session-manager.ts';
export { ConnectionManager } from './connection-manager.ts';
export { CommandHandler } from './command-handler.ts';
export { DataHandler } from './data-handler.ts';
export { TlsHandler } from './tls-handler.ts';
export { SecurityHandler } from './security-handler.ts';
export { SmtpServer } from './smtp-server.js';
export { SessionManager } from './session-manager.js';
export { ConnectionManager } from './connection-manager.js';
export { CommandHandler } from './command-handler.js';
export { DataHandler } from './data-handler.js';
export { TlsHandler } from './tls-handler.js';
export { SecurityHandler } from './security-handler.js';
// Export constants
export * from './constants.ts';
export * from './constants.js';
// Export utilities
export { SmtpLogger } from './utils/logging.ts';
export * from './utils/validation.ts';
export * from './utils/helpers.ts';
export { SmtpLogger } from './utils/logging.js';
export * from './utils/validation.js';
export * from './utils/helpers.js';
// Export TLS and certificate utilities
export * from './certificate-utils.ts';
export * from './secure-server.ts';
export * from './starttls-handler.ts';
export * from './certificate-utils.js';
export * from './secure-server.js';
export * from './starttls-handler.js';
// Factory function to create a complete SMTP server with default components
export { createSmtpServer } from './create-server.ts';
export { createSmtpServer } from './create-server.js';

View File

@@ -3,15 +3,15 @@
* Defines all the interfaces used by the SMTP server implementation
*/
import * as plugins from '../../../plugins.ts';
import type { Email } from '../../core/classes.email.ts';
import type { UnifiedEmailServer } from '../../routing/classes.unified.email.server.ts';
import * as plugins from '../../../plugins.js';
import type { Email } from '../../core/classes.email.js';
import type { UnifiedEmailServer } from '../../routing/classes.unified.email.server.js';
// Re-export types from other modules
import { SmtpState } from '../interfaces.ts';
import { SmtpCommand } from './constants.ts';
import { SmtpState } from '../interfaces.js';
import { SmtpCommand } from './constants.js';
export { SmtpState, SmtpCommand };
export type { IEnvelopeRecipient } from '../interfaces.ts';
export type { IEnvelopeRecipient } from '../interfaces.js';
/**
* Interface for components that need cleanup

View File

@@ -3,14 +3,14 @@
* Provides helper functions for creating and managing secure TLS server
*/
import * as plugins from '../../../plugins.ts';
import * as plugins from '../../../plugins.js';
import {
loadCertificatesFromString,
generateSelfSignedCertificates,
createTlsOptions,
type ICertificateData
} from './certificate-utils.ts';
import { SmtpLogger } from './utils/logging.ts';
} from './certificate-utils.js';
import { SmtpLogger } from './utils/logging.js';
/**
* Create a secure TLS server for direct TLS connections

View File

@@ -4,14 +4,14 @@
* email validation, and authentication
*/
import * as plugins from '../../../plugins.ts';
import type { ISmtpSession, ISmtpAuth } from './interfaces.ts';
import type { ISecurityHandler, ISmtpServer } from './interfaces.ts';
import { SmtpLogger } from './utils/logging.ts';
import { SecurityEventType, SecurityLogLevel } from './constants.ts';
import { isValidEmail } from './utils/validation.ts';
import { getSocketDetails, getTlsDetails } from './utils/helpers.ts';
import { IPReputationChecker } from '../../../security/classes.ipreputationchecker.ts';
import * as plugins from '../../../plugins.js';
import type { ISmtpSession, ISmtpAuth } from './interfaces.js';
import type { ISecurityHandler, ISmtpServer } from './interfaces.js';
import { SmtpLogger } from './utils/logging.js';
import { SecurityEventType, SecurityLogLevel } from './constants.js';
import { isValidEmail } from './utils/validation.js';
import { getSocketDetails, getTlsDetails } from './utils/helpers.js';
import { IPReputationChecker } from '../../../security/classes.ipreputationchecker.js';
/**
* Interface for IP denylist entry

View File

@@ -3,13 +3,13 @@
* Responsible for creating, managing, and cleaning up SMTP sessions
*/
import * as plugins from '../../../plugins.ts';
import { SmtpState } from './interfaces.ts';
import type { ISmtpSession, ISmtpEnvelope } from './interfaces.ts';
import type { ISessionManager, ISessionEvents } from './interfaces.ts';
import { SMTP_DEFAULTS } from './constants.ts';
import { generateSessionId, getSocketDetails } from './utils/helpers.ts';
import { SmtpLogger } from './utils/logging.ts';
import * as plugins from '../../../plugins.js';
import { SmtpState } from './interfaces.js';
import type { ISmtpSession, ISmtpEnvelope } from './interfaces.js';
import type { ISessionManager, ISessionEvents } from './interfaces.js';
import { SMTP_DEFAULTS } from './constants.js';
import { generateSessionId, getSocketDetails } from './utils/helpers.js';
import { SmtpLogger } from './utils/logging.js';
/**
* Manager for SMTP sessions

View File

@@ -3,21 +3,21 @@
* Core implementation for the refactored SMTP server
*/
import * as plugins from '../../../plugins.ts';
import { SmtpState } from './interfaces.ts';
import type { ISmtpServerOptions } from './interfaces.ts';
import type { ISmtpServer, ISmtpServerConfig, ISessionManager, IConnectionManager, ICommandHandler, IDataHandler, ITlsHandler, ISecurityHandler } from './interfaces.ts';
import { SessionManager } from './session-manager.ts';
import { ConnectionManager } from './connection-manager.ts';
import { CommandHandler } from './command-handler.ts';
import { DataHandler } from './data-handler.ts';
import { TlsHandler } from './tls-handler.ts';
import { SecurityHandler } from './security-handler.ts';
import { SMTP_DEFAULTS } from './constants.ts';
import { mergeWithDefaults } from './utils/helpers.ts';
import { SmtpLogger } from './utils/logging.ts';
import { adaptiveLogger } from './utils/adaptive-logging.ts';
import { UnifiedEmailServer } from '../../routing/classes.unified.email.server.ts';
import * as plugins from '../../../plugins.js';
import { SmtpState } from './interfaces.js';
import type { ISmtpServerOptions } from './interfaces.js';
import type { ISmtpServer, ISmtpServerConfig, ISessionManager, IConnectionManager, ICommandHandler, IDataHandler, ITlsHandler, ISecurityHandler } from './interfaces.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 { SMTP_DEFAULTS } from './constants.js';
import { mergeWithDefaults } from './utils/helpers.js';
import { SmtpLogger } from './utils/logging.js';
import { adaptiveLogger } from './utils/adaptive-logging.js';
import { UnifiedEmailServer } from '../../routing/classes.unified.email.server.js';
/**
* SMTP Server implementation

View File

@@ -3,16 +3,16 @@
* Provides an improved implementation for STARTTLS upgrades
*/
import * as plugins from '../../../plugins.ts';
import { SmtpLogger } from './utils/logging.ts';
import * as plugins from '../../../plugins.js';
import { SmtpLogger } from './utils/logging.js';
import {
loadCertificatesFromString,
createTlsOptions,
type ICertificateData
} from './certificate-utils.ts';
import { getSocketDetails } from './utils/helpers.ts';
import type { ISmtpSession, ISessionManager, IConnectionManager } from './interfaces.ts';
import { SmtpState } from '../interfaces.ts';
} from './certificate-utils.js';
import { getSocketDetails } from './utils/helpers.js';
import type { ISmtpSession, ISessionManager, IConnectionManager } from './interfaces.js';
import { SmtpState } from '../interfaces.js';
/**
* Enhanced STARTTLS handler for more reliable TLS upgrades

View File

@@ -3,18 +3,18 @@
* Responsible for handling TLS-related SMTP functionality
*/
import * as plugins from '../../../plugins.ts';
import type { ITlsHandler, ISmtpServer, ISmtpSession } from './interfaces.ts';
import { SmtpResponseCode, SecurityEventType, SecurityLogLevel } from './constants.ts';
import { SmtpLogger } from './utils/logging.ts';
import { getSocketDetails, getTlsDetails } from './utils/helpers.ts';
import * as plugins from '../../../plugins.js';
import type { ITlsHandler, ISmtpServer, ISmtpSession } from './interfaces.js';
import { SmtpResponseCode, SecurityEventType, SecurityLogLevel } from './constants.js';
import { SmtpLogger } from './utils/logging.js';
import { getSocketDetails, getTlsDetails } from './utils/helpers.js';
import {
loadCertificatesFromString,
generateSelfSignedCertificates,
createTlsOptions,
type ICertificateData
} from './certificate-utils.ts';
import { SmtpState } from '../interfaces.ts';
} from './certificate-utils.js';
import { SmtpState } from '../interfaces.js';
/**
* Handles TLS functionality for SMTP server

View File

@@ -4,11 +4,11 @@
* to maintain performance during high-concurrency scenarios
*/
import * as plugins from '../../../../plugins.ts';
import { logger } from '../../../../logger.ts';
import { SecurityLogLevel, SecurityEventType } from '../constants.ts';
import type { ISmtpSession } from '../interfaces.ts';
import type { LogLevel, ISmtpLogOptions } from './logging.ts';
import * as plugins from '../../../../plugins.js';
import { logger } from '../../../../logger.js';
import { SecurityLogLevel, SecurityEventType } from '../constants.js';
import type { ISmtpSession } from '../interfaces.js';
import type { LogLevel, ISmtpLogOptions } from './logging.js';
/**
* Log modes based on server load

View File

@@ -3,9 +3,9 @@
* Provides utility functions for SMTP server implementation
*/
import * as plugins from '../../../../plugins.ts';
import { SMTP_DEFAULTS } from '../constants.ts';
import type { ISmtpSession, ISmtpServerOptions } from '../interfaces.ts';
import * as plugins from '../../../../plugins.js';
import { SMTP_DEFAULTS } from '../constants.js';
import type { ISmtpSession, ISmtpServerOptions } from '../interfaces.js';
/**
* Formats a multi-line SMTP response according to RFC 5321

View File

@@ -3,10 +3,10 @@
* Provides structured logging for SMTP server components
*/
import * as plugins from '../../../../plugins.ts';
import { logger } from '../../../../logger.ts';
import { SecurityLogLevel, SecurityEventType } from '../constants.ts';
import type { ISmtpSession } from '../interfaces.ts';
import * as plugins from '../../../../plugins.js';
import { logger } from '../../../../logger.js';
import { SecurityLogLevel, SecurityEventType } from '../constants.js';
import type { ISmtpSession } from '../interfaces.js';
/**
* SMTP connection metadata to include in logs

View File

@@ -3,8 +3,8 @@
* Provides validation functions for SMTP server
*/
import { SmtpState } from '../interfaces.ts';
import { SMTP_PATTERNS } from '../constants.ts';
import { SmtpState } from '../interfaces.js';
import { SMTP_PATTERNS } from '../constants.js';
/**
* Header injection patterns to detect malicious input
@@ -88,7 +88,7 @@ export function sanitizeInput(input: string): string {
.replace(/%0[aAdD]/gi, '') // Remove URL encoded CRLF
.trim();
}
import { SmtpLogger } from './logging.ts';
import { SmtpLogger } from './logging.js';
/**
* Validates an email address