Philipp Kunz a2b413a78f fix(test): repair SMTP test suite after rate limiter integration
The test helper's mock email server was missing the getRateLimiter() method
that was added during the rate limiting feature implementation. This caused
all SMTP tests to fail with "getRateLimiter is not a function" error.

Changes:
- Add getRateLimiter() method to mock email server that returns a mock rate limiter
- Update mock rate limiter method signatures to match actual implementation
- Fix TypeScript type issue with auth options by adding explicit casting
2025-05-30 16:17:02 +00:00
..
2025-05-26 16:14:49 +00:00
2025-05-24 14:50:24 +00:00
2025-05-28 18:07:07 +00:00
2025-05-24 02:27:50 +00:00
2025-05-28 18:07:07 +00:00
2025-05-23 19:03:44 +00:00
2025-05-23 20:40:20 +00:00
2025-05-24 02:27:50 +00:00
2025-05-23 21:20:39 +00:00
2025-05-23 21:20:39 +00:00
2025-05-26 16:14:49 +00:00
2025-05-27 10:39:29 +00:00
2025-05-27 10:39:29 +00:00
2025-05-24 02:27:50 +00:00

DCRouter SMTP Test Suite

test/
├── readme.md                              # This file
├── helpers/
│   ├── server.loader.ts                  # SMTP server lifecycle management
│   ├── utils.ts                          # Common test utilities
│   └── smtp.client.ts                    # Test SMTP client utilities
└── suite/
    ├── smtpserver_commands/              # SMTP command tests (CMD)
    ├── smtpserver_connection/            # Connection management tests (CM)
    ├── smtpserver_edge-cases/            # Edge case tests (EDGE)
    ├── smtpserver_email-processing/      # Email processing tests (EP)
    ├── smtpserver_error-handling/        # Error handling tests (ERR)
    ├── smtpserver_performance/           # Performance tests (PERF)
    ├── smtpserver_reliability/           # Reliability tests (REL)
    ├── smtpserver_rfc-compliance/        # RFC compliance tests (RFC)
    └── smtpserver_security/              # Security tests (SEC)

Test ID Convention

All test files follow a strict naming convention: test.<category-id>.<description>.ts

Examples:

  • test.cmd-01.ehlo-command.ts - EHLO command test
  • test.cm-01.tls-connection.ts - TLS connection test
  • test.sec-01.authentication.ts - Authentication test

Test Categories

1. Connection Management (CM)

Tests for validating SMTP connection handling, TLS support, and connection lifecycle management.

ID Test Description Priority Implementation
CM-01 TLS Connection Test High suite/smtpserver_connection/test.cm-01.tls-connection.ts
CM-02 Multiple Simultaneous Connections High suite/smtpserver_connection/test.cm-02.multiple-connections.ts
CM-03 Connection Timeout High suite/smtpserver_connection/test.cm-03.connection-timeout.ts
CM-04 Connection Limits Medium suite/smtpserver_connection/test.cm-04.connection-limits.ts
CM-05 Connection Rejection Medium suite/smtpserver_connection/test.cm-05.connection-rejection.ts
CM-06 STARTTLS Connection Upgrade High suite/smtpserver_connection/test.cm-06.starttls-upgrade.ts
CM-07 Abrupt Client Disconnection Medium suite/smtpserver_connection/test.cm-07.abrupt-disconnection.ts
CM-08 TLS Version Compatibility Medium suite/smtpserver_connection/test.cm-08.tls-versions.ts
CM-09 TLS Cipher Configuration Medium suite/smtpserver_connection/test.cm-09.tls-ciphers.ts
CM-10 Plain Connection Test Low suite/smtpserver_connection/test.cm-10.plain-connection.ts
CM-11 TCP Keep-Alive Test Low suite/smtpserver_connection/test.cm-11.keepalive.ts

2. SMTP Commands (CMD)

Tests for validating proper SMTP protocol command implementation.

