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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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';
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user