dweuthen / application_passwords
Roundcube 插件,用于管理特定应用密码。
Requires
- php: >=5.3.0
- roundcube/plugin-installer: >=0.1.3
This package is auto-updated.
Last update: 2024-08-15 06:51:28 UTC
README
此 RoundCube 插件增加了对管理特定应用密码的支持。目前仅支持基于 SQL 的应用特定密码存储。
特定应用密码允许用户为与邮件服务器交互的每个应用程序创建唯一的密码。此外,还可以完全禁用常规用户密码,例如 SMTP、IMAP 或 POP3,以降低在不受保护的网络中通过监听窃取用户名和密码组合的风险。
许可证
本程序是自由软件:您可以按照自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,许可证版本为 3 或(根据您的选择)任何更高版本。
本程序分发时希望它是有用的,但没有任何保证;甚至没有关于适销性或特定用途的默示保证。有关详细信息,请参阅 GNU 通用公共许可证。
您应该已经收到一份 GNU 通用公共许可证副本,与该程序一起。如果没有,请参阅 https://gnu.ac.cn/licenses/。
安装
-
从 github 克隆:HOME_RC/plugins$ git clone https://github.com/dweuthen/roundcube-application_passwords.git application_passwords
-
在 HOME_RC/config/main.inc.php 中激活插件:$rcmail_config['plugins'] = array('application_passwords');
配置
将 config.inc.php.dist 复制到 config.inc.php 并设置文件内描述的选项。
config.php.dist 中的 SQL 查询与以下示例设置兼容。
示例设置
此插件是在基于 Debian 的 Exim/Dovecot 邮件服务器上开发的,其中域和用户由 MySQL 管理。
Dovecot 预期用户和密码数据库查询只返回单个结果集。因此,不能使用加盐密码散列来存储特定应用的密码,因为会返回多个密码散列(每个应用程序一个)。作为替代方案,可以使用强哈希函数(如 SHA512)来存储特定应用密码。所使用的哈希函数必须由 SQL 服务器支持,因为数据库服务器必须将其应用于 where 子句中提交的纯文本文本密码。
理论上还支持其他存储和加密密码的方法,但尚未进行测试。
此示例设置中使用的数据库表是通过以下 SQL 语句创建的
CREATE TABLE
users
(username
varchar(128) NOT NULL,domain
varchar(128) NOT NULL,password
varchar(255) DEFAULT NULL,uid
smallint(5) unsigned DEFAULT NULL,gid
smallint(5) unsigned DEFAULT NULL,home
varchar(255) DEFAULT NULL,
CREATE TABLE
applications
(username
varchar(128) NOT NULL,domain
varchar(128) NOT NULL,application
varchar(128) NOT NULL,password
varchar(255) DEFAULT NULL,created
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=latin1
为了在 Dovecot 中验证应用程序,使用了以下 "password_query":
SELECT username, domain, NULL AS password, 'Y' as nopassword FROM applications WHERE username = '%n' AND domain = '%d' AND password = SHA2('%w',"512")
"user_query" 仍然设置为查询用户表
SELECT home, uid, gid FROM users WHERE username = '%n' AND domain = '%d'
备注
在 Debian Wheezy (PHP 5.4.4, MySQL 5.5.37) 上使用 RoundCube 1.0.1 测试过。部分代码借鉴了 Aleksander Machniak 的 Roundcube 密码插件,作者也受到了谷歌针对特定应用程序密码实现方式的启发。
作者
丹尼尔·韦滕 daniel@weuthen-net.de