--On Wednesday, 03 July, 2002 22:59 -0700
I, at least, would find such comments helpful. But I'd also
like to hear comments from at least one person responsible
for a general-purpose MTA (as distinct from a fax-over-email
engine) who expects to implement this feature and how they
propose to do so and how this feature fits in.
There are two cases here: Client and server implementations.
I definitely plan to implement the server side of this
proposal. From that perspective all of the proposed variants
are easy to implement as long as you have a source of conneg
information to tap. I plan to use an LDAP attribute for this
Interesting. Instead of "ask the receiving client", you would
rely on a database that proported to know the client's behavior
and capabilities. That certainly makes implementation easier
and might also deal with the relay situation by permitting the
first (and subsequent?) relays to ask the database rather than
replying "no clue about the client, I don't deliver to it" (the
latter is one of the cases I've been concerned about). However:
(i) It would seem to me to be reasonable to write this option
down (as an option) rather than leaving implementers guessing.
Writing it down would be fine with me, although to be honest this struck me as
the obvious way to do it. OTOH, there certainly have been cases in the past
when I refrained from documenting what I thought was obvious in one of my own
drafts, only to find it was nothing of the sort.
(ii) Given the notorious "wks" experience, with trying to put
target host capabilities into an ancillary database, it seems to
me that this would further justify experimental status so that
we can get some sense as to whether the database would be kept
adequately up-to-date. Certainly our experience should cause us
to be skeptical about that.
I think the differences between this and wks far outweigh the similarities.
Specifically, the major problem with wks records was that the authority
over/responsibility for wks records and authority over/responsibility for the
aspects of systems wks describes tended to be disjoint. Back in the days when I
maintained a reasonably heftly DNS zone I never had enough time to keep wks
records up to date with all the changes the various sysadmins kept making, and
after a while I stopped trying. And of course the sysadmins didn't have the
means to maintain this information in the DNS themselves.
The situation with an LDAP directory used for messaging is quite different.
Such directories often already maintain a bunch of user-settable information
(e.g., filtering rules, personal address book) and typically provide the means
(e.g., a web interface) for users to maintain and modify that information
Of course having such a capability doesn't mean users will actually take the
time to use it. I suspect that's going to be very dependent on both need and
the quality of the user interface; presenting raw media feature sets definitely
isn't the way to go ;-)
The client side for a general-purpose MTA is much harder, but
not because of any aspect of the protocol. The issue I have
there is how to match up an arbitrary set of site-provided
conversion operations with the current group of recipient
feature sets. I don't see a good solution to this other than
making the whole thing something the site specifies, and if I
do that I see little chance of the capability actually being
used by enough sites to justify the cost of implementation.
One final comment. A general-purpose MTA using arbitrary
site-provided conversion routines doesn't have the luxury of
being able to bound the performance or other characteristics
of those conversion routines. This makes the entire
convert-on-the-fly scenario problematic in ways that don't
arise for a device built around a specific, limited and well
understood set of on-the-fly converters, regardless of whether
that device is a fax machine or something else entirely.
Indeed, if I were to implement based on past bad experiences
with various general-purpose conversion routines I'd be likely
to break the problem down into three steps: (1) Collection of
conneg information online, (2) Message splitting and
conversion offline, (3) Sending the resulting emssages to
their destination. I doubt I'd support using REQUIRED in (1).
I can only agree with both of these comments and complement you
on the clarity of your explanation of them.
I had a couple of other thoughts about this over the past couple of days:
(0) There are/will be additional ways to obtain conneg information: In
DSNs or MDNs, through LDAP queries, via RESCAP, or through direct
database queries within a single mail system. The database/directory
mechanism can be used to advantage in all of these cases.
(1) Caching of conneg information is certainly possible and may even
be desireable. Indeed, conneg information returned in DSNs or MDNs will
have to be cached in order to be useful. This document doesn't discuss
caching, and while caching isn't required in the ESMTP context some
discussion of it nevertheless makes sense.
(2) The use of caches really opens the door to conneg in the context
of relays in ways that nothing else does. For example, imagine a relay
that doesn't do any content transformation of its own but does do forward
conneg requests to populate a cache. It then offers the information it
has in that cache when it acts as a server. This may sound kind of cool
at first glance, but as the cache comes and goes it would tend to
violate the least astonishment principle in fairly major ways.
Issues also arise if multiple relays are used, each with a separate
cache. Care is needed here to preserve the ability to "rack and stack"
mail relays without undue consequences.
This isn't a typical cache since the goal isn't to minimize the number
of forward queries that are done. The intent here is to provide the
information from those queries in a completely different context.
The variability problems here can be solved by going to either
extreme: Ban caches of this sort entirely or insist that components
that actually perform content transformations cache conneg information
for a fairly long period. (It should be obvious that having intermediates
cache information is risky and doesn't solve the problem.) At first I
thought the right answer was to ban this stuff, but on reflection I think
the use of DSNs and MDNs to return conneg information argue for a
mandatory cache in the transformation agent.