尝试将 PostrgreSQL 连接到我的服务器以创建 SOGo 的 SQL 身份验证

尝试将 PostrgreSQL 连接到我的服务器以创建 SOGo 的 SQL 身份验证

我需要为我的 SOGo 安装创建 SQL 身份验证,我相信我已经根据文档设置了所有内容。他们希望我执行以下操作:

首先,他们希望我创建数据库用户sogo和数据库模式(这里是部分:https://sogo.nu/files/docs/SOGoInstallationGuide.html#_database_configuration),使用以下命令:

su - postgres
createuser --no-superuser --no-createdb --no-createrole \
    --encrypted --pwprompt sogo
(specify “sogo” as password)
createdb -O sogo sogo

然后将以下行添加到 postgresqlpg_hba.conf文件:

host   sogo   sogo     127.0.0.1/32     md5

最后修改sogo.conf中的以下几行:

SOGoProfileURL =
    "postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile";
OCSFolderInfoURL =
    "postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info";
OCSSessionsFolderURL =
    "postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder";

然后对于实际的身份验证,我需要如下调整 SOGoUserSources:

SOGoUserSources =
(
  {
    type = sql;
    id = directory;
    viewURL = "postgresql://sogo:[email protected]:5432/sogo/sogo_view";
    canAuthenticate = YES;
    isAddressBook = YES;
    userPasswordAlgorithm = md5;
  }
);

我也这样做了,但不幸的是,我不确定如何创建数据库和用户表,以配合此身份验证过程。

我创建了一个 sogo 数据库,sogo 也是所有者,下面是我的数据库列表:

 Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
--------------+----------+----------+-------------+-------------+-----------------------
 postgres     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 sogo         | sogo     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 sogocreatedb | sogo     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
              |          |          |             |             | postgres=CTc/postgres
 template1    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
              |          |          |             |             | postgres=CTc/postgres

然后我创建了一个sogo_view表,因为我认为这就是我应该做的。以下是关系列表:

List of relations
 Schema |   Name    | Type  | Owner
--------+-----------+-------+-------
 public | sogo_view | table | sogo

最后,我在表中创建了一个用户:

 c_uid  | c_name  |  c_password   |  c_cn   |          mail
---------+---------+---------------+---------+-------------------------
 Luciano | Luciano | Something    | Luciano | [email protected]

但连接仍然没有建立,有人有这样的经历吗?

答案1

在您的密码栏中,您应该设置密码的 MD5。插入如下记录:

INSERT INTO sogo_view VALUES (
  'Luciano', 'Luciano', MD5('Something'),
  'Luciano', '[email protected]');

在 debian wiki 中,有关于如何设置数据库和插入登录的说明。它适用于 mysql,但也适用于 postgres。只需确保将数据库和表所有者设置为sogo,显然您已经这样做了。

在 debian 示例中,用户表被称为sogo_users而不是sogo_view。因此,sogo_view在下面的示例中,要么将其重命名为 ,要么将您的 SOGo 配置更改viewURL.../sogo_users。以下是原始的 debian 示例:

CREATE TABLE sogo_users (
    c_uid VARCHAR(10) PRIMARY KEY,
    c_name VARCHAR(10),
    c_password VARCHAR(32),
    c_cn VARCHAR(128),
    mail VARCHAR(128));

INSERT INTO sogo_users VALUES ('paul', 'paul', MD5('zxc'), 'Paul Example', '[email protected]');
INSERT INTO sogo_users VALUES ('piet', 'piet', MD5('zxc'), 'Piet Jansen', '[email protected]');
INSERT INTO sogo_users VALUES ('klaas', 'klaas', MD5('zxc'), 'Klaas van der Zee', '[email protected]');

参考:https://wiki.debian.org/SOGo

答案2

当程序尝试连接时抛出的确切错误消息是什么?

我注意到你有

sogocreatedb | sogo | UTF8 | en_US.UTF-8 | en_US.UTF-8 |

在您的数据库列表中。您是否打算创建sogocreatedb数据库?

相关内容