[Mailman-Developers] Users, Bounces, and Virtual Domains (was (no subject))

Chuq Von Rospach chuqui@plaidworks.com
Thu, 14 Dec 2000 15:27:32 -0800


At 6:03 PM -0500 12/14/00, Barry A. Warsaw wrote:

>Here's what I've been thinking about.  There should be a conceptual
>user account, with a primary key that may be internal to the system.

absoldefinitely. My current big machine uses the email address as the 
primary key in the databases. Makes sense at some level -- until you 
realize the email address changes (a lot).

So in the redesign I'm doing, I'm assigning a user_id to an account, 
and it's unique to that account. you can then attach an email address 
to the account, and not have to worry about it wandering out into the 
rest of the database so it's easy to update. (one of these minutes 
I'll finish the key parts of the schema and post it). Assigning 
multiple addresses to an account, and defining one as the "receiver" 
address and the rest as poster addresses is a small enhancement from 
there.

It complicates bounce processing some, but a well-designed search 
system onto the email address (more on that later, if there's 
interest) gets around it. turns out you rarely have to do brute force 
searches for an address if you put a little thought into it.

>I contend that people will remember (one of) their email addresses
>better than they will remember a login name they've had to specially
>craft for the site.

true. in fact, I probably wouldn't advertise an account/login name. 
Instead, I'd use a password and any defined email, perhaps with a few 
carefully chosen heuristics to help find them if they're confused 
(for instance, users use earthlink.com and earthlink.net 
interchangeably). You still have problems wehre companies re-arrange 
their e-mail name space and don't tell the workers (and that happens 
more often than you might think) but leave in aliases for the old 
names, but you won't get 100%.

To get into the account, you need one email address attached to it, 
and the password. To get the passowrd, you need to know any attached 
email address, and it's sent to that address. That way, they don't 
need to remember anything, but if they want to, they can.

>Authentication gets trickier when we're pulling users from external
>databases.  Do we authenticate with the userid/password of that
>external database?  Create our own for the mailing list account?  I
>suspect we may need to allow multiple authentication paths for each
>user.

And another option is "none" -- where Mailman is simply the delivery 
agent for an address system controlled elsewhere and whic users 
aren't allowed to update via Mailman. Once you start going to 
external databases, either they're likely to be holding stores for a 
standard mailman database, or they're likely to be severely 
restricted access, or read-only from the Mailman point of view.

>Each mailing list in fact may have a vector of addresses to try for
>this user.  Perhaps there's a default for all lists unless
>specifically overridden.  Perhaps a user can create personal
>distribution vectors and then can assign a distro vector to a mailing
>list.

As a side note -- if we do this, we need to make sure we can assign 
different addresses to different lists, all under the same account. 
So if someone wants to put eachlist to a different address, they 
can... that starts turning into an N x N mapping, so it can get 
complex (and it implies that the account has an account ID, whic 
points to 1 -> N email addresses, which each have an email ID, whic 
is what's used to do the actual subscription. So the schema starts 
getting complex...)

>To add a new address to your distro vector, a confirmation transaction
>will have to be approved by both an address on the vector already, and
>the new address being added to the vector.

After the first one, why? (note for future mumuring: leave an 
interface for the ability to build different validation setups, or 
allow them to validate via one of many. don't hardware mailbacks as 
THE validation setup...) -- you have an audit trail back to the 
person, so if they decide to try to spam someone you know who they 
are, and who to shoot. As long as you don't lose the authenticity 
trail, once is all you need (that would, I think, require 
authenticating another address before allowing deletion of the one 
that's authenticated, and disabling any account when all of the 
authenticated addresses are disabled by bounce processing...)

>So what about virtual domains?

Um, well... At a high level, it's simply another table in the schema, 
where you attach a host (and associated UI) around the core of 
mailman. So you could potentially (he says hopefully) have a list 
live on multiple domains, or even the same domain under multiple UIs 
through careful abuse of this interface...

(why do the latter? how about allowing me to have a "test" UI on the 
domain for development purposes, but having two 'mailman systems' on 
one virtual host under two URLs?)

>What I mean is, that I'm a member of 10 lists on python.org, 3 or 4 on
>zope.org, a dozen on SourceForge, and handfuls on other sites.  We can
>excuse the non-Mailman sites their shortsightedness, but I would
>really love to be able to manage my subscriptions to all those lists
>in a seamless, transparent manner.

but -- maybe the sites don't want that done? For marketing purposes, 
for identification purposes, for whatever purposes?

I don't even WANT to start thinking about sharing user data across 
physical machines. Virtual hosts are enough joy here.

I"m of two minds here. One mind sees a reason why virtual hosts don't 
want to share -- but in that case, do we build this into the system, 
and if so, how? It's one set of data, and if they need to be left 
alone, aren't they better off running their own unique instance of 
mailman? (and can we validate the security of their data? I don't 
think we want to go there)

But my other mind looks at trying to do all this, and shudders. So I 
guess I'm in the school, at least right now, of saying "we have one 
mailman engine, N lists, M vhosts. And for every vhost, there are a 
subset of those N lists published, but if you access the admin page 
through that vhost, you get that vhost's UI -- but it's a portal into 
the global mailman data setup. If they have to be kept separate, run 
multiple instances of mailman with separate data stores.

The only burble I have with that is -- making sure the user knows 
where a given list exists in the space, so they can access it if they 
run into it while doing admin on a site where it's not published. 
Either that, or (I'd probably prefer it this way) you can't get info 
on subscribing to a list from other than a vhost it's advertised on, 
but anythign you're already subscribed to, you can manage. Basically, 
i guess, I'm treating public lists on other vhosts as private lists 
on this vhost... (I think that works. yet?))


-- 
Chuq Von Rospach - Plaidworks Consulting (mailto:chuqui@plaidworks.com)
Apple Mail List Gnome (mailto:chuq@apple.com)

We're visiting the relatives. Cover us.