- Replace placeholder message generation with actual IMAP message fetching using go-message library - Add per-account CouchDB databases for better organization and isolation - Implement native CouchDB attachment storage with proper revision management - Add command line argument parsing with --max-messages flag for controlling message processing limits - Support both sync and archive modes with proper document synchronization - Add comprehensive test environment with Podman containers (GreenMail IMAP server + CouchDB) - Implement full MIME multipart parsing for proper body and attachment extraction - Add TLS and plain IMAP connection support based on port configuration - Update configuration system to support sync vs archive modes - Create test scripts and sample data for development and testing Key technical improvements: - Real email envelope and header processing with go-imap v2 API - MIME Content-Type and Content-Disposition parsing for attachment detection - CouchDB document ID generation using mailbox_uid format for uniqueness - Duplicate detection and prevention to avoid re-storing existing messages - Proper error handling and connection management for IMAP operations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
38 lines
No EOL
961 B
YAML
38 lines
No EOL
961 B
YAML
version: '3.8'
|
|
|
|
services:
|
|
# CouchDB for testing
|
|
couchdb:
|
|
image: docker.io/couchdb:3.3
|
|
container_name: mail2couch_test_couchdb
|
|
environment:
|
|
- COUCHDB_USER=admin
|
|
- COUCHDB_PASSWORD=password
|
|
ports:
|
|
- "5984:5984"
|
|
volumes:
|
|
- couchdb_data:/opt/couchdb/data
|
|
networks:
|
|
- mail2couch_test
|
|
|
|
# GreenMail IMAP server for testing
|
|
greenmail:
|
|
image: docker.io/greenmail/standalone:2.0.1
|
|
container_name: mail2couch_test_imap
|
|
ports:
|
|
- "3143:3143" # IMAP
|
|
- "3993:3993" # IMAPS
|
|
- "3025:3025" # SMTP
|
|
environment:
|
|
- GREENMAIL_OPTS=-Dgreenmail.setup.test.all -Dgreenmail.hostname=0.0.0.0 -Dgreenmail.users=testuser1:password123@localhost,testuser2:password456@localhost,syncuser:syncpass@localhost,archiveuser:archivepass@localhost
|
|
networks:
|
|
- mail2couch_test
|
|
depends_on:
|
|
- couchdb
|
|
|
|
volumes:
|
|
couchdb_data:
|
|
|
|
networks:
|
|
mail2couch_test:
|
|
driver: bridge |