The various eval:check_rbl() selectors are:
-notfirsthop  -firsttrusted  -untrusted  -untrusted

My understanding from the docs:

-notfirsthop  examines all IPs except the originating one, useful for
ignoring the user's direct IP, which could be a hotel or dialup IP.

-firsttrusted  examines the IP address of the relay that connected to
the outermost trusted relay (based on trusted_networks).  SA can trust
that this server exists, but it cannot trust any of the information it
provides (specifically, the relays/client it claims to have received
mail from).  This can be the relay skipped by -notfirsthop.

-untrusted  examines all IPs that are not trusted, excluding the
-firsttrusted relay but including those beyond it and the relay
skipped by -notfirsthop.

-lastexternal  examines the external host that connected to the
internal network, or at least the last external host with a public IP.

My confusion:

-firsttrusted  is "trusted" in that you can trust that the server is
valid and not forged.  It is /not/ a member of trusted_networks (this
is similar to the AWL vs whitelist issue!).  A name without the word
"trust" (like "-firstseen") would be preferable.

-untrusted  is also easily confused with "trust" from trusted_networks
though like firsttrusted, it refers to potential forgery (and it took
me a while to figure that out).  Renaming this to avoid the word
"trust" (e.g. "-maybeforged") would make it more clear.  Before
determining that "trust" refered to potential forgery, I couldn't
understand why the -firsttrusted relay wasn't included.

-lastexternal looks the same as -firsttrusted except it discards any
private IP (which I have to assume -firsttrusted does not do).  I
can't otherwise tell the difference.  Nice lookups use firsttrusted
instead of lastexternal, and I can't determine why.  Perhaps
lastexternal refers to the relay that connected to the last
(outermost) internal_network while firsttrusted refers to the relay
that connected to the outermost trusted_network?  There's more name
confusion here, too; "last" vs "first" depends on the direction you're
looking:  firsttrusted looks in the /opposite/ direction as lastexternal.

Why not have a flag for "not in trusted_networks" which would operate
like the union of what we currently call -untrusted and -firsttrusted
(or can I say 'mybl-untrusted-firsttrusted' ?) ... what would we call
such a thing?  -foreign  perhaps?

Also, "selectors" are never actually named anything; I've named them
that because the docs have headers like "selecting ..." for each one.
 They are described only as "place '-foo' at the end of the set name."
 This makes it hard to talk about them and harder to search for them
in the documentation.

-- 
Adam Katz
khopesh on irc://irc.freenode.net/#spamassassin
http://khopesh.com/Anti-spam

Reply via email to