Timo Sirainen t...@iki.fi writes:
On Tue, 2009-02-03 at 12:04 +0100, Sascha Wilde wrote:
#0 array_idx_modifiable_i (array=0x38, idx=0) at array.c:10
#1 0x0805e9a2 in sql_pool_unlink (ctx=0x80fb670) at sql-pool.c:64
Sorry, took a while to get around to looking at this. I think this
should
with the Horde-WebClient (and falsely blamed on the use of
INBOX in the mailbox name).
Timo, is it possible to merge Bernhard's fixes in dovecot-1.2 tip?
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http
Sascha Wilde wi...@intevation.de writes:
Before going back to the details in this discussion I want to point out
that the whole thing turned out to be really relevant with existing
clients: The Horde based Kolab WebClient expects the behavior as shown
by Cyrus IMAP and fails to show user
currently lists A's INBOX.
While this might be considered a bug in Horde it shows that existing
clients actually highly depend on the behavior as seen in Cyrus IMAP.
Timo Sirainen t...@iki.fi writes:
On Tue, 2009-03-17 at 18:20 +0100, Sascha Wilde wrote:
1) user/a...@example.com really should
Bernhard Herzog b...@intevation.de writes:
On 04.03.2009, Sascha Wilde wrote:
[...]
User B:
l list *
* LIST (\Noselect \HasChildren) / user
* LIST (\Noselect \HasChildren) / user/a...@example.com
* LIST (\HasChildren) / INBOX
* LIST (\HasNoChildren) / INBOX/Gesendet
* LIST
Timo Sirainen t...@iki.fi writes:
On Wed, 2009-03-04 at 17:01 +0100, Sascha Wilde wrote:
Hi *,
The problem is most noticeable when a user shares his INBOX[0][1] with
others:
User A sets his INBOX acls to eilprwtsd
Now User B can see _all_ sub mailboxes and sub sub [...] mailboxes
Steffen Kaiser skdove...@smail.inf.fh-brs.de writes:
On Thu, 5 Mar 2009, Sascha Wilde wrote:
I think ACL changes should take immediate effect, or at least should be
re-checked in reasonable intervals (which imo shouldn't exceed a few
seconds).
Although I see the problem in your scenario
1 FAST
* 1 FETCH (FLAGS (\Seen) INTERNALDATE 04-Mar-2009 13:11:06 +0100
RFC822.SIZE 3652)
f101 OK Fetch completed.
I think ACL changes should take immediate effect, or at least should be
re-checked in reasonable intervals (which imo shouldn't exceed a few
seconds).
cheers
sascha
--
Sascha
in the shared name space definition.
But that's just a minor suggestion.
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B
(name) and
not for sub mailboxes.
cheers
sascha
[0] Yes, there are really actual users wanting to do this.
[1] There is actually another bug in this context I'll report in my next
mail...
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de
Sascha Wilde wi...@intevation.de writes:
Ooops some search and replace missing, the example should read:
User A:
g getacl INBOX
* ACL INBOX a...@example.com akxeilprwtscd b...@example.com eilprwtsd
a...@example.com lrwstipekxacd
g OK Getacl completed.
g getacl INBOX/foobar
not exist, so the error message is
correct, but why does it appear in the listing in the first place?
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben
Timo Sirainen t...@iki.fi writes:
On Wed, 2009-03-04 at 17:01 +0100, Sascha Wilde wrote:
Hi *,
The problem is most noticeable when a user shares his INBOX[0][1] with
others:
User A sets his INBOX acls to eilprwtsd
Now User B can see _all_ sub mailboxes and sub sub [...] mailboxes
Timo Sirainen t...@iki.fi writes:
On Thu, 2009-01-15 at 17:48 +0100, Sascha Wilde wrote:
But should it just internally convert owner to username when
replying?
From our experience this would be a very good idea. Many clients
recognize the username and handle those ACLs differently
Timo Sirainen t...@iki.fi writes:
On Thu, 2009-02-12 at 13:10 +0100, Sascha Wilde wrote:
- cyrus imapd actually tries[1] to implement a variant of this
possibility in that it does not allow to remove the 'a' right from the
owner:
I implemented this to Dovecot now too.
Good. :)
I
) actually use this to remove all
rights from an user.
Currently dovecot 1.2 does not accept an empty rights string as argument
to setacl. Bernhard Herzog will look into this.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de
Timo Sirainen t...@iki.fi writes:
On Wed, 2009-02-11 at 11:00 +0100, Sascha Wilde wrote:
Could we by any chance get the latest small changes/enhancements:
- 'c' and 'd' in setacl
Yes, this will definitely be included.
This is very good news.
- Displaying the actual user name instead
Timo Sirainen t...@iki.fi writes:
On Wed, 2009-02-11 at 11:04 +0100, Sascha Wilde wrote:
a003 subscribe user/b...@example.com/foobar
a003 NO Unknown subscription namespace.
What kind of namespace configuration do you have? This sounds like your
shared namespace has subscriptions=no, but you
Robert Schetterer rob...@schetterer.org writes:
Sascha Wilde schrieb:
Robert Schetterer rob...@schetterer.org writes:
Bernhard Herzog schrieb:
On 15.01.2009, Sascha Wilde wrote:
But should it just internally convert owner to username when
replying?
From our experience this would be a very
in a
new mail.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann
could be mistaken).
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan
Hi Timo,
thanks for your reply!
Timo Sirainen t...@iki.fi writes:
On Fri, 2009-02-06 at 12:29 +0100, Sascha Wilde wrote:
I just recognized that the new imap-acl plugin in dovecot 1.2 does not
know the obsolete rights 'd' and 'c' when setting.
..
[0] I don't like the use of static indexes
Robert Schetterer rob...@schetterer.org writes:
Bernhard Herzog schrieb:
On 15.01.2009, Sascha Wilde wrote:
But should it just internally convert owner to username when
replying?
From our experience this would be a very good idea. Many clients
recognize the username and handle those ACLs
which implements this.
cheers
sascha
[0] I don't like the use of static indexes witch imap_acl_letter_map but
currently I wasn't able to decide on a more elegant solution.
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde
shouldn't
segfault...
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann
to the username in the IMAP front end the should be no
way to existentially create seperate rules for the owners username.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation
Sascha Wilde [EMAIL PROTECTED] writes:
Timo Sirainen [EMAIL PROTECTED] writes:
On Fri, 2008-10-31 at 17:12 +0200, Timo Sirainen wrote:
See
http://hg.intevation.org/kolab/dovecot-1.2_kolab-branch/rev/e83efa40a1dc
The auth connection could be kept alive longer than for one lookup if
you
test it in our environment...
Cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank
Sascha Wilde [EMAIL PROTECTED] writes:
Ok, as discussed I have made some changes (hopefully improvements) in
the new auth-master API for userdb requests...
And using this new I finally put a first alpha version of the missing
%%h variable for shared name spaces together.
See http
Timo Sirainen [EMAIL PROTECTED] writes:
On Sun, 2008-10-26 at 18:33 +0100, Sascha Wilde wrote:
Timo Sirainen [EMAIL PROTECTED] writes:
On Fri, 2008-10-24 at 16:19 +0200, Sascha Wilde wrote:
Ok, I used auth-master.* -- the new code is in changeset f5ce17153a3d in
my kolab-branch at
http
improved version this afternoon.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank
Ok, as discussed I have made some changes (hopefully improvements) in
the new auth-master API for userdb requests...
Sascha Wilde [EMAIL PROTECTED] writes:
Timo Sirainen [EMAIL PROTECTED] writes:
[...]
3. Would be nice to get rid of the getenv()s :) The MAIL_CHROOT handling
could be moved
Timo Sirainen [EMAIL PROTECTED] writes:
On Fri, 2008-10-24 at 16:19 +0200, Sascha Wilde wrote:
Ok, I used auth-master.* -- the new code is in changeset f5ce17153a3d in
my kolab-branch at
http://hg.intevation.org/kolab/dovecot-1.2_kolab-branch/ and I made
deliver use it in 94b00e377a25.
I
Timo Sirainen [EMAIL PROTECTED] writes:
On Thu, 2008-10-23 at 13:25 +0200, Sascha Wilde wrote:
Hi Timo,
there is a bug in the acl plugin (in head, _without_ our acl changes),
which causes an segfault on selecting a shared folder.
* OK [CAPABILITY ...] Dovecot ready.
x login [EMAIL
test-setup it seems to
work like before, so at least I didn't break it completely... ;-)
Now I have to go back and finally implement the %%h feature for shared
name spaces.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde
Timo Sirainen [EMAIL PROTECTED] writes:
On Wed, 2008-10-22 at 16:15 +0200, Sascha Wilde wrote:
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 21, 2008, at 5:27 PM, Sascha Wilde wrote:
Sascha Wilde [EMAIL PROTECTED] writes:
[userdb-checkpassword]
The code is now in dovecot-1.2 tree
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 21, 2008, at 5:27 PM, Sascha Wilde wrote:
Sascha Wilde [EMAIL PROTECTED] writes:
[userdb-checkpassword]
[...]
The code is now in dovecot-1.2 tree.
Unfortunately there is one tiny, but essential change missing:
diff -r afdc27e0b665 src/auth
too...
If it helps I can generate a gdb backtrace.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Sascha Wilde [EMAIL PROTECTED] writes:
Timo Sirainen [EMAIL PROTECTED] writes:
On Wed, 2008-10-22 at 16:15 +0200, Sascha Wilde wrote:
There are more than 250LOC in deliver/auth-client.c and I wonder if
there is already a higher level api for auth clients? I would have
expected something like
Timo Sirainen [EMAIL PROTECTED] writes:
On Thu, 2008-10-23 at 13:13 +0200, Sascha Wilde wrote:
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 21, 2008, at 5:27 PM, Sascha Wilde wrote:
Sascha Wilde [EMAIL PROTECTED] writes:
[userdb-checkpassword]
[...]
The code is now in dovecot-1.2 tree
Timo Sirainen [EMAIL PROTECTED] writes:
On Thu, 2008-10-23 at 16:18 +0200, Sascha Wilde wrote:
[...]
2.) The exported interface in the respective auth-client.h files is
different. The solution would be to figure out what the right
interface would be
[...]
Perhaps something like:
[api
Sascha Wilde [EMAIL PROTECTED] writes:
Timo Sirainen [EMAIL PROTECTED] writes:
On Thu, 2008-10-23 at 16:18 +0200, Sascha Wilde wrote:
[...]
2.) The exported interface in the respective auth-client.h files is
different. The solution would be to figure out what the right
interface
Timo Sirainen [EMAIL PROTECTED] writes:
On Fri, 2008-10-17 at 15:18 +0200, Sascha Wilde wrote:
now, when I subscribe to a shared mailbox of another user with an dot in
the users id, like: users/[EMAIL PROTECTED]/INBOX/foo and I list my
subscribed mailboxes I get:
l001 lsub *
* LSUB
Timo Sirainen [EMAIL PROTECTED] writes:
On Fri, 2008-10-17 at 19:04 +0200, Sascha Wilde wrote:
http://hg.intevation.org/kolab/dovecot-1.2_kolab-branch/
Timo, what would be needed to get the new back end upstream?
Some small things:
- rename checkpassword-common.c to db-checkpassword.c so
Timo Sirainen [EMAIL PROTECTED] writes:
On Mon, 2008-10-20 at 17:26 +0200, Sascha Wilde wrote:
Currently the code handles only two cases: success and (any kind of)
error. The passdb-checkpassword stuff seems not to handle user
doesn't exist in any special way, so I don't see why
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 20, 2008, at 7:08 PM, Sascha Wilde wrote:
I understand the idea now, but see above: we need the (userdb only)
checkpassword script to follow our rules anyway, so instead of doing
magic to the environment and checking for this in checkpassword
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 20, 2008, at 8:00 PM, Sascha Wilde wrote:
My solution:
1. The userdb-only checkpassword script sees no AUTHORIZED in the
environment and returns with an exit code != 0[0]
You assume that the script actually checks this.
More than
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan
...
[1] The variable name needs some evaluation: it seems, that courier
knows an environment variable AUTHENTICATED, which might be a good
choice for us, too -- on the other hand it might be totally wrong. ;-)
--
Sascha Wilde OpenPGP key: 4BB86568
http
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 15, 2008, at 5:57 PM, Sascha Wilde wrote:
#1 0x0806ab6c in command_unregister (name=0x815b9ab LOGOUT) at
commands.c:83
83 if (strcasecmp(cmd[i].name, name) == 0) {
(gdb) p cmd[i]
$1 = {name = 0xb7e65ce7 Address 0xb7e65ce7
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 15, 2008, at 5:04 PM, Sascha Wilde wrote:
Oct 15 14:37:43 burlywood3 error deliver([EMAIL PROTECTED])[24502]:
Namespace 'users/': shared: Shared namespace prefix contains unknown
variables
Fixed: http://hg.dovecot.org/dovecot-1.2/rev
Timo Sirainen [EMAIL PROTECTED] writes:
On Thu, 2008-10-16 at 13:49 +0200, Sascha Wilde wrote:
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 15, 2008, at 5:57 PM, Sascha Wilde wrote:
#1 0x0806ab6c in command_unregister (name=0x815b9ab LOGOUT) at
commands.c:83
83
Sascha Wilde [EMAIL PROTECTED] writes:
Sascha Wilde [EMAIL PROTECTED] writes:
Now I'll try to do the same for my userdb, so that they should work at
the same time -- stay tuned...
I have a first working beta. I'll put a repository with the changes
on line soon...
Done. You can find all
initialization failed
I guess the primary (only?) case where these shared namespaces are
needed for delivery is the use of sieve.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de
= 0xb7e6432d,
flags = 0}
^^^
For some reasons this does _not_ happen when I simply close the
connection (without explicitly logging out)...
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http
Sascha Wilde [EMAIL PROTECTED] writes:
Thanks! Seems indeed helpful. I have changed passdb-checkpassword to
use the child-wait stuff, see attached patch. (I have put
child-wait.[ch] into src/lib/)
Doh! Forgot to attach the patch (which isn't to bad as it was faulty
anyway...).
This time I
-branch/
[1] http://hg.intevation.org/kolab/dovecot-1.2_kolab-branch/
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 11, 2008, at 10:52 AM, Sascha Wilde wrote:
The proposed change is not sufficient, the only reason why my test
didn't fail was, that I used an other passdb backend, so that my
userdb
backend was the only one registering a SIGCHILD handler
Sascha Wilde [EMAIL PROTECTED] writes:
Timo Sirainen [EMAIL PROTECTED] writes:
On Sep 30, 2008, at 6:08 PM, Sascha Wilde wrote:
[...]
So I guess what is needed is a new userdb backend which is explicitly
runs an arbitrary external program to get the user data (instead of
caching the passdb
Robert Schetterer [EMAIL PROTECTED] writes:
Sascha Wilde schrieb:
Yes, look at http://hg.intevation.de/kolab/dovecot-1.2_acl-branch as
announced... ;-)
Hi Sascha,
why you need an extra branch for that ?
This is our working repository. The ACL extensions by Matvey aren't
ready
Timo Sirainen [EMAIL PROTECTED] writes:
On Wed, 2008-10-08 at 12:54 +0200, Sascha Wilde wrote:
I just started to work on this feature and for testing purpose I wrote a
very simple dummy checkpassword program. But I have a problem setting
the UID and GID:
I'm using:
userdb_uid=12345
Timo Sirainen [EMAIL PROTECTED] writes:
On Wed, 2008-10-08 at 17:39 +0200, Sascha Wilde wrote:
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 8, 2008, at 5:33 PM, Sascha Wilde wrote:
s002 subscribe users/[EMAIL PROTECTED]/blablabla
s002 NO [TRYCREATE] Mailbox doesn't exist: users
Timo Sirainen [EMAIL PROTECTED] writes:
On Thu, 2008-10-09 at 10:03 +0200, Sascha Wilde wrote:
It seems to work now for subscribing and selecting (and therefor for
lsub and fetch) -- but LIST still bails out:
l2 list *
* LIST (\HasChildren) / INBOX
* LIST (\HasNoChildren) / INBOX/Calendar
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan
Timo Sirainen [EMAIL PROTECTED] writes:
On Sep 30, 2008, at 6:08 PM, Sascha Wilde wrote:
[...]
So I guess what is needed is a new userdb backend which is explicitly
runs an arbitrary external program to get the user data (instead of
caching the passdb results).
Right. Perhaps the passdb
/dovecot-1.2_acl-branch as
announced... ;-)
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde/ http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück; AG Osnabrück, HR B 18998
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 8, 2008, at 5:33 PM, Sascha Wilde wrote:
s002 subscribe users/[EMAIL PROTECTED]/blablabla
s002 NO [TRYCREATE] Mailbox doesn't exist: users/[EMAIL PROTECTED]/
blablabla
I think this should have worked, I'll look into it.
IMO the other one
?
(or for that matter: who much harder than to do it in 1.2?)
We are currently evaluating these questions, but I would highly
appreciate your comments on this.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
http://www.intevation.de/~wilde
Hi Timo,
thanks for the reply,
Timo Sirainen [EMAIL PROTECTED] writes:
On Tue, 2008-10-07 at 13:08 +0200, Sascha Wilde wrote:
was written the other day we started to use Dovecot 1.2 for our Kolab
with Dovecot project, but it turned out that there are quite a bunch of
issues with 1.2 (which
Timo Sirainen [EMAIL PROTECTED] writes:
On Tue, 2008-10-07 at 14:25 +0200, Sascha Wilde wrote:
There was the dict-server startup problem, which we reported and which
should be fixed now (I still need to test your fix).
Then there are some (undocumented?) changes in the dict api
) 0)
i_fatal(unlink(%s) failed: %m, path);
}
fixes the problem. But I think the real fix would have to be done in
the new function `net_listen_unix_unlink_stale'.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
Intevation
the version tagged as
works-with-dovecot-1.1.
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
Intevation GmbH, Osnabrück http://www.intevation.de/~wilde/
Amtsgericht Osnabrück, HR B 18998 http://www.intevation.de/
Geschäftsführer: Frank
1.1.3 here:
http://hg.intevation.org/kolab/dovecot-1.1_acl-branch/
and as we decided to move on to 1.2, here:
http://hg.intevation.org/kolab/dovecot-1.2_acl-branch/
As of writing this the changes for 1.1.3 and 1.2 are the same (but the
1.2 version isn't really tested yet).
cheers
sascha
--
Sascha
Timo Sirainen [EMAIL PROTECTED] writes:
On Oct 1, 2008, at 12:57 PM, Sascha Wilde wrote:
Matvey Soloviev [EMAIL PROTECTED] writes:
Matvey finished a first version of the IMAP front end to the ACL
plugin.
You can find the changes for dovecot 1.1.3 here:
http://hg.intevation.org/kolab
by an
checkpassword program to an compute value, to access another users
mailbox.
cheers
sascha
--
Sascha Wilde OpenPGP key: 4BB86568
Intevation GmbH, Osnabrück http://www.intevation.de/~wilde/
Amtsgericht Osnabrück, HR B 18998 http
Timo Sirainen [EMAIL PROTECTED] writes:
On Tue, 2008-09-30 at 10:46 +0200, Sascha Wilde wrote:
namespace shared {
separator = /
# %%u gets expanded to the remote user. Instead of %%u you can
# also use %%n and %%d.
prefix = shared/%%u/
location = Maildir:/home/%%u
Timo Sirainen [EMAIL PROTECTED] writes:
On Sep 30, 2008, at 6:08 PM, Sascha Wilde wrote:
Is there a %%h, too? So that, if we have
mail_location = maildir:~
..
Another (more specific) problem in this context: Is is it possible
to
determine a users home calling an external program like
78 matches
Mail list logo