使用 Mailcow API 批量创建邮箱账号:从手工操作到自动化

在 Mailcow 管理后台中逐个创建邮箱账号并不困难,但当一次需要创建十几个甚至更多账号时,重复填写用户名、密码、配额和启用状态会变得繁琐,也容易出现输入错误。 Mailcow 提供了管理 API,可以通过脚本批量创建邮箱。即使 Mailcow 使用 Docker 部署,调用方也不需要进入容器,只需通过 Mailcow 对外提供的 HTTPS 地址访问 API。 本文介绍一种相对安全、简单且容易检查的批量创建方法。 一、Mailcow API 是什么 Mailcow 的网页管理后台适合人工操作,而 API 适合程序化管理。 例如,创建邮箱通常使用类似下面的接口: 请求中包含: 调用成功后,Mailcow 会像在网页后台手动创建一样,在系统中生成邮箱账号。 API 客户端与 Docker 容器之间没有直接关系,实际通信过程如下: 因此,脚本可以运行在: 不需要进入 Docker 容器,也不需要直接操作数据库。 二、在 Mailcow 后台启用 API 登录 Mailcow 管理后台,进入系统配置中的 API 页面。 通常可以看到两类权限: 创建邮箱属于写操作,因此需要临时启用 Read-Write API。 建议遵循以下原则: API …

在 Android 手机上将剪贴板内容广播到多台 KDE 设备

KDE Connect 可以在手机与电脑之间同步通知、文件、输入设备和剪贴板。不过在实际使用中,剪贴板同步往往会出现一个明显差异: 这并不一定是 KDE Connect 配置错误,而是与 Android 系统对后台读取剪贴板的限制有关。 问题表现 多台电脑与一部 Android 手机已经通过 KDE Connect 完成配对,并且各设备上的剪贴板插件均已启用。 测试时发现: 实际需求是:在手机上复制一段文字后,将它一次发送给所有当前在线并已配对的设备。 为什么手机端不能自动同步 较新的 Android 系统限制后台应用持续读取系统剪贴板。 当用户在其他应用中复制文字时,KDE Connect 通常无法像桌面程序一样,在后台立即获取刚刚复制的内容。因此,手机端很难实现完全自动的“复制即广播”。 这就导致了两种不同的工作方式: 这种差异主要来自操作系统权限模型,而不是 KDE Connect 本身失效。 解决方法:添加“发送剪贴板”快捷开关 KDE Connect 在 Android 的快捷设置面板中提供了一个“发送剪贴板”按钮。 设置步骤如下: 之后的使用流程为: 能否一次发送到多台设备 可以。 当多台设备同时满足以下条件时,点击一次“发送剪贴板”按钮,就可以将内容发送到这些设备: 因此,这个功能不仅适用于手机与单台电脑之间同步,也适用于手机向多台电脑广播当前剪贴板内容。 电脑端需要检查的设置 如果部分电脑收不到内容,可以检查: 如果设备处于离线状态,发送操作不会在设备重新上线后自动补发。需要在设备恢复连接后再次点击“发送剪贴板”。 实际使用体验 最终形成的操作流程非常简单: 手机复制文字 → 下拉快捷设置 …

从 X11 切换到 Wayland 后,远程代理无法打开可见浏览器的排查与修复

在一套多主机自动化环境中,AI 代理需要远程控制一台 Linux 桌面设备上的专用浏览器。这个浏览器使用独立用户数据目录启动,同时开启本机回环地址上的远程调试接口,再通过 SSH 隧道供另一台控制主机访问。 这套流程过去一直可以正常工作,但桌面环境从 X11 切换到 Wayland 后,代理突然无法打开可见的浏览器窗口,并判断当前系统“没有图形显示环境”。 经过手动测试和流程修正,最终确认问题并不在浏览器,也不在 Wayland,而在于代理获取图形会话环境的方法仍然停留在旧的 X11 逻辑。 一、原有工作方式 整个浏览器控制流程大致分为四部分: 正常情况下,代理不仅可以读取网页内容,还可以操作可见浏览器窗口,例如: 这种方式与普通无头浏览不同。操作过程会真实显示在桌面上,坐在屏幕前的人可以同步观看。 二、出现的问题 桌面环境切换到 Wayland 后,代理尝试启动浏览器时发现: 随后代理直接得出结论: 表面上看,这个判断似乎合理,但实际上检查的是代理当前所在的 SSH shell,而不是桌面主机中正在运行的真实图形会话。 SSH 登录产生的非图形 shell 没有继承桌面会话变量,是完全正常的现象。即使桌面上正在运行完整的 KDE Wayland 会话,SSH 终端中的相关变量仍然可能为空。 因此,不能根据 SSH shell 中的环境变量判断远程设备是否存在图形会话。 三、手动测试 为了区分浏览器故障和代理逻辑故障,首先在桌面主机本地终端中进行了测试。 本地图形终端可以正常读取到以下类型的环境信息: 随后使用以下参数启动专用浏览器: 测试进行了两次,两次都顺利打开了可见浏览器窗口,并正常进入目标网页。 这说明: 四、真正的原因 旧流程主要针对 X11 环境设计,通常从 X11 …