ID Test Description Priority Implementation
CMD-01 EHLO Command High suite/smtpserver_commands/test.cmd-01.ehlo-command.ts
CMD-02 MAIL FROM Command High suite/smtpserver_commands/test.cmd-02.mail-from.ts
CMD-03 RCPT TO Command High suite/smtpserver_commands/test.cmd-03.rcpt-to.ts
CMD-04 DATA Command High suite/smtpserver_commands/test.cmd-04.data-command.ts
CMD-05 NOOP Command Medium suite/smtpserver_commands/test.cmd-05.noop-command.ts
CMD-06 RSET Command Medium suite/smtpserver_commands/test.cmd-06.rset-command.ts
CMD-07 VRFY Command Low suite/smtpserver_commands/test.cmd-07.vrfy-command.ts
CMD-08 EXPN Command Low suite/smtpserver_commands/test.cmd-08.expn-command.ts
CMD-09 SIZE Extension Medium suite/smtpserver_commands/test.cmd-09.size-extension.ts
CMD-10 HELP Command Low suite/smtpserver_commands/test.cmd-10.help-command.ts
CMD-11 Command Pipelining Medium suite/smtpserver_commands/test.cmd-11.command-pipelining.ts
CMD-12 HELO Command Low suite/smtpserver_commands/test.cmd-12.helo-command.ts
CMD-13 QUIT Command High suite/smtpserver_commands/test.cmd-13.quit-command.ts

3. Email Processing (EP)

Tests for validating email content handling, parsing, and delivery.

ID Test Description Priority Implementation
EP-01 Basic Email Sending High suite/smtpserver_email-processing/test.ep-01.basic-email-sending.ts
EP-02 Invalid Email Address Handling High suite/smtpserver_email-processing/test.ep-02.invalid-email-addresses.ts
EP-03 Multiple Recipients Medium suite/smtpserver_email-processing/test.ep-03.multiple-recipients.ts
EP-04 Large Email Handling High suite/smtpserver_email-processing/test.ep-04.large-email.ts
EP-05 MIME Handling High suite/smtpserver_email-processing/test.ep-05.mime-handling.ts
EP-06 Attachment Handling Medium suite/smtpserver_email-processing/test.ep-06.attachment-handling.ts
EP-07 Special Character Handling Medium suite/smtpserver_email-processing/test.ep-07.special-character-handling.ts
EP-08 Email Routing High suite/smtpserver_email-processing/test.ep-08.email-routing.ts
EP-09 Delivery Status Notifications Medium suite/smtpserver_email-processing/test.ep-09.delivery-status-notifications.ts

4. Security (SEC)

Tests for validating security features and protections.

ID Test Description Priority Implementation
SEC-01 Authentication High suite/smtpserver_security/test.sec-01.authentication.ts
SEC-02 Authorization High suite/smtpserver_security/test.sec-02.authorization.ts
SEC-03 DKIM Processing High suite/smtpserver_security/test.sec-03.dkim-processing.ts
SEC-04 SPF Checking High suite/smtpserver_security/test.sec-04.spf-checking.ts
SEC-05 DMARC Policy Enforcement Medium suite/smtpserver_security/test.sec-05.dmarc-policy.ts
SEC-06 IP Reputation Checking High suite/smtpserver_security/test.sec-06.ip-reputation.ts
SEC-07 Content Scanning Medium suite/smtpserver_security/test.sec-07.content-scanning.ts
SEC-08 Rate Limiting High suite/smtpserver_security/test.sec-08.rate-limiting.ts
SEC-09 TLS Certificate Validation High suite/smtpserver_security/test.sec-09.tls-certificate-validation.ts
SEC-10 Header Injection Prevention High suite/smtpserver_security/test.sec-10.header-injection-prevention.ts
SEC-11 Bounce Management Medium suite/smtpserver_security/test.sec-11.bounce-management.ts

5. Error Handling (ERR)

Tests for validating proper error handling and recovery.

