Distributed James Server — Custom SMTP hooks
SMTP hooks enable extending capabilities of the SMTP server and are run synchronously upon email reception, before the email is enqueued in the MailQueue, and before any mail processing takes place.
Available generic hooks
The following interfaces allows interacting with the following commands:
-
AuthHook: Implement this interfaces to hook in the AUTH Command.
HookResult doAuth(SMTPSession session, Username username, String password);
-
HeloHook: Implement this interfaces to hook in the HELO Command
HookResult doHelo(SMTPSession session, String helo);
-
MailHook: Implement this interfaces to hook in the MAIL Command
HookResult doMail(SMTPSession session, MaybeSender sender);
-
MailParametersHook: Implement this interfaces to hook in the MAIL Command, this is called for specific mail arguments
HookResult doMailParameter(SMTPSession session, String paramName, String paramValue);
-
QuitHook: Implement this interfaces to hook in the QUIT Command
HookResult doQuit(SMTPSession session);
-
RcptHook: Implement this interfaces to hook in the RCPT Command
HookResult doRcpt(SMTPSession session, MaybeSender sender, MailAddress rcpt);
-
UnknownHook: Hook for unknown commands
HookResult doUnknown(SMTPSession session, String command);
Custom hook registration
Register you hooks using smtpserver.xml handlerchain property.
Writing additional SMTP commands
What to do if the Hook API is not enough for you ?
You want for example to write a code which handles a new command like "YOURCOOLCOMMAND: whatever@example".
For this kind of needs you should implement the CommandHandler interface. This gives you a lower-level API to handle this kind of tasks. If you want to support a custom Hook in your CommandHandler its the best to just extend AbstractHookableCmdHandler.