通过Moltbot调用IMessage

更新时间:
复制为 MD 格式

基于 Linux 部署 Moltbot 网关,通过 Tailscale 构建安全隧道互联 Mac,实现通过Moltbot管理Mac上的iMessage。

架构

┌──────────────────────────────┐          SSH (imsg rpc)          ┌──────────────────────────┐
│ Gateway host (Linux/VM)      │──────────────────────────────────▶│ Mac with Messages + imsg │
│ - clawdbot gateway           │          SCP (attachments)        │ - Messages signed in     │
│ - channels.imessage.cliPath  │◀──────────────────────────────────│ - Remote Login enabled   │
└──────────────────────────────┘                                   └──────────────────────────┘
              ▲
              │ Tailscale tailnet (hostname or 100.x.y.z)
              ▼
        user@gateway-host

操作步骤

Tailscale配置

  1. Mac和服务器需要配置Tailscale,进行网络的打通。首先需要在Tailscale进行注册。

  2. Mac下载安装Tailscale,下载地址

    image (57)

  3. 安装后,通过命令行启动:

    /Applications/Tailscale.app/Contents/MacOS/Tailscale up
  4. Linux服务器上安装Tailscale,进入地址,获得脚本并在Linux操作系统中执行。

    image

    image (59)

  5. 执行完成后,MacLinux位于一个局域网里,可以互相通信。

    image

  6. 发现Linux中的DNS会被Tailscale覆盖导致网络不通,所以需要配置DNS,需要配置NameServer,这里用1.1.1.1或者8.8.8.8

    image

    image

Mac配置

  1. 需要打开Mac的远程连接权限:基础设置 > 通用 > 共享 > 远程连接

  2. sshd-keygen-wrapper赋予权限:系统设置 > 隐私与安全性 > 完全磁盘访问权限image

  3. 需要确保Mac上的IMessage处于登录状态。

Clawdbot配置

  1. 需要关注的配置文件/root/.clawdbot/clawdbot.json,在其中加入channel的配置。

    {
      "channels": {
        "imessage": {
          "enabled": true,
          "cliPath": "/root/.clawdbot/scripts/imsg-ssh",
          "dbPath": "/Users/{{YOUR_USER_NAME}}/Library/Messages/chat.db",
          "remoteHost": "{{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}}",
          "dmPolicy": "pairing",
          "groupPolicy": "allowlist",
          "includeAttachments": true
        }
      }
    }

    其中需要重点关注以下参数:

    • YOUR_USER_NAME:替换为Mac的用户名。

    • YOUR_MAC_MAGIC_DNS:替换为MacTailscale中的Magic DNS。

    Magic DNS获取方式如下:

    image

  2. 新增/root/.clawdbot/scripts/imsg-ssh,负责通过ssh将命令转发到Mac。{{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}}要替换为上一步获取的。另外,需要给这个文件加执行权限。

    #!/usr/bin/env bash
    exec ssh -T {{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}} /usr/local/bin/imsg "$@"
  3. 目前可通过ssh {{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}}通过密码远程连接到Mac了,可以配置从Linux服务器免密登录到MacSSH密钥认证。

  4. 启动并初始化gateway:

    cd /home/clawdbot/
    pnpm clawdbot onboard --install-daemon

结果展示

  1. 通过TUI连接Chat。

  2. 输入:通过IMessage给+86188xxxxxxxx发送一首诗,可以看到Mac向指定账号发送了一首诗。

    image