ID Test Description Priority Implementation
ERR-01 Syntax Error Handling High suite/smtpserver_error-handling/test.err-01.syntax-errors.ts
ERR-02 Invalid Sequence Handling High suite/smtpserver_error-handling/test.err-02.invalid-sequence.ts
ERR-03 Temporary Failure Handling Medium suite/smtpserver_error-handling/test.err-03.temporary-failures.ts
ERR-04 Permanent Failure Handling Medium suite/smtpserver_error-handling/test.err-04.permanent-failures.ts
ERR-05 Resource Exhaustion Handling High suite/smtpserver_error-handling/test.err-05.resource-exhaustion.ts
ERR-06 Malformed MIME Handling Medium suite/smtpserver_error-handling/test.err-06.malformed-mime.ts
ERR-07 Exception Handling High suite/smtpserver_error-handling/test.err-07.exception-handling.ts
ERR-08 Error Logging Medium suite/smtpserver_error-handling/test.err-08.error-logging.ts

6. Performance (PERF)

Tests for validating performance characteristics and benchmarks.

ID Test Description Priority Implementation
PERF-01 Throughput Testing Medium suite/smtpserver_performance/test.perf-01.throughput.ts
PERF-02 Concurrency Testing High suite/smtpserver_performance/test.perf-02.concurrency.ts
PERF-03 CPU Utilization Medium suite/smtpserver_performance/test.perf-03.cpu-utilization.ts
PERF-04 Memory Usage Medium suite/smtpserver_performance/test.perf-04.memory-usage.ts
PERF-05 Connection Processing Time Medium suite/smtpserver_performance/test.perf-05.connection-processing-time.ts
PERF-06 Message Processing Time Medium suite/smtpserver_performance/test.perf-06.message-processing-time.ts
PERF-07 Resource Cleanup High suite/smtpserver_performance/test.perf-07.resource-cleanup.ts

7. Reliability (REL)

Tests for validating system reliability and stability.

ID Test Description Priority Implementation
REL-01 Long-Running Operation High suite/smtpserver_reliability/test.rel-01.long-running-operation.ts
REL-02 Restart Recovery High suite/smtpserver_reliability/test.rel-02.restart-recovery.ts
REL-03 Resource Leak Detection High suite/smtpserver_reliability/test.rel-03.resource-leak-detection.ts
REL-04 Error Recovery High suite/smtpserver_reliability/test.rel-04.error-recovery.ts
REL-05 DNS Resolution Failure Handling Medium suite/smtpserver_reliability/test.rel-05.dns-resolution-failure.ts
REL-06 Network Interruption Handling Medium suite/smtpserver_reliability/test.rel-06.network-interruption.ts

8. Edge Cases (EDGE)

Tests for validating handling of unusual or extreme scenarios.

ID Test Description Priority Implementation
EDGE-01 Very Large Email Low suite/smtpserver_edge-cases/test.edge-01.very-large-email.ts
EDGE-02 Very Small Email Low suite/smtpserver_edge-cases/test.edge-02.very-small-email.ts
EDGE-03 Invalid Character Handling Medium suite/smtpserver_edge-cases/test.edge-03.invalid-character-handling.ts
EDGE-04 Empty Commands Low suite/smtpserver_edge-cases/test.edge-04.empty-commands.ts
EDGE-05 Extremely Long Lines Medium suite/smtpserver_edge-cases/test.edge-05.extremely-long-lines.ts
EDGE-06 Extremely Long Headers Medium suite/smtpserver_edge-cases/test.edge-06.extremely-long-headers.ts
EDGE-07 Unusual MIME Types Low suite/smtpserver_edge-cases/test.edge-07.unusual-mime-types.ts
EDGE-08 Nested MIME Structures Low suite/smtpserver_edge-cases/test.edge-08.nested-mime-structures.ts

9. RFC Compliance (RFC)

Tests for validating compliance with SMTP-related RFCs.

