> -----Original Message----- > From: David MacQuigg [mailto:[email protected]] > Sent: Tuesday, November 17, 2009 3:50 PM > To: Murray S. Kucherawy > Cc: Ned Freed; Tony Finch; [email protected]; IETF SMTP list > Subject: Re: Abort data transfer? > > --> Buffer --> Filter#1 --> Filter#2 --> > > I don't understand how running the filters in series requires that the > entire message be in a buffer. In the example above, filter #1 scans > the headers and decides immediately to replace the body with something > tiny. It could abort the transfer, saving a ton of work not just by > filter #2, but also in the original data transfer to the buffer.
MTA buffers the entire message, sends it to filter #1. Filter #1 changes the body. MTA sends the modified message to #2, including the new body. This can only happen if they're in series, and I can't see how it would be possible if there's not a buffer involved. Here's an even better example: MTA buffers the entire message, sends it to filter #1. Filter #1 orders the message to be rejected (or discarded). Filter #2 is told "nevermind", and never has to go through the processing of the body. For a very large message, this can be a big performance win, and again can only happen if they're in series.
