[spf-discuss] Ideas for future "unified" auth schemes
2005-09-28 23:59:58
There was a lot of material posted on the thread "Re: Question on a unified
policy record approach" - I haven't made it through all of it, but perhaps
now would be a good time to resume talking about applying SPF syntax
against other identities.
I had sort of put this issue on the back burner while we were working on
SPF-Classic drafts, and getting our draft pushed to the RFC editor, getting
an RR type for our future use, etc., were higher priorities. But I have
started seeing discussion on SPF3, SPF2.0/helo or other slashed strings, or
op=whatever modifiers, so perhaps those of us who care about unification
can start to float some ideas around.
SPF Classic (v=spf1) has an inherent limitation that it is only intended
for use against the MAIL FROM and HELO (2821) identities. However, there
still exists the possibility for using the SPF language for other
identities (just not the v=spf1 part) so that domains can publish a
2822-From policy, 2822-Sender policy, etc. The SPF language provides an
excellent set of mechanisms for anything that compares a domain name with a
sending IP, so there's no real reason why it can't be applied to other
identities. The only thing the language lacks is a method to say "what
identity does this apply to?" and I believe that can be addressed simply
and well, if taken with a certain amount of deliberation and care.
To me, "Unified" means the following. (If you have a different idea of
what "unified" means or should mean, please question the heck out of my
assumptions so that we can try to proceed on a common basis).
1. An IP is required. "Unified" syntax still uses Domain and IP, and not
much more.
The SPF syntax works quite well for correlating a Domain and an IP, and
getting one of a small number of possibilities. We will probably not have
much traction if we try to apply SPF language and concepts to something
that doesn't depend on a Domain and IP.
2. A single identity is required. "Unified" can validate one identity with
one IP, but doesn't link one identity with other identities.
The SPF language can tell whether one IP is allowed to use the domain in
the identity, but it can't (shouldn't) say "X identity needs to match Y
identity". Identities don't outrank or trump each other. SPF-Unified is
only used for checking one identity at a time.
3. A single domain is required. "Unified" doesn't compare the policies for
multiple domains.
There is only one domain we are interested in at any given time, and that
is the domain of the identity we are trying to validate. An identity has
to have one and only one domain name to play. If we only validate one
identity at a time, we only care about one domain at a time - that is the
domain claimed by the identity value.
What I'm not really comfortable with is statements that say "Our Sender:
domain will always match our 2821 MAIL FROM", or "Our HELO will always be X
if our From: is Y". We don't have a great technology for comparing
multiple identities to each other to make sure they are the same or similar
enough. What if they are different, and looking up both domains leads to
different/conflicting policies? Trying to establish a correlation or
hierarchy may be useful in some circumstances, but SPF language is not a
good tool for that. Therefore, I don't want to stretch SPF to try and
create equivalences or enforce matching - we should focus on what SPF
language does best: one identity, one domain and one IP.
Some receivers will have their own local policy that says "Check HELO, then
MAIL FROM, then Sender." I would like SPF to be the method that gets used
three times in that recipe, for a different identity each time. I don't
want to try and stretch SPF to enforce any ordering. SPF can't say "Allow
HELO, but only if MAIL FROM fails" or anything like that -- it's not
equipped for it. For one thing, I don't think there's a strong need for
that, but for another, what should be done if the domains are different and
their policies are conflicting?
The following discussion probably only makes sense if the above assumptions
are kept in mind.
Option 1. tag the scope with the version
SPF2.0/mfrom and SPF2.0/helo are examples of the "tag the string" method.
The receiver looks up the domain (for whichever identity is currently being
examined) and discards any policy not containing the current scope between
"SPF2.0/" and the next space. That means the policy for MAIL FROM could be
found in SPF2.0/mfrom, or in SPF2.0/helo,mfrom.
This approach has the advantage of being pretty readable and readily
understood. However, if there are three or more policies for different
identities, we start to strain our possible responses to the TXT query on
the domain.
It is possible to apply a global anything-goes to a domain (for example, a
domain that sends no email ever could have "SPF2.0 -all" with no slash.)
The risk there is that the record might be automatically applied in the
future to identities that we didn't think of to check before. Having some
sort of wildcard or "applies to all" mode is good, because I really really
think that most domains will want the same policy for HELO, MAIL FROM,
Sender, etc. This should be the "easy mode"
Option 2. op=mfrom or similar modifier
I don't like the modifier option as much, because like option 1, it still
makes the TXT longer and requires you to list everything up front.
Option 3. Scope is a macro
This idea is based on the assumption that most domains will want the same
policy for any identity bearing that domain. If you want the same policy
across the board, you just don't have to use the macro at all. If you do
want to vary the policy for HELO or MFROM or Sender, then you have to test
%{scope} and redirect to another TXT query. That way, if you really need a
different policy for different scope, you can totally have it, and you're
not crowding the initial TXT query.
I'm assuming here that most domains can come up with a single IP list that
embraces all possible usages of the domain, in any identity. If you can
come up with a list of trusted IPs for all possible uses of your domain in
a header, publish that as the one/only rule. If you (for whatever reason)
want a domain used as a HELO domain but blocked from ever being a MAIL FROM
domain, you can do that, it's just a little more complex than the single-IP
list.
This is NOT to say that the identities need to be the same. If the HELO
domain is ABC.com and the Mail From domain is DEF.com, no problem, check
HELO (using %{scope}=helo) against ABC.com and then check Mail From against
DEF.com. Don't make it more complex than it has to be.
In other words, we would encourage people to put together a single list of
IPs that can be applied to all identities. If it works for Mail From, and
for HELO, then it probably works for just about anything. If the set of
IPs is allowed to use our name in MAIL FROM, but not HELO, you can probably
accomplish this by using a slightly different name in HELO. But, the tools
for scope (macro) will be there for the small fraction of folks who need
them.
OK that's all for now. Talk to you soon.
gregc
--
Greg Connor <gconnor(_at_)nekodojo(_dot_)org>
-------
Sender Policy Framework: http://spf.pobox.com/
Archives at http://archives.listbox.com/spf-discuss/current/
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname=spf-discuss(_at_)v2(_dot_)listbox(_dot_)com
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [spf-discuss] Ideas for future "unified" auth schemes,
Greg Connor <=
|
|
|