On Sat, 2007-01-13 Hanno Hecker wrote:
> On Sat, 13 Jan 2007 20:57:05 +0100
>
> Joe Knall <[EMAIL PROTECTED]> wrote:
> > Imagine a mail like this:
> > echo test | mail -r [EMAIL PROTECTED] -s test37 \
> > [EMAIL PROTECTED],[EMAIL PROTECTED],[EMAIL PROTECTED]
> >m
> >
> > Now [EMAIL PROTECTED] doesn't exist so my check (hook_rcpt)
> > actually should return DENY, but recipient1 and recipient3 do exist
> > so my check actually should return OK.
>
> Err... you get just one recipient for reach time hook_rcpt() is
> called. 

Sorry, you are right

> Deny or accept this single recipient and all is fine. 

Sorry that's wrong

>
> > In fact if hook_rcpt returns DENY for my non existent recipient2
> > the other two won't get their messages.

well, I tried again... 
TestPlugin returns OK for [EMAIL PROTECTED] and DENY for 
[EMAIL PROTECTED], with [EMAIL PROTECTED] everything is fine;
looks like this:

client:
[EMAIL PROTECTED]:~ $ echo test | mail -r [EMAIL PROTECTED] -s test41 
[EMAIL PROTECTED],[EMAIL PROTECTED]
[EMAIL PROTECTED]:~ $ smtp-server: 550 relaying denied
"/home/joe/dead.letter" 11/325
. . . message not sent.

server (shortened):
31437 dispatching MAIL FROM: <[EMAIL PROTECTED]>
31437 full from_parameter: FROM: <[EMAIL PROTECTED]>
31437 from email address : [<[EMAIL PROTECTED]>]
31437 getting mail from <[EMAIL PROTECTED]>
31437 250 <[EMAIL PROTECTED]>, sender OK - how exciting to get mail 
from you!
31437 dispatching RCPT TO: <[EMAIL PROTECTED]>
31437 to email address : [<[EMAIL PROTECTED]>]
31437 running plugin (rcpt): TestPlugin
31437 TestPlugin plugin: denyRecipient [EMAIL PROTECTED]
31437 Plugin TestPlugin, hook rcpt returned DENY,
31437 550 relaying denied
31437 running plugin (post-connection): TestPlugin
31437 Plugin TestPlugin, hook post-connection returned DONE,
31292 cleaning up after 31437

in this case (good-rcpt is alphabetically after bad-rcpt) good-rcpt is 
not checked by hook_rcpt at all, instead the complete transaction is 
dropped, no queue.
With other names (bad alphabetically after good) good is checked, get's 
a OK, then bad fails, cleanup, no queue.

Is it a bug or am I missing something?

Joe

Reply via email to