Michael Storz:
> If one of the permit-restrictions from smtpd_relay_restrictions fires
> which restriction will be evaluated next:
> - the first restriction of smtpd_recipient_restrictions or
> - the first restriction of smtpd_data_restrictions

With smtpd_client, helo, sender, recipient, and data restrictions,
a "permit" result never "skips over" other restriction lists.  That
is a good reason to make relay restrictions behave in the same way.
It keeps the system consistent, and minimizes the learning curve.

With smtpd_delay_reject=yes, the basic algorithm is:

    if (eval(restriction_list_1 + permit) == reject
    or eval(restriction_list_2 + permit) == reject
    ..
    or eval(restriction_list_N + permit) == reject)
            reject

Where "+" is the concatenation operator, and where the sequence of
"or" clauses is evaluated from left to right and terminates as soon
as the result is known. 

When people understand how Postfix works, the above is roughly what
they have in mind. As long as Postfix adheres to this model there
will be no surprises when smtpd_relay_restrictions is added.

        Wietse

Reply via email to