- Add environment variable overrides for sensitive credentials in both Go and Rust implementations - Support MAIL2COUCH_COUCHDB_USER and MAIL2COUCH_COUCHDB_PASSWORD for CouchDB credentials - Support MAIL2COUCH_IMAP_<NAME>_USER and MAIL2COUCH_IMAP_<NAME>_PASSWORD for IMAP credentials - Implement automatic name normalization for mail source names to environment variable format - Add runtime display of active environment variable overrides - Enhance --help output in both implementations with comprehensive environment variable documentation - Add detailed environment variable section to README with usage examples and security benefits - Create comprehensive ENVIRONMENT_VARIABLES.md reference guide with SystemD, Docker, and CI/CD examples - Update all documentation indices and cross-references - Include security best practices and troubleshooting guidance - Maintain full backward compatibility with existing configuration files This enhancement addresses the high-priority security requirement to eliminate plaintext passwords from configuration files while providing production-ready credential management for both development and deployment scenarios. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
6.2 KiB
6.2 KiB
mail2couch Development Roadmap
Last Updated: August 2025
This document outlines the development roadmap for mail2couch, with both Go and Rust implementations now in production-ready status.
✅ Completed Major Milestones
Production Readiness (August 2025)
- ✅ Full Feature Parity: Both implementations provide identical functionality
- ✅ Server-side IMAP SEARCH: Keyword filtering implemented in both Go and Rust
- ✅ Binary Attachment Support: Verified working with CouchDB native attachments
- ✅ Incremental Sync: Cross-implementation compatibility verified
- ✅ Dry-run Mode: Comprehensive testing capabilities in both implementations
- ✅ Error Handling: Robust retry logic and graceful fallbacks
- ✅ SystemD Integration: Timer units for automated scheduling
- ✅ Build System: Unified justfile for both implementations
- ✅ Documentation: Comprehensive guides and comparisons
- ✅ Code Quality: All linting and formatting standards met
Architecture & Testing
- ✅ Database Output Equivalence: Both implementations produce identical CouchDB documents
- ✅ Filtering Accuracy: Server-side IMAP LIST and SEARCH with client-side fallbacks
- ✅ Connection Handling: TLS support, automatic retry, graceful error recovery
- ✅ Configuration Management: Automatic file discovery, validation, GNU-style CLI
Originally Planned Features (Now Complete)
- ✅ Keyword Filtering for Messages: Subject, sender, and recipient keyword filtering implemented
- ✅ Real IMAP Message Parsing: Full message content extraction with go-message and mail-parser
- ✅ Message Body Extraction: HTML/plain text and multipart message support
- ✅ Attachment Handling: Complete binary attachment support with CouchDB native storage
- ✅ Error Recovery: Comprehensive retry logic and partial sync recovery
- ✅ Performance: Batch operations and efficient CouchDB insertion
🚧 Current Development Priorities
Recently Completed ✅
- 🔐 Enhanced Security Model
- ✅ Environment variable credential support (
MAIL2COUCH_IMAP_PASSWORD, etc.) - ✅ Eliminate plaintext passwords from configuration files
- ✅ Comprehensive documentation and help integration
- ❌ System keyring integration for credential storage (future enhancement)
- ✅ Environment variable credential support (
High Priority
Medium Priority
-
🚀 Go Implementation Concurrency
- Optional goroutine-based parallel mailbox processing
- Maintain simplicity while improving performance for multiple accounts
- Configurable concurrency levels
-
📊 Progress Indicators
- Real-time progress reporting for long-running operations
- ETA calculations for large mailbox synchronization
- Progress bars for terminal output
-
🖥️ Interactive Setup
- Guided configuration wizard (
mail2couch setup) - Interactive validation of IMAP and CouchDB connectivity
- Generate sample configurations for common providers
- Guided configuration wizard (
Low Priority
-
📈 Performance Metrics
- Built-in timing and throughput reporting
- Memory usage monitoring
- Network efficiency statistics
-
🔄 Advanced Sync Features
- Bidirectional sync capabilities
- Conflict resolution strategies
- Message modification detection
-
🌐 Web Interface
- Optional web UI for configuration and monitoring
- CouchDB view integration for email browsing
- Search interface for archived emails
-
📱 API Integration
- REST API for external system integration
- Webhook support for sync completion notifications
- Monitoring system integration
📋 Technical Debt & Improvements
Code Quality
- Unit Test Coverage: Expand test coverage for both implementations
- Integration Testing: Automated testing with various IMAP servers
- Performance Benchmarking: Standardized performance comparison tools
User Experience
- Error Messages: More descriptive error messages with suggested solutions
- Configuration Validation: Enhanced validation with helpful error descriptions
- Logging: Structured logging with different verbosity levels
Security
- OAuth2 Support: Modern authentication for Gmail, Outlook, etc.
- Credential Encryption: Encrypt stored credentials at rest
- Audit Logging: Enhanced logging of authentication and access events
🎯 Release Planning
Next Minor Release (v1.1)
- Environment variable credential support
- Interactive setup command
- Enhanced error messages
Next Major Release (v2.0)
- OAuth2 authentication support
- Web interface (optional)
- Go implementation concurrency improvements
📊 Implementation Status
| Feature Category | Go Implementation | Rust Implementation | Priority |
|---|---|---|---|
| Core Features | ✅ Complete | ✅ Complete | - |
| Security Model | ⚠️ Basic | ⚠️ Basic | High |
| Concurrency | ⚠️ Sequential | ✅ Async | Medium |
| Progress Reporting | ⚠️ Basic | ⚠️ Basic | Medium |
| Interactive Setup | ❌ Missing | ❌ Missing | Medium |
| Web Interface | ❌ Missing | ❌ Missing | Low |
🤝 Contributing
Areas Needing Contribution
- Security Features: OAuth2 implementation, credential encryption
- User Experience: Interactive setup, progress indicators
- Testing: Unit tests, integration tests, performance benchmarks
- Documentation: Usage examples, troubleshooting guides
Development Guidelines
- Maintain feature parity between Go and Rust implementations
- Follow established code quality standards (linting, formatting)
- Include comprehensive testing for new features
- Update documentation with new functionality
📝 Notes
Design Decisions
- Two Implementations: Maintain both Go (simplicity) and Rust (performance) versions
- Configuration Compatibility: Ensure identical configuration formats
- Database Compatibility: Both implementations must produce identical CouchDB output
Long-term Vision
- Position Go implementation for personal/small-scale use
- Position Rust implementation for enterprise/large-scale use
- Maintain migration path between implementations
- Focus on reliability and data integrity above all else