我需要为我的 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]');
答案2
当程序尝试连接时抛出的确切错误消息是什么?
我注意到你有
sogocreatedb | sogo | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
在您的数据库列表中。您是否打算创建sogocreatedb
数据库?