Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.3.0
-
None
Description
JamesSPoolManager and LinearProcessor should be refactored in 3 layers:
1) the spoolmanager: create threads and worker, accept mails and pass them to the "mail processor"
2) JamesProcessor: manage a list of processors and pass the mail to the processor given its current state
3) LInearProcessor: remain almost unchanged, but handle its own configuration.
The 3 objects could be transformed in toplevel components in order to remove the ContainerUtil usage and have a better codebase to run in different containers.
The final goal would be to have a modular spoolmanager: we could then introduce an OutgoingSpoolManager that simply implement the current "scheduling" and people could wire together spoolmanagers and mail processors as they prefer.
It also makes more sense to have the RemoteDelivery in a top level component instead of using Mailet instantiated threads.