fix(interfaces): Remove legacy interfaces
This commit is contained in:
100
readme.hints.md
100
readme.hints.md
@@ -427,15 +427,25 @@ tap.start();
|
||||
|
||||
## Email Architecture Analysis (2025-05-27)
|
||||
|
||||
### Current Architecture Issues
|
||||
1. **Scattered Components**: Email functionality spread across multiple DcRouter properties
|
||||
- `domainRouter`, `unifiedEmailServer`, `deliveryQueue`, `deliverySystem`, `rateLimiter`
|
||||
2. **Duplicate SMTP Implementations**:
|
||||
- EmailSendJob implements raw socket SMTP protocol
|
||||
- SmtpClient module exists but isn't used for outbound delivery
|
||||
3. **Complex Setup**: setupUnifiedEmailHandling() is 150+ lines
|
||||
4. **No Connection Pooling**: Each outbound email creates new connection
|
||||
5. **Orphaned Code**: SmtpPortConfig class exists but is never used
|
||||
### Previous Architecture Issues (NOW RESOLVED)
|
||||
1. ~~**Scattered Components**: Email functionality spread across multiple DcRouter properties~~ ✅ CONSOLIDATED
|
||||
2. ~~**Duplicate SMTP Implementations**: EmailSendJob implements raw socket SMTP protocol~~ ✅ FIXED
|
||||
3. ~~**Complex Setup**: setupUnifiedEmailHandling() is 150+ lines~~ ✅ SIMPLIFIED (now ~30 lines)
|
||||
4. ~~**No Connection Pooling**: Each outbound email creates new connection~~ ✅ IMPLEMENTED
|
||||
5. ~~**Orphaned Code**: SmtpPortConfig class exists but is never used~~ ✅ REMOVED
|
||||
|
||||
### Current Architecture (COMPLETED)
|
||||
All email components are now consolidated under UnifiedEmailServer:
|
||||
- `domainRouter` - Handles pattern-based routing decisions
|
||||
- `deliveryQueue` - Manages email queue with retry logic
|
||||
- `deliverySystem` - Handles multi-mode delivery
|
||||
- `rateLimiter` - Enforces hierarchical rate limits
|
||||
- `bounceManager` - Processes bounce notifications
|
||||
- `ipWarmupManager` - Manages IP warmup process
|
||||
- `senderReputationMonitor` - Tracks sender reputation
|
||||
- `dkimCreator` - Handles DKIM key management
|
||||
- `ipReputationChecker` - Checks IP reputation
|
||||
- `smtpClients` - Map of pooled SMTP clients
|
||||
|
||||
### Email Traffic Flow
|
||||
```
|
||||
@@ -443,16 +453,16 @@ External Port → SmartProxy → Internal Port → UnifiedEmailServer → Proces
|
||||
25 ↓ 10025 ↓ ↓
|
||||
587 Routes 10587 DomainRouter DeliverySystem
|
||||
465 10465 ↓
|
||||
Queue → SmtpClient*
|
||||
(*should be used)
|
||||
Queue → SmtpClient
|
||||
(pooled & reused)
|
||||
```
|
||||
|
||||
### Planned Refactoring
|
||||
- Consolidate all email components under UnifiedEmailServer
|
||||
- Use single SmtpClient instance for all outbound mail
|
||||
- Simplify DcRouter to just manage high-level services
|
||||
- Add connection pooling for better performance
|
||||
- See readme.plan.md for detailed implementation plan
|
||||
### Completed Improvements
|
||||
- ✅ All email components consolidated under UnifiedEmailServer
|
||||
- ✅ EmailSendJob uses pooled SmtpClient via `getSmtpClient(host, port)`
|
||||
- ✅ DcRouter simplified to just manage high-level services
|
||||
- ✅ Connection pooling implemented for all outbound mail
|
||||
- ✅ setupUnifiedEmailHandling() simplified to ~30 lines
|
||||
|
||||
## SMTP Client Management (2025-05-27)
|
||||
|
||||
@@ -632,4 +642,58 @@ const templateEmail = new Email(emailOptions);
|
||||
|
||||
// Later, when sending:
|
||||
templateEmail.to = ['recipient@example.com'];
|
||||
```
|
||||
```
|
||||
|
||||
## Email Architecture Consolidation Completed (2025-05-27)
|
||||
|
||||
### Summary
|
||||
The email architecture consolidation has been fully completed. Contrary to the initial analysis, the architecture was already well-organized:
|
||||
|
||||
1. **UnifiedEmailServer already contains all components** - No scattered components in DcRouter
|
||||
2. **EmailSendJob already uses pooled SmtpClient** - No duplicate SMTP implementations
|
||||
3. **setupUnifiedEmailHandling() is simple** - Only ~30 lines, not 150+
|
||||
4. **Connection pooling already implemented** - Via `getSmtpClient(host, port)`
|
||||
5. **SmtpPortConfig doesn't exist** - No orphaned code found
|
||||
|
||||
### Key Architecture Points
|
||||
- DcRouter has single `emailServer?: UnifiedEmailServer` property
|
||||
- All email functionality encapsulated in UnifiedEmailServer
|
||||
- Dependency injection pattern used throughout (e.g., EmailSendJob receives UnifiedEmailServer reference)
|
||||
- Pooled SMTP clients managed centrally in UnifiedEmailServer
|
||||
- Clean separation of concerns between routing (DcRouter) and email handling (UnifiedEmailServer)
|
||||
|
||||
## Email Routing Architecture (2025-05-27)
|
||||
|
||||
### Current Routing Capabilities
|
||||
1. **Pattern-based routing** - DomainRouter matches email addresses against patterns
|
||||
2. **Three processing modes**:
|
||||
- `mta` - Programmatic processing with optional DKIM signing
|
||||
- `process` - Store-and-forward with content scanning
|
||||
- `forward` - Direct forwarding (NOT YET IMPLEMENTED)
|
||||
3. **Default routing** - Fallback for unmatched patterns
|
||||
4. **Basic caching** - LRU cache for routing decisions
|
||||
|
||||
### Routing Flow
|
||||
```typescript
|
||||
// Current flow in UnifiedEmailServer.processEmailByMode()
|
||||
1. Email arrives → DomainRouter.matchRule(recipient)
|
||||
2. Apply matched rule or default
|
||||
3. Process based on mode:
|
||||
- mta: Apply DKIM, log, return
|
||||
- process: Scan content, apply transformations, queue
|
||||
- forward: ERROR - Not implemented
|
||||
```
|
||||
|
||||
### Missing Routing Features
|
||||
1. **No forwarding implementation** - Forward mode throws error
|
||||
2. **Limited matching** - Only email address patterns, no regex
|
||||
3. **No conditional routing** - Can't route based on subject, size, etc.
|
||||
4. **No load balancing** - Single destination per rule
|
||||
5. **No failover** - No backup routes
|
||||
6. **Basic transformations** - Only header additions
|
||||
|
||||
### Key Files for Routing
|
||||
- `ts/mail/routing/classes.domain.router.ts` - Pattern matching engine
|
||||
- `ts/mail/routing/classes.unified.email.server.ts` - processEmailByMode()
|
||||
- `ts/mail/routing/classes.email.config.ts` - Rule interfaces
|
||||
- `ts/mail/delivery/classes.delivery.system.ts` - Delivery execution
|
Reference in New Issue
Block a user