cmc-sales/go-app/cmd/vault
2025-07-30 19:54:10 +10:00
..
main.go Add go rewrite of vault 2025-07-30 19:54:10 +10:00
README.md Add go rewrite of vault 2025-07-30 19:54:10 +10:00

Vault Email Processor

This is a Go rewrite of the PHP vault.php script that processes emails for the CMC Sales system.

Key Changes from PHP Version

  1. No ripmime dependency: Uses the enmime Go library for MIME parsing instead of external ripmime binary
  2. Better error handling: Proper error handling and database transactions
  3. Type safety: Strongly typed Go structures
  4. Modern email parsing: Uses enmime for robust email parsing

Features

  • Processes emails from vault directory
  • Parses email headers and extracts recipients
  • Identifies and creates users as needed
  • Extracts attachments and email body parts
  • Matches document identifiers in subjects (enquiries, invoices, POs, jobs)
  • Saves emails with all associations to database
  • Moves processed emails to processed directory

Usage

go run cmd/vault/main.go \
  --emaildir=/var/www/emails \
  --vaultdir=/var/www/vaultmsgs/new \
  --processeddir=/var/www/vaultmsgs/cur \
  --dbhost=127.0.0.1 \
  --dbuser=cmc \
  --dbpass="xVRQI&cA?7AU=hqJ!%au" \
  --dbname=cmc

Build

go build -o vault cmd/vault/main.go

Dependencies

  • github.com/jhillyerd/enmime - MIME email parsing
  • github.com/google/uuid - UUID generation for unique filenames
  • github.com/go-sql-driver/mysql - MySQL driver

Database Tables Used

  • emails - Main email records
  • email_recipients - To/CC recipients
  • email_attachments - File attachments
  • emails_enquiries - Email to enquiry associations
  • emails_invoices - Email to invoice associations
  • emails_purchase_orders - Email to PO associations
  • emails_jobs - Email to job associations
  • users - System users
  • enquiries, invoices, purchase_orders, jobs - For identifier matching