libpq 8.4 beta1: $PGHOST complains about missing root.crt

Started by Martin Pittabout 17 years ago83 messagesbugs
Jump to latest
#1Martin Pitt
mpitt@debian.org

Hello all,

I have been packaging cvs snapshots, and now 8.4 beta 1 for Debian
recently, and hammered on postgresql-common enough to make it work
with 8.4 now (some changed semantics, migration of obsolete/renamed
postgresql.conf settings, etc.). Almost all of the tests pass now, so
it's generally working great.

The test suite detected one regression in libpq, though: Setting
$PGHOST now complains about a missing root.crt, although this is only
relevant on the server side (or did I misunderstood this?)

$ PGHOST=127.0.0.1 /usr/lib/postgresql/8.4/bin/psql -l
psql: root certificate file "/home/martin/.postgresql/root.crt" does not exist

Thank you!

Martin
--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Martin Pitt (#1)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Martin Pitt <mpitt@debian.org> writes:

The test suite detected one regression in libpq, though: Setting
$PGHOST now complains about a missing root.crt, although this is only
relevant on the server side (or did I misunderstood this?)

No, that's a progression: the client wants to validate the server's
cert, too.

regards, tom lane

#3Martin Pitt
mpitt@debian.org
In reply to: Tom Lane (#2)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Tom Lane [2009-04-10 1:15 -0400]:

Martin Pitt <mpitt@debian.org> writesyuqhom#3:

The test suite detected one regression in libpq, though: Setting
$PGHOST now complains about a missing root.crt, although this is only
relevant on the server side (or did I misunderstood this?)

No, that's a progression: the client wants to validate the server's
cert, too.

Indeed it is nice to see this feature (great to prevent spoofing), but
if I don't have a ~/.postgresql/root.crt at all, it shouldn't
certainly break completely? (which it does now).

libpq did not bump the SONAME, thus this breaks backwards
compatibility with previous PostgreSQL versions which also used
libpq.so.5, i. e. from 8.2 on.

(Oh, and just for the record: I'm not advocating at all to bump the
soname; with thousands of packages linking against it, those are
always painful library transitions).

Thanks,

Martin

--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)

#4Peter Eisentraut
peter_e@gmx.net
In reply to: Martin Pitt (#3)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

On Friday 10 April 2009 08:39:33 Martin Pitt wrote:

Tom Lane [2009-04-10 1:15 -0400]:

Martin Pitt <mpitt@debian.org> writesyuqhom#3:

The test suite detected one regression in libpq, though: Setting
$PGHOST now complains about a missing root.crt, although this is only
relevant on the server side (or did I misunderstood this?)

No, that's a progression: the client wants to validate the server's
cert, too.

Indeed it is nice to see this feature (great to prevent spoofing), but
if I don't have a ~/.postgresql/root.crt at all, it shouldn't
certainly break completely? (which it does now).

I assume the server has the snakeoil certificate installed? In that case, it
is correct that the client refuses to proceed, although the exact manner of
breaking could perhaps be improved.

#5Martin Pitt
mpitt@debian.org
In reply to: Peter Eisentraut (#4)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Peter Eisentraut [2009-04-10 14:56 +0300]:

I assume the server has the snakeoil certificate installed?

It is a self-signed certificate indeed (Debian's ssl-cert package).

In that case, it is correct that the client refuses to proceed,
although the exact manner of breaking could perhaps be improved.

That may be true for 8.4, and I'm could stop configuring the snakeoil
certificate by default. That would make configuring a server for a
real SSL certificate harder than it needs to be, though.

However, we can't afford to break existing installations. If a user
has 8.4 installed locally, he'll use libpq from 8.4, and suddenly he
could not connect to a remote SSL 8.3 cluster any more. So the check
needs at least be turned into a warning for connecting to a pre-8.4
server.

Also, the error message needs to be much clearer. Right now it just
tells you that it couldn't find a per-user root.crt and fails. So as
an user, I wonder: What is that file? I don't have one, where should I
get it from? And why does each user need to have its own?

html/libpq-ssl.html describes it fairly well:

"When the sslverify parameter is set to cn or cert, libpq will
verify that the server certificate is trustworthy by checking the
certificate chain up to a CA. For this to work, place the
certificate of a trusted CA in the file ~/.postgresql/root.crt in
the user's home directory. libpq will then verify that the server's
certificate is signed by one of the trusted certificate
authorities."

Nowhere does it say that the connection will fail immediately if you
do not have a root.crt. man psql(1) does not have any word about it,
like how to set the sslverify argument.

I do see the benefit of failing to connect to an SSL-enabled server
*if* I have a root.crt which doesn't match. But why fail if I don't
have one?

Thanks for considering,

Martin

--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Martin Pitt (#5)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Martin Pitt <mpitt@debian.org> writes:

I do see the benefit of failing to connect to an SSL-enabled server
*if* I have a root.crt which doesn't match. But why fail if I don't
have one?

I think I agree with Martin on this. The server doesn't fail if you
don't provide it a root cert; it just doesn't try to trace client certs
to the root. It is not apparent why the client should be stricter than
that, and definitely not apparent why such strictness should be the
default behavior.

regards, tom lane

#7Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#6)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Tom Lane wrote:

Martin Pitt <mpitt@debian.org> writes:

I do see the benefit of failing to connect to an SSL-enabled server
*if* I have a root.crt which doesn't match. But why fail if I don't
have one?

I think I agree with Martin on this. The server doesn't fail if you
don't provide it a root cert; it just doesn't try to trace client certs
to the root. It is not apparent why the client should be stricter than
that, and definitely not apparent why such strictness should be the
default behavior.

It's "secure by default". Without it, most people will *never* get
protected by verifying the certificate because they will not manually
copy root certificates there. And it would open up a big window for
making a very simple mistake (file missing or wrong name) that would
then silently disable SSL verification completely.

Arguably it's a bug to silently install a snakeoil cert by default. But
I realize that you have issues with backwards compatibility. How about
changing it so it points PGSSLROOTCERT to a system wide location that
holds the root.crt file? The user can then override this if proper
verification of a real certificate is wanted.

(you could also disable certificate verification by setting
PGSSLVERIFY=none, but that seems like a much worse fix)

//Mangus

#8Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#7)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Magnus Hagander <magnus@hagander.net> writes:

Tom Lane wrote:

It is not apparent why the client should be stricter than
that, and definitely not apparent why such strictness should be the
default behavior.

It's "secure by default".

In my experience ssh itself isn't this strict. Why should libpq be?
I think most users will see this as a bug, not as being secure.

regards, tom lane

#9Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#8)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Tom Lane wrote:

Magnus Hagander <magnus@hagander.net> writes:

Tom Lane wrote:

It is not apparent why the client should be stricter than
that, and definitely not apparent why such strictness should be the
default behavior.

It's "secure by default".

In my experience ssh itself isn't this strict. Why should libpq be?
I think most users will see this as a bug, not as being secure.

ssh prompts the user when this happens. We don't have a mechanism for
prompting the user.

IIRC when you run ssh in a mode where it can't prompt the user, it will
refuse to connect, thus being just as strict as we are.

//Magnus

#10Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#9)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Magnus Hagander <magnus@hagander.net> writes:

Tom Lane wrote:

In my experience ssh itself isn't this strict. Why should libpq be?

ssh prompts the user when this happens. We don't have a mechanism for
prompting the user.

In the first place, I have never seen such a prompt, despite the fact
that I use ssh constantly to connect to machines that I know do not have
properly signed certificates. If there is such a prompt, it isn't the
default behavior. In the second place, unconditionally failing isn't a
particularly nice emulation of a prompting behavior.

Perhaps a suitable compromise is to have the failure message include
a hint about how to prevent the failure if you don't want it?

regards, tom lane

#11Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#10)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Tom Lane wrote:

Magnus Hagander <magnus@hagander.net> writes:

Tom Lane wrote:

In my experience ssh itself isn't this strict. Why should libpq be?

ssh prompts the user when this happens. We don't have a mechanism for
prompting the user.

In the first place, I have never seen such a prompt, despite the fact
that I use ssh constantly to connect to machines that I know do not have
properly signed certificates. If there is such a prompt, it isn't the
default behavior. In the second place, unconditionally failing isn't a
particularly nice emulation of a prompting behavior.

*really*? Here's what I get as an example (after removing the trust):

ha@mha-laptop:~/.ssh$ ssh cvs.postgresql.org
The authenticity of host 'cvs.postgresql.org (217.196.146.206)' can't be
established.
DSA key fingerprint is 54:27:10:f3:48:0a:f0:b6:c3:14:79:7e:49:c0:75:f3.
Are you sure you want to continue connecting (yes/no)? ^C

Are you saying you're not getting that? I've got that (or similar) on
every single platform I recall having used...

ssh doesn't use certificates, actually, it uses known host keys. The
difference being that with certificates you trust the root and thereby
everything under it. For ssh, afaik, you need to trust each host
individually.

Perhaps a suitable compromise is to have the failure message include
a hint about how to prevent the failure if you don't want it?

That would definitely work for me.

//Magnus

#12Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#11)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Magnus Hagander <magnus@hagander.net> writes:

Tom Lane wrote:

In the first place, I have never seen such a prompt, despite the fact
that I use ssh constantly to connect to machines that I know do not have
properly signed certificates.

*really*? Here's what I get as an example (after removing the trust):

ha@mha-laptop:~/.ssh$ ssh cvs.postgresql.org
The authenticity of host 'cvs.postgresql.org (217.196.146.206)' can't be
established.
DSA key fingerprint is 54:27:10:f3:48:0a:f0:b6:c3:14:79:7e:49:c0:75:f3.
Are you sure you want to continue connecting (yes/no)? ^C

This simply tells you that the machine has a new key since last time you
talked to it. It doesn't have anything to do with whether the machine's
cert has been signed by anybody. It also doesn't prevent you from
operating without a root.crt file of your own.

regards, tom lane

#13Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#12)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Tom Lane wrote:

Magnus Hagander <magnus@hagander.net> writes:

Tom Lane wrote:

In the first place, I have never seen such a prompt, despite the fact
that I use ssh constantly to connect to machines that I know do not have
properly signed certificates.

*really*? Here's what I get as an example (after removing the trust):

ha@mha-laptop:~/.ssh$ ssh cvs.postgresql.org
The authenticity of host 'cvs.postgresql.org (217.196.146.206)' can't be
established.
DSA key fingerprint is 54:27:10:f3:48:0a:f0:b6:c3:14:79:7e:49:c0:75:f3.
Are you sure you want to continue connecting (yes/no)? ^C

This simply tells you that the machine has a new key since last time you
talked to it. It doesn't have anything to do with whether the machine's
cert has been signed by anybody. It also doesn't prevent you from
operating without a root.crt file of your own.

SSH doesn't have certificates. The trusted key is as close as you get.
You can compare it to ssl with *only* self-signed-certificate. Where it
prompts you to authenticate the fingerprint of said
self-signed-certificate.

They do it through a prompt. We do it through a file. But as long as you
in pg only deal with self-signed certs, the outcome is pretty much the same.

//Magnus

#14Peter Eisentraut
peter_e@gmx.net
In reply to: Martin Pitt (#5)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

On Friday 10 April 2009 17:13:55 Martin Pitt wrote:

However, we can't afford to break existing installations. If a user
has 8.4 installed locally, he'll use libpq from 8.4, and suddenly he
could not connect to a remote SSL 8.3 cluster any more. So the check
needs at least be turned into a warning for connecting to a pre-8.4
server.

This is not a question of new client with old server. The new version of the
client has a more secure default that will possibly prevent it from connecting
to *any* server that is not adequately configured.

But it's a default, so the user can change it.

Consider the analogy that a new web browser comes out that verifies server
certificates (as of course all respectable browsers do nowadays) whereas the
previous version one didn't. The right fix there is certainly not to
downgrade this to a warning when connecting to an older web server.

Not to mention the security implications: A rogue server could simply pretend
to be of an older version to circumvent the client's security check.

#15Stephen Frost
sfrost@snowman.net
In reply to: Tom Lane (#6)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

* Tom Lane (tgl@sss.pgh.pa.us) wrote:

I think I agree with Martin on this. The server doesn't fail if you
don't provide it a root cert; it just doesn't try to trace client certs
to the root. It is not apparent why the client should be stricter than
that, and definitely not apparent why such strictness should be the
default behavior.

I agree with this. Avoiding spoofing is good, but so is on the wire
encryption even if you don't have anti-spoofing. This is a reasonable
set-up and we shouldn't just fail on it.

Stephen

#16Stephen Frost
sfrost@snowman.net
In reply to: Peter Eisentraut (#14)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

* Peter Eisentraut (peter_e@gmx.net) wrote:

This is not a question of new client with old server. The new version of the
client has a more secure default that will possibly prevent it from connecting
to *any* server that is not adequately configured.

A properly configured server could cause a failure too unless the client
is *also* properly configured. Sure, it's good for people to do. No, I
don't think we should break things if people don't build out a whole PKI
for PG and configure all their certs correctly. It's pie-in-the-sky to
think everyone will do that, and in the end most will just say "SSL
breaks stuff, so we'll disable it" which certainly isn't better.

But it's a default, so the user can change it.

It should be the default to connect, maybe with a warning.

Consider the analogy that a new web browser comes out that verifies server
certificates (as of course all respectable browsers do nowadays) whereas the
previous version one didn't. The right fix there is certainly not to
downgrade this to a warning when connecting to an older web server.

Uh, no, the right fix is to have a warning/prompt (as pretty much all
web browsers today do) but then continue to connect. Also, the
web-browser analogy completely falls apart when you consider that the
use case is significantly different (how many times have you connected
to a PG server that you didn't know?).

Thanks,

Stephen

#17Bruce Momjian
bruce@momjian.us
In reply to: Stephen Frost (#16)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Stephen Frost wrote:
-- Start of PGP signed section.

* Peter Eisentraut (peter_e@gmx.net) wrote:

This is not a question of new client with old server. The new version of the
client has a more secure default that will possibly prevent it from connecting
to *any* server that is not adequately configured.

A properly configured server could cause a failure too unless the client
is *also* properly configured. Sure, it's good for people to do. No, I
don't think we should break things if people don't build out a whole PKI
for PG and configure all their certs correctly. It's pie-in-the-sky to
think everyone will do that, and in the end most will just say "SSL
breaks stuff, so we'll disable it" which certainly isn't better.

But it's a default, so the user can change it.

It should be the default to connect, maybe with a warning.

Consider the analogy that a new web browser comes out that verifies server
certificates (as of course all respectable browsers do nowadays) whereas the
previous version one didn't. The right fix there is certainly not to
downgrade this to a warning when connecting to an older web server.

Uh, no, the right fix is to have a warning/prompt (as pretty much all
web browsers today do) but then continue to connect. Also, the
web-browser analogy completely falls apart when you consider that the
use case is significantly different (how many times have you connected
to a PG server that you didn't know?).

The problem is that libpq doesn't have any ability to warn/prompt like
SSH and web browsers do, so I think Magnus patterned the libpq behavior
around cases where warning/prompt failed in these environments.

I am not saying the current behavior is correct, only why it was
configured that way.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#18Peter Eisentraut
peter_e@gmx.net
In reply to: Stephen Frost (#15)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

On Friday 10 April 2009 21:27:54 Stephen Frost wrote:

I agree with this. Avoiding spoofing is good, but so is on the wire
encryption even if you don't have anti-spoofing. This is a reasonable
set-up and we shouldn't just fail on it.

This whole debate hinges on the argument that encryption without anti-spoofing
is *not* useful.

#19Peter Eisentraut
peter_e@gmx.net
In reply to: Stephen Frost (#16)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

On Friday 10 April 2009 21:32:29 Stephen Frost wrote:

A properly configured server could cause a failure too unless the client
is *also* properly configured. Sure, it's good for people to do. No, I
don't think we should break things if people don't build out a whole PKI
for PG and configure all their certs correctly. It's pie-in-the-sky to
think everyone will do that, and in the end most will just say "SSL
breaks stuff, so we'll disable it" which certainly isn't better.

That's debatable. I think it's better.

But it's a default, so the user can change it.

It should be the default to connect, maybe with a warning.

If you connect with a warning, you have possibly already given up sensitive
information. That's no good.

Consider the analogy that a new web browser comes out that verifies
server certificates (as of course all respectable browsers do nowadays)
whereas the previous version one didn't. The right fix there is
certainly not to downgrade this to a warning when connecting to an older
web server.

Uh, no, the right fix is to have a warning/prompt (as pretty much all
web browsers today do) but then continue to connect.

Yes, this was under discussion a while ago but no one wanted to implement it.

Also, the
web-browser analogy completely falls apart when you consider that the
use case is significantly different (how many times have you connected
to a PG server that you didn't know?).

This is a fuzzy argument. What do you mean by "know", and how do you verify
what you "know" and whether what you "know" is correct? And why are you using
SSL at all if you think you "know" everything?

#20Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#18)
Re: libpq 8.4 beta1: $PGHOST complains about missing root.crt

Peter Eisentraut <peter_e@gmx.net> writes:

On Friday 10 April 2009 21:27:54 Stephen Frost wrote:

I agree with this. Avoiding spoofing is good, but so is on the wire
encryption even if you don't have anti-spoofing. This is a reasonable
set-up and we shouldn't just fail on it.

This whole debate hinges on the argument that encryption without
anti-spoofing is *not* useful.

If we believe that then we need to also change the server to require
a root.crt. I do not believe it --- there is a significant difference
in the difficulty of passive listening and active spoofing.

regards, tom lane

#21Peter Eisentraut
peter_e@gmx.net
In reply to: Bruce Momjian (#17)
#22Peter Eisentraut
peter_e@gmx.net
In reply to: Stephen Frost (#16)
#23Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#20)
#24Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#23)
#25Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#23)
In reply to: Tom Lane (#24)
#27Martin Pitt
mpitt@debian.org
In reply to: Peter Eisentraut (#18)
#28Tom Lane
tgl@sss.pgh.pa.us
In reply to: Martin Pitt (#27)
#29Martin Pitt
mpitt@debian.org
In reply to: Peter Eisentraut (#4)
#30Martin Pitt
mpitt@debian.org
In reply to: Magnus Hagander (#7)
#31Martin Pitt
mpitt@debian.org
In reply to: Tom Lane (#28)
#32Tom Lane
tgl@sss.pgh.pa.us
In reply to: Martin Pitt (#31)
#33Stephen Frost
sfrost@snowman.net
In reply to: Peter Eisentraut (#19)
#34Stephen Frost
sfrost@snowman.net
In reply to: Peter Eisentraut (#22)
#35John R Pierce
pierce@hogranch.com
In reply to: Stephen Frost (#34)
#36John R Pierce
pierce@hogranch.com
In reply to: John R Pierce (#35)
#37Magnus Hagander
magnus@hagander.net
In reply to: Martin Pitt (#29)
#38Bruce Momjian
bruce@momjian.us
In reply to: Martin Pitt (#5)
#39Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#4)
#40Bruce Momjian
bruce@momjian.us
In reply to: Martin Pitt (#5)
#41Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#40)
#42Magnus Hagander
magnus@hagander.net
In reply to: Bruce Momjian (#40)
#43Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#41)
#44Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#42)
#45Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#43)
#46Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#44)
#47Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#46)
#48Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Magnus Hagander (#42)
#49Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#44)
#50Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#49)
#51Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#47)
#52Magnus Hagander
magnus@hagander.net
In reply to: Hiroshi Inoue (#48)
#53Magnus Hagander
magnus@hagander.net
In reply to: Bruce Momjian (#50)
#54Peter Eisentraut
peter_e@gmx.net
In reply to: Magnus Hagander (#46)
#55Magnus Hagander
magnus@hagander.net
In reply to: Peter Eisentraut (#54)
#56Bruce Momjian
bruce@momjian.us
In reply to: Magnus Hagander (#55)
#57Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Magnus Hagander (#52)
#58Magnus Hagander
magnus@hagander.net
In reply to: Bruce Momjian (#56)
#59Magnus Hagander
magnus@hagander.net
In reply to: Hiroshi Inoue (#57)
#60Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Magnus Hagander (#59)
#61Bruce Momjian
bruce@momjian.us
In reply to: Magnus Hagander (#58)
#62Magnus Hagander
magnus@hagander.net
In reply to: Bruce Momjian (#61)
#63Martin Pitt
mpitt@debian.org
In reply to: Martin Pitt (#5)
#64Martin Pitt
mpitt@debian.org
In reply to: Magnus Hagander (#43)
#65Martin Pitt
mpitt@debian.org
In reply to: Magnus Hagander (#37)
#66Martin Pitt
mpitt@debian.org
In reply to: Magnus Hagander (#46)
#67Stephen Frost
sfrost@snowman.net
In reply to: Martin Pitt (#64)
#68Stephen Frost
sfrost@snowman.net
In reply to: Martin Pitt (#65)
#69Martin Pitt
mpitt@debian.org
In reply to: Stephen Frost (#67)
#70Martin Pitt
mpitt@debian.org
In reply to: Stephen Frost (#68)
#71Peter Eisentraut
peter_e@gmx.net
In reply to: Magnus Hagander (#55)
#72Peter Eisentraut
peter_e@gmx.net
In reply to: Martin Pitt (#70)
#73Bruce Momjian
bruce@momjian.us
In reply to: Magnus Hagander (#62)
#74Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#39)
#75Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#73)
#76Magnus Hagander
magnus@hagander.net
In reply to: Bruce Momjian (#73)
#77Peter Eisentraut
peter_e@gmx.net
In reply to: Magnus Hagander (#76)
#78Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#76)
#79Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#78)
#80Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#79)
#81Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#80)
#82Magnus Hagander
magnus@hagander.net
In reply to: Magnus Hagander (#81)
#83Magnus Hagander
magnus@hagander.net
In reply to: Magnus Hagander (#82)