ID Test Description Priority Implementation
RFC-01 RFC 5321 Compliance High suite/smtpserver_rfc-compliance/test.rfc-01.rfc5321-compliance.ts
RFC-02 RFC 5322 Compliance High suite/smtpserver_rfc-compliance/test.rfc-02.rfc5322-compliance.ts
RFC-03 RFC 7208 SPF Compliance Medium suite/smtpserver_rfc-compliance/test.rfc-03.rfc7208-spf-compliance.ts
RFC-04 RFC 6376 DKIM Compliance Medium suite/smtpserver_rfc-compliance/test.rfc-04.rfc6376-dkim-compliance.ts
RFC-05 RFC 7489 DMARC Compliance Medium suite/smtpserver_rfc-compliance/test.rfc-05.rfc7489-dmarc-compliance.ts
RFC-06 RFC 8314 TLS Compliance Medium suite/smtpserver_rfc-compliance/test.rfc-06.rfc8314-tls-compliance.ts
RFC-07 RFC 3461 DSN Compliance Low suite/smtpserver_rfc-compliance/test.rfc-07.rfc3461-dsn-compliance.ts

SMTP Client Test Suite

The following test categories ensure our SMTP client is production-ready, RFC-compliant, and handles all real-world scenarios properly.

Client Test Organization

test/
└── suite/
    ├── smtpclient_connection/          # Client connection management tests (CCM)
    ├── smtpclient_commands/            # Client command execution tests (CCMD)
    ├── smtpclient_email-composition/   # Email composition tests (CEP)
    ├── smtpclient_security/            # Client security tests (CSEC)
    ├── smtpclient_error-handling/      # Client error handling tests (CERR)
    ├── smtpclient_performance/         # Client performance tests (CPERF)
    ├── smtpclient_reliability/         # Client reliability tests (CREL)
    ├── smtpclient_edge-cases/          # Client edge case tests (CEDGE)
    └── smtpclient_rfc-compliance/      # Client RFC compliance tests (CRFC)

10. Client Connection Management (CCM)

Tests for validating how the SMTP client establishes and manages connections to servers.

ID Test Description Priority Implementation
CCM-01 Basic TCP Connection High suite/smtpclient_connection/test.ccm-01.basic-tcp-connection.ts
CCM-02 TLS Connection Establishment High suite/smtpclient_connection/test.ccm-02.tls-connection.ts
CCM-03 STARTTLS Upgrade High suite/smtpclient_connection/test.ccm-03.starttls-upgrade.ts
CCM-04 Connection Pooling High suite/smtpclient_connection/test.ccm-04.connection-pooling.ts
CCM-05 Connection Reuse Medium suite/smtpclient_connection/test.ccm-05.connection-reuse.ts
CCM-06 Connection Timeout Handling High suite/smtpclient_connection/test.ccm-06.connection-timeout.ts
CCM-07 Automatic Reconnection High suite/smtpclient_connection/test.ccm-07.automatic-reconnection.ts
CCM-08 DNS Resolution & MX Records High suite/smtpclient_connection/test.ccm-08.dns-mx-resolution.ts
CCM-09 IPv4/IPv6 Dual Stack Support Medium suite/smtpclient_connection/test.ccm-09.dual-stack-support.ts
CCM-10 Proxy Support (SOCKS/HTTP) Low suite/smtpclient_connection/test.ccm-10.proxy-support.ts
CCM-11 Keep-Alive Management Medium suite/smtpclient_connection/test.ccm-11.keepalive-management.ts

11. Client Command Execution (CCMD)

Tests for validating how the client sends SMTP commands and processes responses.

ID Test Description Priority Implementation
CCMD-01 EHLO/HELO Command Sending High suite/smtpclient_commands/test.ccmd-01.ehlo-helo-sending.ts
CCMD-02 MAIL FROM Command with Parameters High suite/smtpclient_commands/test.ccmd-02.mail-from-parameters.ts
CCMD-03 RCPT TO Command with Multiple Recipients High suite/smtpclient_commands/test.ccmd-03.rcpt-to-multiple.ts
CCMD-04 DATA Command and Content Transmission High suite/smtpclient_commands/test.ccmd-04.data-transmission.ts
CCMD-05 AUTH Command (LOGIN, PLAIN, CRAM-MD5) High suite/smtpclient_commands/test.ccmd-05.auth-mechanisms.ts
CCMD-06 Command Pipelining Medium suite/smtpclient_commands/test.ccmd-06.command-pipelining.ts
CCMD-07 Response Code Parsing High suite/smtpclient_commands/test.ccmd-07.response-parsing.ts
CCMD-08 Extended Response Handling Medium suite/smtpclient_commands/test.ccmd-08.extended-responses.ts
CCMD-09 QUIT Command and Graceful Disconnect High suite/smtpclient_commands/test.ccmd-09.quit-disconnect.ts
CCMD-10 RSET Command Usage Medium suite/smtpclient_commands/test.ccmd-10.rset-usage.ts
CCMD-11 NOOP Keep-Alive Low suite/smtpclient_commands/test.ccmd-11.noop-keepalive.ts

