This commit completes the Rust implementation of mail2couch with full feature parity to the Go version, including: - Complete IMAP client with TLS support and retry logic - Advanced email parsing with MIME multipart support using mail-parser - Email attachment extraction and CouchDB storage - Sync mode implementation with deleted message handling - Enhanced error handling and retry mechanisms - Identical command-line interface with bash completion - Test configurations for both implementations The Rust implementation now provides: - Memory safety and type safety guarantees - Modern async/await patterns with tokio/async-std - Comprehensive error handling with anyhow/thiserror - Structured logging and progress reporting - Performance optimizations and retry logic Test configurations created: - rust/config-test-rust.json - Rust implementation test config - go/config-test-go.json - Go implementation test config - test-config-comparison.md - Detailed comparison documentation - test-both-implementations.sh - Automated testing script Both implementations can now be tested side-by-side with identical configurations to validate feature parity and performance. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
74 lines
No EOL
1.7 KiB
JSON
74 lines
No EOL
1.7 KiB
JSON
{
|
|
"couchDb": {
|
|
"url": "http://localhost:5984",
|
|
"user": "admin",
|
|
"password": "password"
|
|
},
|
|
"mailSources": [
|
|
{
|
|
"name": "Go Wildcard All Folders Test",
|
|
"enabled": true,
|
|
"protocol": "imap",
|
|
"host": "localhost",
|
|
"port": 3143,
|
|
"user": "testuser1",
|
|
"password": "password123",
|
|
"mode": "archive",
|
|
"folderFilter": {
|
|
"include": ["*"],
|
|
"exclude": ["Drafts", "Trash"]
|
|
},
|
|
"messageFilter": {
|
|
"subjectKeywords": ["meeting", "important"],
|
|
"senderKeywords": ["@company.com"]
|
|
}
|
|
},
|
|
{
|
|
"name": "Go Work Pattern Test",
|
|
"enabled": true,
|
|
"protocol": "imap",
|
|
"host": "localhost",
|
|
"port": 3143,
|
|
"user": "syncuser",
|
|
"password": "syncpass",
|
|
"mode": "sync",
|
|
"folderFilter": {
|
|
"include": ["Work*", "Important*", "INBOX"],
|
|
"exclude": ["*Temp*"]
|
|
},
|
|
"messageFilter": {
|
|
"recipientKeywords": ["support@", "team@"]
|
|
}
|
|
},
|
|
{
|
|
"name": "Go Specific Folders Only",
|
|
"enabled": true,
|
|
"protocol": "imap",
|
|
"host": "localhost",
|
|
"port": 3143,
|
|
"user": "archiveuser",
|
|
"password": "archivepass",
|
|
"mode": "archive",
|
|
"folderFilter": {
|
|
"include": ["INBOX", "Sent", "Personal"],
|
|
"exclude": []
|
|
},
|
|
"messageFilter": {}
|
|
},
|
|
{
|
|
"name": "Go Subfolder Pattern Test",
|
|
"enabled": false,
|
|
"protocol": "imap",
|
|
"host": "localhost",
|
|
"port": 3143,
|
|
"user": "testuser2",
|
|
"password": "password456",
|
|
"mode": "archive",
|
|
"folderFilter": {
|
|
"include": ["Work/*", "Archive/*"],
|
|
"exclude": ["*/Drafts"]
|
|
},
|
|
"messageFilter": {}
|
|
}
|
|
]
|
|
} |