Am Sonntag, den 27.08.2006, 22:45 -0400 schrieb Noel J. Bergman:
> Norman Maurer wrote:
> > Noel J. Bergman wrote:
>
> >>> private void checkValidRcpt(SMTPSession session) {
> >>> MailAddress rcpt =
> session.getState().getSMTPSession.CURRENT_RECIPIENT);
> >>> boolean invalidUser = true;
> >>>
> >>> if (session.getConfigurationData().getUsersRepository()
> >>> .contains(rcpt.getUser()) == true
> >>> || recipients.contains(rcpt.toString().toLowerCase())
> >>> || domains.contains(rcpt.getHost().toLowerCase())) {
> >> Check to see if you are doing virtual user mapping, and map the user
> >> first; THEN do the check. And if there is a valid mapping, then I
> >> would consider that to imply a valid user for remote purposes, so
> >> that we don't have to deal with adding domains for mapped forwarding
> >> addresses.
> > Can you explain a bit more ? I not understand what exactly you want to do.
>
> Well, we can optimize the order for performance, but for clarity, I had in
> mind something like:
>
> if ((mapping && map(rcpt) != null) // there is a valid mapping
> // or there is a local POP3 box of this name
> // --- BUT IT COULD BE WRONG, so allow disabling
> || (useRepository &&
> (session.getConfigurationData().getUsersRepository().contains(rcpt.getUser()
> ) == true))
> // explicit, and most likely fake, recipient, e.g., a mailing list
> address
> || (recipients != null &&
> recipients.contains(rcpt.toString().toLowerCase()))
> // explicit domain, e.g., one for which we merely forward
> || (domains != null &&
> domains.contains(rcpt.getHost().toLowerCase()))) {
> invalidUser = false;
> }
>
> NOTA BENE: the mapping code needs to make be aware of "error:" and similar
> strings that can be in the target field, and do NOT imply a successful
> mapping.
>
> We might want to restructure the code to keep the mapping result so that we
> don't need to map it again in the pipeline, although we don't want to expose
> the mapping in the Received: header we'll generate. Therefore, perhaps it
> would be best to put virtual mapping into a RCPT handler that is inserted in
> the handler chain before the ValidRcptHandler, and which can short-circuit
> the chain in the event of an invalid recipient.
>
> --- NoelOk now i understand.. And i think its a good idea to add a handler which do the mapping first. So we don't have to bother with the mapping in the ValidRcptHandler code. I will try to do the work the next days. bye Norman
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
