Ovviamente non è così difficile inviare e-mail da un'applicazione Java EE tramite JavaMail. Quello che mi interessa è il modello migliore per ricevere le email (la notifica rimbalza, soprattutto)? Non sono interessato agli approcci basati su IMAP/POP3 (polling nella casella di posta in arrivo) - la mia domanda deve rispondere alle e-mail in entrata.Come ricevere e-mail nell'applicazione Java EE
Un approccio che riuscivo a pensare sarebbe
- Tenere esistente MTA (postfix su Linux nel mio caso) -> ops squadra sa già come configurare/operare
- Per ogni i messaggi che arrivano, genera una app Java che riceve i dati e li invia tramite JMS. Potrei farlo tramite una voce in/etc/alias come
myuser: "|/path/to/javahelper"
con javahelper che chiama l'app Java, passando con STDIN. - MDB (parte dell'applicazione Java EE) riceve il messaggio JMS, lo analizza, rileva il messaggio di mancato recapito e agisce di conseguenza.
Un altro approccio potrebbe essere
- Aprire un socket di rete di ascolto sulla porta 25 sul contenitore di applicazioni Java EE.
- Associare un SessionBean al socket. Bean fa parte dell'applicazione Java EE e può analizzare/rilevare bounce/gestire direttamente i messaggi.
- Tenere MTA esistente come relè in entrata, fare tutto il suo filtri di protezione/spam, ma le email in avanti per
myuser
(che passano il filtro) al contenitore di applicazioni Java EE, porta 25.
Il primo approccio che ho fatto prima (anche se in una lingua/configurazione diversa).
Da un punto di vista delle prestazioni e della (percezione) della pulizia, ritengo che il secondo approccio sia migliore, ma richiederebbe una corretta implementazione del trasporto SMTP. Inoltre, non so se è possibile connettere una presa di rete con un bean ...
Qual è il tuo consiglio? Avete dettagli sul secondo approccio?
Quale approccio ha finalmente scelto? – Theo
Il progetto è andato su un backburner per un bel po '. In questo momento ci sto lavorando di nuovo, ma non ho ancora implementato la parte ricevente. Finora, il mio piano è quello di seguire il suggerimento di sleske e scansionare una casella di posta elettronica a intervalli regolari tramite IMAP. – Hank
Elimina il jms in op 1 e invialo tramite arricciatura generata/http a un endpoint di resto e puoi tagliare un pezzo (JMS/MDB) di conf/complex out. – alphazero