Mòdul FileMailer-PG #
La plataforma FileMailer — ara a escala empresarial. Milions de correus, petabytes d’adjunts, zero duplicats, una API neta.

Un servei Spring Boot de nivell empresarial que sincronitza bústies IMAP amb una base de dades PostgreSQL i emmagatzema cada .eml i cada adjunt a Minio (compatible amb S3) utilitzant emmagatzematge adreçable per contingut amb deduplicació SHA-256. Una API REST completa exposa comptes, carpetes, correus, esborranys, cues i operacions d’administració — llesta per integrar-se amb FileMaker, CRM/ERP o qualsevol backend que parli HTTP.
Visió general #
FileMailer-PG està dissenyat per a desplegaments grans i crítics on importen el volum de la bústia, el compliment de l’arxivat, l’eficiència d’emmagatzematge i la disponibilitat. Desacobla les metadades (PostgreSQL) dels fitxers físics (Minio / S3), de manera que cada capa escala de forma independent.
Cada missatge entrant s’analitza, el .eml original es conserva a Minio, els adjunts s’extreuen i s’emmagatzemen per hash, i una fila rica de metadades va a PostgreSQL — llesta per a cerca de text complet, fils i consum per API.
Característiques principals #
Sincronització IMAP #
- Sincronització incremental basada en UID — només es descarreguen els missatges nous
- Notificacions push IMAP IDLE en temps real, una connexió persistent per compte
- Bloquejos de sincronització distribuïts que eviten sincronitzacions concurrents del mateix compte des d’IDLE, planificador o disparadors manuals
- Detecció automàtica de canvis de
UIDVALIDITYque dispara una re-sincronització segura - Suport multicarpeta amb exclusions configurables (Junk, Spam, Trash…) i restauració automàtica
Emmagatzematge adreçable per contingut (CAS) amb deduplicació #
- Cada correu i adjunt s’emmagatzema a Minio pel seu hash SHA-256
- El contingut idèntic es desa una sola vegada — fins a un 80% d’estalvi d’emmagatzematge en bústies corporatives típiques
- Estructura de rutes:
{prefix}/{accountId}/{hash[0:2]}/{hash[2:4]}/{hash} - Versionat del bucket activat per a arxivat immutable i retenció
- Pujada en streaming per a adjunts grans — segur en memòria per a fitxers de diversos GB
Capa de metadades PostgreSQL #
- Esquema relacional complet: comptes, carpetes, correus, adjunts, fitxers emmagatzemats, API keys
- Cerca de text complet sobre assumpte i cos
- Fils de correu via
In-Reply-ToiReferences - Esborrat lògic (
isDeleted,deletedAt) per a recuperació conforme al RGPD, amb escombrada opcional d’esborrat físic - Migracions gestionades per Flyway, pool de connexions HikariCP
Enviament SMTP i cua #
- Enviament asíncron mitjançant un
ThreadPoolExecutordedicat (cua@Async) - Reintents amb backoff exponencial per a errors SMTP transitoris
- IDs de seguiment per enviament — els clients consulten l’estat sense bloquejar-se a SMTP
- Creació i edició d’esborranys, gestió d’adjunts, respondre i reenviar
- Múltiples configuracions SMTP per compte (SSL 465 / STARTTLS 587)
- Apagada ordenada que espera els enviaments en curs
API REST potent #
- Totalment documentada amb Swagger UI i OpenAPI 3
- Autenticació sense estat mitjançant la capçalera
X-API-Key— sense sessions, sense galetes - Endpoints per a comptes, carpetes, correus, adjunts, esborranys, cua, administració i autenticació
- Injecció de capçaleres personalitzades per a fluxos d’integració amb FileMaker / CRM
- Endpoints de re-parseig que reconstrueixen les metadades a partir del
.emloriginal desat a Minio
Seguretat #
- Credencials IMAP / SMTP xifrades amb AES-GCM abans de persistir-se — les contrasenyes en clar mai s’escriuen
ApiKeyAuthenticationFiltervalida cada petició i actualitzalastUsedAt- Spring Security configurat per a REST sense estat
- Configuració CORS llesta per a clients de navegador
Escalabilitat i operació #
- Escalat horitzontal: afegeix rèpliques de PostgreSQL i nodes de Minio de forma independent
- Escalat vertical: Java 17~21, Spring Boot 3.4, HikariCP i pools d’executors afinats
- Comptes de correu il·limitats — sense llicències per compte, sense topalls artificials
- Endpoints de salut i mètriques llestos per a stacks de monitoratge
- Inclou plist de
launchdper a macOS per executar-se com a servei en segon pla
Casos d’ús #
- Arxivat de correu corporatiu i compliment — cada missatge preservat, immutable, deduplicat
- Back-office FileMaker de missió crítica — integra amb FileMaker via API REST amb escala de bústia il·limitada
- Integració amb CRM / ERP — adjunta l’historial de comunicació amb clients mitjançant una API HTTP neta
- Gestió del cicle de vida de documents — deduplicació d’adjunts a tota l’organització
- Retenció a llarg termini — el versionat de Minio manté còpies històriques fora de perill de sobreescriptures
Especificacions tècniques #
Stack #
- Java 17
- Spring Boot 3.4.x
- PostgreSQL (magatzem principal de metadades)
- Minio / qualsevol emmagatzematge compatible amb S3 (fitxers físics)
- Jakarta Mail (Eclipse Angus) per a IMAP / SMTP
- Spring Security, Spring Data JPA, HikariCP
- Flyway per a migracions de base de dades
- SpringDoc OpenAPI + Swagger UI
Requisits #
- Runtime Java 17
- Servidor PostgreSQL
- Minio (o qualsevol endpoint compatible amb S3) amb versionat activat
- Accés de xarxa als servidors IMAP i SMTP
- 1 GB de RAM mínim (2 GB+ recomanat per a bústies grans)
Desplegament #
Es distribueix com un JAR executable de Spring Boot amb application.yml extern. S’inclou un plist launchd per a macOS per executar-lo com a servei en segon pla. El mateix JAR escala des d’una VM d’un sol node fins a un desplegament Kubernetes multi-rèplica recolzat per PostgreSQL HA i un pool Minio en clúster.