12. Client Email Composition (CEP)

Tests for validating email composition, formatting, and encoding.

ID Test Description Priority Implementation
CEP-01 Basic Email Headers High suite/smtpclient_email-composition/test.cep-01.basic-headers.ts
CEP-02 MIME Multipart Messages High suite/smtpclient_email-composition/test.cep-02.mime-multipart.ts
CEP-03 Attachment Encoding High suite/smtpclient_email-composition/test.cep-03.attachment-encoding.ts
CEP-04 UTF-8 and International Characters High suite/smtpclient_email-composition/test.cep-04.utf8-international.ts
CEP-05 Base64 and Quoted-Printable Encoding Medium suite/smtpclient_email-composition/test.cep-05.content-encoding.ts
CEP-06 HTML Email with Inline Images Medium suite/smtpclient_email-composition/test.cep-06.html-inline-images.ts
CEP-07 Custom Headers Low suite/smtpclient_email-composition/test.cep-07.custom-headers.ts
CEP-08 Message-ID Generation Medium suite/smtpclient_email-composition/test.cep-08.message-id.ts
CEP-09 Date Header Formatting Medium suite/smtpclient_email-composition/test.cep-09.date-formatting.ts
CEP-10 Line Length Limits (RFC 5322) High suite/smtpclient_email-composition/test.cep-10.line-length-limits.ts

13. Client Security (CSEC)

Tests for client-side security features and protections.

ID Test Description Priority Implementation
CSEC-01 TLS Certificate Verification High suite/smtpclient_security/test.csec-01.tls-verification.ts
CSEC-02 Authentication Mechanisms High suite/smtpclient_security/test.csec-02.auth-mechanisms.ts
CSEC-03 OAuth2 Support Medium suite/smtpclient_security/test.csec-03.oauth2-support.ts
CSEC-04 Password Security (No Plaintext) High suite/smtpclient_security/test.csec-04.password-security.ts
CSEC-05 DKIM Signing High suite/smtpclient_security/test.csec-05.dkim-signing.ts
CSEC-06 SPF Record Compliance Medium suite/smtpclient_security/test.csec-06.spf-compliance.ts
CSEC-07 Secure Credential Storage High suite/smtpclient_security/test.csec-07.credential-storage.ts
CSEC-08 TLS Version Enforcement High suite/smtpclient_security/test.csec-08.tls-version-enforcement.ts
CSEC-09 Certificate Pinning Low suite/smtpclient_security/test.csec-09.certificate-pinning.ts
CSEC-10 Injection Attack Prevention High suite/smtpclient_security/test.csec-10.injection-prevention.ts

14. Client Error Handling (CERR)

Tests for how the client handles various error conditions.

ID Test Description Priority Implementation
CERR-01 4xx Error Response Handling High suite/smtpclient_error-handling/test.cerr-01.4xx-errors.ts
CERR-02 5xx Error Response Handling High suite/smtpclient_error-handling/test.cerr-02.5xx-errors.ts
CERR-03 Network Failure Recovery High suite/smtpclient_error-handling/test.cerr-03.network-failures.ts
CERR-04 Timeout Recovery High suite/smtpclient_error-handling/test.cerr-04.timeout-recovery.ts
CERR-05 Retry Logic with Backoff High suite/smtpclient_error-handling/test.cerr-05.retry-backoff.ts
CERR-06 Greylisting Handling Medium suite/smtpclient_error-handling/test.cerr-06.greylisting.ts
CERR-07 Rate Limit Response Handling High suite/smtpclient_error-handling/test.cerr-07.rate-limits.ts
CERR-08 Malformed Server Response Medium suite/smtpclient_error-handling/test.cerr-08.malformed-responses.ts
CERR-09 Connection Drop During Transfer High suite/smtpclient_error-handling/test.cerr-09.connection-drops.ts
CERR-10 Authentication Failure Handling High suite/smtpclient_error-handling/test.cerr-10.auth-failures.ts

