liujia 发布的文章

在 iredmail 1.7.1 - roundcube 1.6.8 里安装 kolab tasklist 3.5.10 插件

环境和已下载的文件,请看上一篇。继续安装插件 kolab tasklist 。

步骤:

  1. cd /opt/www/roundcubemail/plugins/ # 转到 roundcube 插件目录
  2. cp -a /opt/www/roundcubemail-plugins-kolab/plugins/tasklist ./ # 复制 tasklist 插件文件
  3. cp tasklist/config.inc.php.dist tasklist/config.inc.php # 创建配置文件 。请更改里边的 tasklist_driver 和 tasklist_caldav_server 的值。例如,设置为 caldav 的数据存储
  4. vi /opt/www/roundcubemail/config/config.inc.php # 启用 tasklist 插件

kolab 里的 tasklist 插件,新建 tasklist 项后,在 caldav 中是一个新的 calendar 项,但属性和内容不同。

roundcube 前端的 tasklist 插件内容

thunderbird 客户端里连接到 caldav 服务器读取到的 任务 内容

参考:

baikai caldav carddav 服务端与 roundcube 的插件应用 整合 - imap 验证 和 数据表触发器

目的:让 roundcube 的 日历 和 地址簿 插件,能连上 baikai 的服务端,且正常更新数据。

问题1:用户验证。
回答:使用已有的 IMAP 来验证用户。
参考:https://github.com/sabre-io/Baikal/pull/1292

问题:baikai 里 用户数据的更新,怎么实现?
回答:可以在 vmail.mailbox 里创建 触发器,当数据变更时,同步到 baikai 里的 principals 数据表。
参考:https://sabre.io/dav/principals/
参考的SQL语句:

DELIMITER //

CREATE TRIGGER after_mailbox_insert
AFTER INSERT ON mailbox  -- 直接引用 mailbox 表
FOR EACH ROW
BEGIN
    INSERT INTO baikal.principals (uri, email, displayname)  -- 使用完全限定名
    VALUES (UNHEX(HEX(CONCAT('principals/', NEW.username))), UNHEX(HEX(NEW.username)), NEW.name)
    ON DUPLICATE KEY UPDATE
        displayname = NEW.name;
END //

DELIMITER ;

#########
DELIMITER //

CREATE TRIGGER after_mailbox_update
AFTER UPDATE ON mailbox
FOR EACH ROW
BEGIN
    UPDATE baikal.principals
    SET displayname = NEW.name
    WHERE email = UNHEX(HEX(NEW.username));
END //

DELIMITER ;
#############################
DELIMITER //

CREATE TRIGGER after_mailbox_delete
AFTER DELETE ON mailbox
FOR EACH ROW
BEGIN
    DELETE FROM baikal.principals
    WHERE email = UNHEX(HEX(OLD.username));
END //

DELIMITER ;
########################
#手工执行一次,如果之前有用户数据未同步
INSERT INTO baikal.principals (uri, email, displayname)
SELECT
    UNHEX(HEX(CONCAT('principals/', username))),
    UNHEX(HEX(username)),
    name
FROM
    vmail.mailbox
ON DUPLICATE KEY UPDATE
    displayname = VALUES(displayname);
##########################

在 iredmail 1.7.1 - roundcube 1.6.8 里安装 kolab_addressbook 3.5.10

环境和已下载的文件,请看上一篇。继续安装插件 kolab_addressbook

步骤:

  1. cd /opt/www/roundcubemail/plugins/ # 转到 roundcube 的插件目录
  2. cp -a /opt/www/roundcubemail-plugins-kolab/plugins/kolab_addressbook ./ # 复制 kolab_addressbook 插件文件
  3. cp -a kolab_addressbook/config.inc.php.dist kolab_addressbook/config.inc.php # 创建插件的配置文件
  4. vi kolab_addressbook/config.inc.php # 编辑插件的配置文件内容,例如,设置 kolab_addressbook_driver 为 carddav ; 设置 kolab_addressbook_carddav_server 为您的 carddav 服务器访问域名;设置 kolab_addressbook_carddav_url 为 https://%h/dav.php/principals/addressbooks/%u/%n
  5. vi /opt/www/roundcubemail/config/config.inc.php # 编辑 roundcube 的配置文件内容,在插件启用列表中,添加上 kolab_addressbook

问题:我在创建地址薄时,roundcube 前台提示 An error occured while creating address book.
回答:请检查插件配置文件中的 kolab_addressbook_carddav_server 和 kolab_addressbook_carddav_url 是否正确。

参考:https://git.kolab.org/diffusion/RPK/browse/master/plugins/kolab_addressbook/

roundcube 前端中的 地址薄

thunderbird 雷鸟客户端 中的 网络地址薄

在 iredmail 1.7.1 - roundcube 1.6.8 里安装 kolab calendar 3.5.11

环境:

  • debian 12
  • iredmail 1.7.1 - roundcube 1.6.8 - kolab calendar 3.5.11

步骤:

  1. apt install git # 安装 git
  2. cd /opt/www && git clone https://git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git # 转到 /opt/www 目录,并下载 kolab 的相关文件
  3. chown -R www-data:www-data roundcubemail-plugins-kolab/ # 给 www-data 用户权限
  4. cd /opt/www/roundcubemail/plugins/ # 转到 roundcube 插件目录
  5. cp -a /opt/www/roundcubemail-plugins-kolab/plugins/calendar ./ # 复制 calendar 插件文件
  6. cp -a /opt/www/roundcubemail-plugins-kolab/plugins/libcalendaring ./ # 复制 libcalendaring 插件文件
  7. cp -a /opt/www/roundcubemail-plugins-kolab/plugins/libkolab ./ # 复制 libkolab 插件文件
  8. cp calendar/config.inc.php.dist calendar/config.inc.php # 创建配置文件
  9. vi calendar/config.inc.php # 修改配置文件内容,如将 calendar_caldav_url 设置为有效的 caldav 服务器访问域名;设置 calendar_caldav_url 具体的 日历 URL 地址
  10. cd /opt/www/ # 转到 www 目录
  11. curl -s https://getcomposer.org/installer | php # 获取 composer
  12. cd /opt/www/roundcubemail # 转到 roundcube 目录
  13. sudo -u www-data bin/initdb.sh --dir=plugins/calendar/drivers/caldav/SQL && sudo -u www-data bin/initdb.sh --dir=plugins/libkolab/SQL # 初始化数据库
  14. apt install node-less # 安装 node-less 软件
  15. sudo -u www-data lessc --relative-urls -x plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css # 生成 css 文件
  16. apt install php-ldap # 安装 ldap 扩展
  17. sudo -u www-data php /opt/www/composer.phar require "sabre/vobject" "~4.5.1" # 安装 sabre/vobject
  18. sudo -u www-data php /opt/www/composer.phar require "pear/http_request2" "~2.5.0" # 安装 pear/http_request2
  19. vi config/config.inc.php # 编辑 roundcube 配置文件,在插件配置中,加上 calendar

问题:用 baikal 架设的 caldav 服务器,无法直接在 calendar 中使用。例如,保存不了事件,提示 Faild to save changs。 syslog 提示 PHP Error: DAV Error (405) 。未完成用户鉴权验证吗?
回答:请尝试在 baikal 里配置使用 IMAP 验证。

参考:

roundcube 用户端的 calendar 界面

roundcube 的“关于”页面信息显示内容

roundcube 日历 中的事件

thunderbird 雷鸟 客户端连接上 日历

安装 kolab 提供的 roundcube 插件

https://git.kolab.org/diffusion/RPK/browse/master/plugins/