Skip to main content

Mòdul FileMailer-PG #

La plataforma FileMailer — ara a escala empresarial. Milions de correus, petabytes d’adjunts, zero duplicats, una API neta.

FileMailer Module

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.

FileMailer-PG és el germà gran de FileMailer-FM. Mateixa filosofia, molta més potència: escalabilitat horitzontal, comptes il·limitats, deduplicació integrada, emmagatzematge S3 estàndard i una API preparada per a producció.

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 UIDVALIDITY que 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-To i References
  • 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 ThreadPoolExecutor dedicat (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 .eml original desat a Minio

Seguretat #

  • Credencials IMAP / SMTP xifrades amb AES-GCM abans de persistir-se — les contrasenyes en clar mai s’escriuen
  • ApiKeyAuthenticationFilter valida cada petició i actualitza lastUsedAt
  • 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 launchd per 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.


Preus #

Sense botiga en línia. Aquest lloc no ven mòduls directament. Per a compres, pressupostos a mida, configuracions en paquet o peticions especials, contacteu amb nosaltres i en parlem: condicions, llicències i opcions d’implantació.