KDE PIM 是一个历史悠久的个人信息管理套件,现今集成在 KDE Plasma 5 桌面环境中。
本指北旨在通过微软 Outlook 的 Exchange 同步服务,给 Linux(KDE)、Android 以及 Windows 提供同步且大体一致的使用体验。
选用理由
为什么要用 PIM
现代的操作系统基本上都会内置个人信息管理套件。
微软的 Windows10 有内置的邮件客户端与日历管理,移动端可以通过 Outlook 应用同步邮件、联系人、日历;Google Android 也有完整的邮件、联系人、日历同步机制;即使是国内的阉割版安卓,也有手机厂商提供的基本联系人与日历同步。
与其将 PIM 当作附加的功能,不如将 PIM 视为现代数字生活的基础设施之一。Plasma 作为现代操作系统的桌面环境,自然也是有比较完善的 PIM 管理机制的。
为什么要用 KDE PIM
笔者使用的是 KDE,自然用 KDE 的 PIM。GNOME 也有优秀的软件套件,但古话说:
橘生淮南则为橘,生于淮北则为枳,叶徒相似,其实味不同。
另一方面,笔者实在无法欣赏 Gnome 最新的 CSD 样式。
至于 Mozilla Thunderbird ,笔者一直想不通,为什么作为一个邮件客户端,Thunderbird 没有原生的后台服务。换言之,窗口关闭时,Thunderbird 既不能提醒邮件收取,也不能提醒日程安排,多多少少有一些不便。
为什么是 Outlook
一是网络原因,读者在电脑上可以随意设置代理,但如果涉及到手机端同步,Google Service 就会涉及到一些折腾,同时也要考虑隧道带来的电量损耗。而 Outlook 手机端就不会有这种异常。
二是 Outlook 功能足够丰富,且微软对隐私的处理更规范。虽然腾讯也
提供原生的 CalDav、CardDav 同步,但笔者实在无法放心把自己的数据大大方方交给腾讯。同时 Outlook 也提供专门的中国节假日日历,比 KDE 内置的节假日强不少,腾讯就没有这种褔利了。
Linux 端(KDE)
一点点背景知识
KDE PIM 套件由多个组件构成。
Kontact 是 KDE 的整合个人信息管理套件前端。提供日历、通信簿、笔记、待办事项、新闻和电子邮件的功能。使用 KPart 来嵌入各种独立应用程序,比如 KMail(邮件)、KAddressBook(联系人)、Akregator(RSS)等。
同时,Kontact 只是一个 GUI,在背后负责维护数据库、拉取邮件的程序名叫 Akonadi,给用户发送通知的也是 Akonadi。
下文在提及这些组件时,可能对一些模糊的概念进行混用。对于某些功能,不会刻意区分套件整体、GUI 与后台,比如:
Akonadi 支持读取在线的 iCal 文件
这一语句与下一语句表述的意思相同:
Kontact 支持读取在线的 iCal 文件
同时,Kontact 有时也会用来代指整个 KDE PIM 套件。
DavMail
Kontact 直接支持微软的 Exchange Web Service 协议(下称 EWS),可以直接拉取邮件、联系人与日历。
但是 Kontact 内置的 EWS 支持有不小的缺陷——只读。换言之,纯 EWS 协议下的 Kontact 只能接收邮件,下载在其他设备或网页上创建的日程,而不能发送邮件,新建事件。同时联系人同步也有问题,会出现一些莫名其妙的 UUID 项目。
为了用户体验,笔者建议使用 DavMail 绕一下。可能要多花一点时间,但绝对值得。
DavMail 的工作原理很简单,他连接到 EWS 服务器,然后在本地架设对应的 WebDav 服务器。对本地项目的更改会在几秒内同步到 EWS 服务器上。
下载
到 DavMail 官网 下载 Workstation (personal) 版 DavMail。Debian 有 deb 包,但其他发行版就只能用 zip 包。
找个好地方解压( unzip
),然后 cd
进去。
DavMail 是 Java 应用,所以运行前确认一下当期环境里有没有 Java,大多数发行版源里都有 OpenJDK,如果没有,那就手动下载一个:
./davmail azul
之后直接运行 DavMail:
./davmail
配置
对着 DavMail 托盘图标双击打开设置界面。
DavMail 默认配置就已经足够,如果需要画蛇添足增加点安全性的话,因为只需要 Caldav 功能,所以可以把 POP、IMAP 等取消勾选(Kontact 直接使用 Outlook 的 SMTP 与 IMAP 服务器即可,不需要劳烦 DavMail),并保存( Save
)。
如果有兴趣研究一下 DavMail,详细的配置可以参考 DavMail 官方教程。
注意,DavMail 本身不需要账户的密码,可以理解为一个跨协议翻译器。密码还是由 Kontact 调用 KDE 钱包保管。另外,KDE 系统设置可以添加 DavMail 启动脚本为开机启动。
Kontact
邮件账户
邮件账户采用 Outlook 官方邮件服务器方式。直接在 Kontact 设置中使用 “账户助手” 向导添加即可。
输入帐号密码,点击 “下一步”,然后点击 “添加账户”。
出于安全考虑(不少人的 KDE 钱包使用空密码),笔者建议打开微软账户的双重验证,并在 Kontact 中使用 “应用密码” 登录。
日历与联系人账户
在添加日历与联系人账户时,务必先开启 DavMail,否则 KMail 会出现很奇怪的报错。
切换到 Kontact 的日历标签,在日历列表的空白处右键单击,弹出菜单中选择 “添加日历”。
之后会询问添加日历的类型,选择 “Dav 群件资源”。随后出现一个向导,填入用户名与密码(同样建议使用单独的应用密码),点击下一步。询问服务器类型时选择手动配置,并点击 “完成”。
出现下图:
显示名随便填一个自己喜欢的名字,然后在 “服务器配置” 一栏点击 “添加”,出现以下窗口。
然后添加日历:选择 “CalDAV”,URL 填写 http://localhost:1080/users/example@outlook.com/calendar
,点击 “获取”,然后等几秒,下面会出现当前 Outlook 日历的列表。列表出现后点击确定。
添加联系人的方式大同小异,只不过选择 “CardDAV”,且 URL 填: http://localhost:1080/users/example@outlook.com/contacts
即可。
如果使用了 Outlook 的节假日日历,这个日历会显示为一个单独的子文件夹,因为条目比较多(将近 500 个),所以同步这个日历的时间还蛮长的,保持耐心。
Plasma
Plasma 数字时钟部件(默认在屏幕右下角)可以显示日程。
配置这一功能的位置已经在图上圈出。
Android 端
使用 Outlook 应用即可同步日程和联系人。Outlook 采用标准的 Android “帐号与同步” 接口同步数据。
迁移联系人到 Outlook
移动设备本地存储的联系人不会自动同步到 Outlook。但是你可以将移动设备原有的联系人导出为 ics 格式,再通过 Kontact 或网页 Outlook 导入 Outlook 账户。之后删除设备原有的联系人即可。
Windows 端
微软在安装 Windows 时就让用户登录了账户。现在只需要打开 Outlook 应用就好。
问题排查
显然,Kontact 与 Akonadi 远非完美,有时用户需要处理一些问题……顺带一提,大多数问题不是邮件帐号引起的,SMTP 这些玩意已经被玩烂了,没啥出 Bug 的空间。
工具
akonadictl
控制 Akonadi 进程。详细用法参见 akonadictl --help
。
akonadiconsole
检查 Akonadi 内部工作状况的 GUI 工具。可以控制每一个数据源的同步,官方说法是 “使用者后果自负”。
Kontact 默认个人日历
Kontact 默认有个本地 “个人日历”,文件位置是 ~/.local/share/apps/korganizer/std.ics
。如果不小心删除了这个日历,可以直接重新添加这个文件。
数据无法完整同步
有些时候,会有那么一两个条目始终无法同步正常,或者 Dav 日历在打开 DavMail 时也总是在 “离线状态”。此时可以把有问题的资源账户删除再添加,或者考虑重置 Akonadi 数据库(见下文)。
重置 Akonadi
重启解决 90% 的问题,重装解决 99% 的问题。
(笔者强烈建议在重置之前试试 akonadictl restart
)
仅仅重置数据库
单纯删除数据库。邮件与其他会在 Akonadi 重启后自动重新下载,账户与设置会被保留。可以清除一些同步时产生的疑难杂症。
akonadictl stop
rm -rf ~/.local/share/akonadi/db_data/
akonadictl start
akonadictl fsck
彻底重置 Akonadi
删除所有 Akonadi 设置,Kontact 等 GUI 的部分设置会被保留。参考了 官方 Wiki。
akonadictl stop
rm -rf ~/.local/share/akonadi ~/.config/akonadi*
akonadictl start
一点考古
KDE PIM 套件的历史最早可以追溯到 1997 年,其中的 KMail 邮件管理组件自 KDE 项目伊始就一直存在于这个桌面环境中。