The original design goal stemmed from the fact that providing error messages during delivery would expose sensitive information about your mail server. For a spammer, if you tell me that mailbox is full, I know I've just confirmed the validity of my email address.
That said, a mailbox quota is a good example of when you might want to block the message before reception. But... this isn't nearly as easy as it sounds. Say I have 12 aliases mapped to my mailbox, 3 coming from static mappings in conf and 9 coming from some database table. It'd be a nightmare to try to get the SMTP handler code to know all those aliases point to my mailbox. You'd more than likely only block my base email address, and then all the aliases would still get stuck in James' spool. So, I think the accept first, ask questions later still is the best approach. It can handle any and all address mappings, and it allows for various actions when a condition like a exceeding quota is met. -- Serge Knystautas Loki Technologies - Unstoppable Websites http://www.lokitech.com Noel J. Bergman wrote: > I presume that you would want SMTPHandler to return a 452 error. > > One issue is that James really tries to be asynchronous in processing. As I > pointed out earlier, the ConnectionHandler is the only part of James that > really follows a request-response model. When SMTPHandler calls > MailServer.sendMail(), it is done (from the perspective of the sender), but > that is when processing actually begins. This effectively hinders James > from returning certain classes of error codes, e.g., an over quota error for > a user, or relaying not allowed. > > If MailServer.sendMail() were synchronous, it would act as a natural (but > still scalable) throttle, enable additional responses, and allow the > components of the processing chain to participate in the request-response > model. > > I presume that these issues were considered when when James' processing > model was designed, so I'm keen to hear from Serge. > > --- Noel > > -----Original Message----- > From: Andrei Ivanov [mailto:[EMAIL PROTECTED]] > Sent: Monday, June 03, 2002 5:13 > To: James Developers List > Subject: Re: Stroage Quota - need advice > > > Hi, > thank you guys for advices, but I was thinking about slightly different > thing. > Of course a mailet can be implemented to check quotas etc. > But this mean that before a user quota is to be checked mail will still get > to spool. And this is what my primary concern is about. > After improving SMTPHandler I was able to "pump" James with mails so that, > after "pumping" stooped it takes time for James to process all mails it has > received. If pumping continues you know what happens :-) > My opinion is that regardless of per user quota there should be a global > parameter which sets total number of messages can be handled by > JamesSpoolManager. And if this number is exceeded, SMTPserver shall just > stop handle new connections before spool is emptied enough. > Andrei -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
