[EMAIL PROTECTED] wrote:
I think fast-fail is a good thing but we need an abstract on what are the
problems we are trying to solve.

The power of mailets is that we do not have to come up with use-cases, but in this situation since there are so limited decisions/options at each command, I like breaking down the use cases as Stefano has done.


Here is the list I have in my mind, please add more use cases if you find
them.

A. SMTP connection: james currently always reply "220 server ready", we
could fast-fail based on:
 A1. remote address
 A2. current james resources/status.

Would require an API to test a remote address.

B. SMTP "MAIL FROM:": james currently only checks address syntax, we could
fast-fail based on:
 B1. banned sender addresses

API to test sending addresses.

C. SMTP "RCPT TO:": james currently checks local/remote domains to decide
wether to relay or not, but we could add:
 C1. provide "user unknown" for unavailable local addresses
 C2. provide "mailbox full"/disabled and similar task

API to test if the user is "known". That test though should also have the remote IP address and sending address (basically the non-Message part of the Mail API).


D. SMTP "DATA": james currently reply "250 Message received" for each
message under the maximum size handled:
 D1. add antivirus/antispam and other content filters and provide dedicated
failure feedback.

I'm not a big fan of this step, since I don't see much benefit to fast-failing after we've already accepted the full message, but dunno. It eliminates so IO, but then makes your server less scalable. In any case, the mailet API maps exactly here.


In order to continue the discussions about the possible solutions for this
list I would like to know if you can provide more fast-failing scenarios
(probably due to SMTP extensions like AUTH, STARTTLS, etc).

I would like.

With A and B, we have two more interfaces, which the appropriate mailets could also implement.

I don't know how to address C. Ideally that's just another interface that the appropriate mailets could implement, but it would receive a Mail-lite instead of a full Mail. The part I don't get is how you avoid duplicating code in the service(Mail) method and the postRCPT(MailLite) method.

--
Serge Knystautas
Lokitech >> software . strategy . design >> http://www.lokitech.com
p. 301.656.5501
e. [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to