[Mimedefang] Order of the fuctions?

Jan Pieter Cornet johnpc at xs4all.nl
Tue Jun 21 18:28:55 EDT 2005


Sorry, I wanted to reply in one block, like you prefer, but there are so
many factual errors in your mail that I simply want to point them out
one at a time - I'll summarize below. I fear you are mixing up milter
calls and sendmail rulesets, it's important to know the difference
between these two.

On Tue, Jun 21, 2005 at 02:26:10PM -0400, James Ebright wrote:
> Looking at the recipients.c in the sendmail 8.13.4 source and at:
> http://www.milter.org/milter_api/overview.html 

recipients.c has no milter calls in it, so it must be confusing 
comparing those two.

> Sure makes it look like it breaks out during each callback to a milter then
> back, at which a milter may reject or tempfail or modify the recipients list
> at any point. Now I may not be reading it correctly or interpreting it
> correctly but it sure looks like it to me (and makes more sense to me as
> well).

Yes, this is true (except you cannot modify the recipients list at each point,
only at the xxfi_eom callback).

> Due to your "pasion" about this subject I will not respond to the list
> on this anymore, feel free to continue this via private email if you wish though. 

I'll publicly correct the mistakes you make in public :) Even if just
for the sake of someone googling up this conversation.

If you have further questions but don't want to mail to the list, you're
welcome to ask me via private email of course.

> You confirmed my "test" which also seems to corroborate it though I must
> admit, I only checked the scenario I described (which is the one that mattered
> to my implementation), so you say filter_sender ran before filter_relay when
> delay_checks is enabled in your testing? even though sendmail would check the
> recipient first and relays afterwards?

No, I never said that. I said that the order of filter_relay, filter_sender
and filter_recipient did NOT change, regardless of delay_checks. You are
mixing up ruleset checks and milter checks here. Only the _ruleset_ tests
are delayed, NOT the milter tests.

> according to the sendmail docs:
> delay_checks-	 The rulesets check_mail and check_relay will not be called when
> a client connects or issues a MAIL command, respectively. Instead, those
> rulesets will be called by the check_rcpt  ruleset; they will be skipped under
> certain circumstances.

Bingo. Mark the important word "rulesets" here. Note that it does not talk
about milters.

> Certain circumstances basically means a trusted auth mechanism or a
> spamfriend/hater setup in most cases.
> 
> It is possible my test is skewed since my users do authenticate and I do check
> for that in MD, thus might have skipped the other checks regardless?

No. It will skip some ruleset tests, but it will not skip milter tests.



I suspect your confusion arises from the fact that your unsure which
parts of the verification is done by sendmail rulesets, and which part is
done in mimedefang via milter calls, or maybe you think that mimedefang
is called as part of some rulesets. It isn't. MD is called via the
milter interface, which is pretty much completely separated from
the rulesets.

To get a feel of what happens when, it might help to add lots of logging
to your sendmail and mimedefang, just to see when things are called.
Then telnet to your sendmail, and type in the SMTP conversation while
watching the maillog. That should tell you all you need to know, provided
of course you know which check is triggered by which mechanism. If anyone
wants instructions on how to instrument sendmail and mimedefang to do
such logging, let me know, it's quite easy.

-- 
#!perl -wpl # mmfppfmpmmpp mmpffm <pmmppfmfpppppfmmmf at fpffmm4mmmpmfpmf.ppppmf>
$p=3-2*/[^\W\dmpf_]/i;s.[a-z]{$p}.vec($f=join('',$p-1?chr(sub{$_[0]*9+$_[1]*3+
$_[2]}->(map{/p|f/i+/f/i}split//,$&)+97):qw(m p f)[map{((ord$&)%32-1)/$_%3}(9,
3,1)]),5,1)='`'lt$&;$f.eig;                                # Jan-Pieter Cornet



More information about the MIMEDefang mailing list