分类 电脑 下的文章

在 iredmail 1.7.1 - roundcube 1.6.8 里安装 kolab_activesync 3.5.6 插件 - 未成功配置 - 需要 kolab 配套

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

步骤:

  1. cd /opt/www/roundcubemail/plugins/ # 转到 roundcube 插件目录
  2. cp -a /opt/www/roundcubemail-plugins-kolab/plugins/kolab_activesync ./ # 复制 tasklist 插件文件
  3. cp kolab_activesync/config.inc.php.dist kolab_activesync/config.inc.php # 创建配置文件
  4. vi kolab_activesync/config.inc.php # 创建配置文件
  5. vi /opt/www/roundcubemail/config/config.inc.php # 启用 tasklist 插件

问题:在 roundcube 前端 设置 里点击 Activesync ,会提示 Your server does not support metadata/annotations 。 在 plugins/kolab_activesync/kolab_activesync.php 文件里有写 ActiveSync configuration utility for Kolab accounts. 且有如 public const ASYNC_KEY = '/private/vendor/kolab/activesync'; 的设置,估计是这个 kolab_activesync 是专为 kolab 使用的,不适合公共版本的 roundcube 使用。

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

roundcube 前端 设置 里点击 Activesync ,提示出错

相应出现在 syslog 里的日志内容

debian 里的 apache traffice server - 帝国cms 站点 - 访问设置

现象1:站点前台,用户登录异常,如输入密码登录成功后,显示“未登录”;又或者未登录的用户显示是某个用户登录状态。
应对:proxy.config.http.cache.cache_urls_that_look_dynamic 设置为 0 。即默认缓存 php 的,设置为不缓存 php 。

现象2:站点后台,管理页面输入用户和密码登录后,页面空白。
应对:proxy.config.url_remap.pristine_host_hdr INT 设置为 1 。即默认不保持客户请求头的,设置为 保存 。

参考:https://docs.trafficserver.apache.org/admin-guide/files/records.config.en.html

在 iredmail 1.7.1 - roundcube 1.6.8 里安装 kolab_notes 3.5.5 插件 - 未成功配置 - 提示 required kolabformat module not found

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

步骤:

  1. cd /opt/www/roundcubemail/plugins/ # 转到 roundcube 插件目录
  2. cp -a /opt/www/roundcubemail-plugins-kolab/plugins/kolab_notes ./ # 复制 tasklist 插件文件
  3. vi /opt/www/roundcubemail/config/config.inc.php # 启用 tasklist 插件

结果:kolab_notes 未能成功使用,新建 笔记 时,roundcube 前端提示“保存时发生错误”,web 日志显示 roundcube: PHP Error: required kolabformat module not found (POST /mail/?_task=notes&_action=list) 。 原因很可能是 kolab_notes 的插件,当前没有为 caldav 做相应的配套适配(calendar 和 tasklist 有适配 caldav )。

新建 笔记 时,roundcube 前端提示“保存时发生错误”

web 日志显示 roundcube: <h7oub9sp> PHP Error: required kolabformat module

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

在 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);
##########################