15. Client Performance (CPERF)

Tests for client performance characteristics and optimization.

ID Test Description Priority Implementation
CPERF-01 Bulk Email Sending High suite/smtpclient_performance/test.cperf-01.bulk-sending.ts
CPERF-02 Connection Pool Efficiency High suite/smtpclient_performance/test.cperf-02.pool-efficiency.ts
CPERF-03 Memory Usage Under Load High suite/smtpclient_performance/test.cperf-03.memory-usage.ts
CPERF-04 CPU Usage Optimization Medium suite/smtpclient_performance/test.cperf-04.cpu-optimization.ts
CPERF-05 Parallel Sending Performance High suite/smtpclient_performance/test.cperf-05.parallel-sending.ts
CPERF-06 Large Attachment Handling Medium suite/smtpclient_performance/test.cperf-06.large-attachments.ts
CPERF-07 Queue Management High suite/smtpclient_performance/test.cperf-07.queue-management.ts
CPERF-08 DNS Caching Efficiency Medium suite/smtpclient_performance/test.cperf-08.dns-caching.ts

16. Client Reliability (CREL)

Tests for client reliability and resilience.

ID Test Description Priority Implementation
CREL-01 Long Running Stability High suite/smtpclient_reliability/test.crel-01.long-running.ts
CREL-02 Failover to Backup MX High suite/smtpclient_reliability/test.crel-02.mx-failover.ts
CREL-03 Queue Persistence High suite/smtpclient_reliability/test.crel-03.queue-persistence.ts
CREL-04 Crash Recovery High suite/smtpclient_reliability/test.crel-04.crash-recovery.ts
CREL-05 Memory Leak Prevention High suite/smtpclient_reliability/test.crel-05.memory-leaks.ts
CREL-06 Concurrent Operation Safety High suite/smtpclient_reliability/test.crel-06.concurrency-safety.ts
CREL-07 Resource Cleanup Medium suite/smtpclient_reliability/test.crel-07.resource-cleanup.ts

17. Client Edge Cases (CEDGE)

Tests for unusual scenarios and edge cases.

ID Test Description Priority Implementation
CEDGE-01 Extremely Slow Server Response Medium suite/smtpclient_edge-cases/test.cedge-01.slow-server.ts
CEDGE-02 Server Sending Invalid UTF-8 Low suite/smtpclient_edge-cases/test.cedge-02.invalid-utf8.ts
CEDGE-03 Extremely Large Recipients List Medium suite/smtpclient_edge-cases/test.cedge-03.large-recipient-list.ts
CEDGE-04 Zero-Byte Attachments Low suite/smtpclient_edge-cases/test.cedge-04.zero-byte-attachments.ts
CEDGE-05 Server Disconnect Mid-Command High suite/smtpclient_edge-cases/test.cedge-05.mid-command-disconnect.ts
CEDGE-06 Unusual Server Banners Low suite/smtpclient_edge-cases/test.cedge-06.unusual-banners.ts
CEDGE-07 Non-Standard Port Connections Medium suite/smtpclient_edge-cases/test.cedge-07.non-standard-ports.ts

18. Client RFC Compliance (CRFC)

Tests for RFC compliance from the client perspective.

ID Test Description Priority Implementation
CRFC-01 RFC 5321 Client Requirements High suite/smtpclient_rfc-compliance/test.crfc-01.rfc5321-client.ts
CRFC-02 RFC 5322 Message Format High suite/smtpclient_rfc-compliance/test.crfc-02.rfc5322-format.ts
CRFC-03 RFC 2045-2049 MIME Compliance High suite/smtpclient_rfc-compliance/test.crfc-03.mime-compliance.ts
CRFC-04 RFC 4954 AUTH Extension High suite/smtpclient_rfc-compliance/test.crfc-04.auth-extension.ts
CRFC-05 RFC 3207 STARTTLS High suite/smtpclient_rfc-compliance/test.crfc-05.starttls.ts
CRFC-06 RFC 1870 SIZE Extension Medium suite/smtpclient_rfc-compliance/test.crfc-06.size-extension.ts
CRFC-07 RFC 6152 8BITMIME Extension Medium suite/smtpclient_rfc-compliance/test.crfc-07.8bitmime.ts
CRFC-08 RFC 2920 Command Pipelining Medium suite/smtpclient_rfc-compliance/test.crfc-08.pipelining.ts

Running SMTP Client Tests

Run All Client Tests

cd dcrouter
pnpm test test/suite/smtpclient_*

Run Specific Client Test Category

# Run all client connection tests
pnpm test test/suite/smtpclient_connection

# Run all client security tests
pnpm test test/suite/smtpclient_security

Run Single Client Test File

# Run basic TCP connection test
tsx test/suite/smtpclient_connection/test.ccm-01.basic-tcp-connection.ts

# Run AUTH mechanisms test
tsx test/suite/smtpclient_commands/test.ccmd-05.auth-mechanisms.ts

Client Performance Benchmarks

Expected performance metrics for production-ready SMTP client:

  • Sending Rate: >100 emails per second (with connection pooling)
  • Connection Pool Size: 10-50 concurrent connections efficiently managed
  • Memory Usage: <500MB for 1000 concurrent email operations
  • DNS Cache Hit Rate: >90% for repeated domains
  • Retry Success Rate: >95% for temporary failures
  • Large Attachment Support: Files up to 25MB without performance degradation
  • Queue Processing: >1000 emails/minute with persistent queue

Client Security Requirements

All client security tests must pass for production deployment:

  • TLS Support: TLS 1.2+ required, TLS 1.3 preferred
  • Authentication: Support for LOGIN, PLAIN, CRAM-MD5, OAuth2
  • Certificate Validation: Proper certificate chain validation
  • DKIM Signing: Automatic DKIM signature generation
  • Credential Security: No plaintext password storage
  • Injection Prevention: Protection against header/command injection

Client Production Readiness Criteria

Production Gate 1: Core Functionality (>95% tests passing)

  • Basic connection establishment
  • Command execution and response parsing
  • Email composition and sending
  • Error handling and recovery

Production Gate 2: Advanced Features (>90% tests passing)

  • Connection pooling and reuse
  • Authentication mechanisms
  • TLS/STARTTLS support
  • Retry logic and resilience

Production Gate 3: Enterprise Ready (>85% tests passing)

  • High-volume sending capabilities
  • Advanced security features
  • Full RFC compliance
  • Performance under load

Key Differences: Server vs Client Tests

Aspect Server Tests Client Tests
Focus Accepting connections, processing commands Making connections, sending commands
Security Validating incoming data, enforcing policies Protecting credentials, validating servers
Performance Handling many clients concurrently Efficient bulk sending, connection reuse
Reliability Staying up under attack/load Retrying failures, handling timeouts
RFC Compliance Server MUST requirements Client MUST requirements

Test Implementation Priority

  1. Critical (implement first):

    • Basic connection and command sending
    • Authentication mechanisms
    • Error handling and retry logic
    • TLS/Security features
  2. High Priority (implement second):

    • Connection pooling
    • Email composition and MIME
    • Performance optimization
    • RFC compliance
  3. Medium Priority (implement third):

    • Advanced features (OAuth2, etc.)
    • Edge case handling
    • Extended performance tests
    • Additional RFC extensions
  4. Low Priority (implement last):

    • Proxy support
    • Certificate pinning
    • Unusual scenarios
    • Optional RFC features