Posts for: #Ops

怎么给 Omarchy 提 PR

太长不看

Omarchy 装机自带一份给 AI 助手看的贡献指南,在仓库的 default/agents/skills/omarchy/contributing.md。跟 Claude 说"帮我给 Omarchy 报个 bug",或者"把这个修法提成 PR",它会读这份文件,自己走完收日志、截图、fork、跑测试、开 PR 的全过程。

下面是它照做的规矩,自己动手也一样。

去哪提

Omarchy 的代码在 omacom/omarchy。issue 只收确认过的 bug,模板第一行写着 “an open source gift, not a product you bought from a vendor”。功能建议去 Discussions 的 Suggestions 分类,手册修改去 Manual 分类,不确定是不是 bug 去 Discord。求助发到 Issues 会被关掉。

规矩

它没有 CONTRIBUTING.md,代码规范在根目录的 AGENTS.md:命令一律 omarchy- 开头,bash 字符串判断用 [[ ]]、数字用 (( )),缩进两空格,shebang 只能 #!/bin/bash。不合规会被打回。

动手

报 bug 带上这两条的输出,日志可传到 logs.omarchy.org,24 小时过期:

omarchy version
omarchy debug --no-sudo --print

指南点名要截图,用 omarchy capture screenshot,只能在网页上拖进去。

[阅读全文]

备份公司邮箱的三种办法

企业微信邮箱、腾讯企业邮箱,网页端和客户端都只能一封一封另存,没有批量导出。想把几年的邮件整个拿到手,得走 IMAP。

三条路:Mac 自带的邮件 App 导出、imapsync 搬到 Gmail、自己写脚本存本地。共同前提是先开 IMAP。

先开 IMAP

网页登录企业邮箱:

  1. 设置 → 收发信设置 → 开启 IMAP/SMTP 服务
  2. 设置 → 邮箱绑定 → 看"安全登录"开没开。开了就生成一个客户端专用密码,下面三种办法都用它,不用邮箱密码
  3. 服务器 imap.exmail.qq.com,端口 993,SSL

账号被公司回收之后什么都拿不了,要备份趁还能登录。

一、Mac 邮件 App 导出

邮件 → 添加账户 → 其他邮件账户,填地址和客户端专用密码,服务器手填上面那个。等它把邮件同步完,几万封要一两个小时。

然后选中左边的邮箱,菜单 邮箱 → 导出邮箱,选一个文件夹。每个邮箱导出成一个 .mbox。

  • 好处:不用装东西,附件都在里面
  • 坏处:.mbox 是一个大文件,几年邮件轻松上 GB,搜索只能靠再导回某个邮件客户端。Apple 的导入功能对超过 2 GB 的 mbox 会出问题,导出时按邮箱分开导,别一次全选

适合:一次性存档,存完基本不再翻。

二、imapsync 搬到另一个邮箱

不落地本地文件,直接把邮件复制到 Gmail 或 Fastmail。

brew install imapsync

imapsync --host1 imap.exmail.qq.com --user1 [email protected] --password1 '客户端专用密码' \
         --host2 imap.gmail.com   --user2 [email protected]   --password2 '应用专用密码' \
         --gmail2

默认全量:所有文件夹所有邮件,保留时间和已读状态。再跑一遍是增量的,按 Message-ID 跳过搬过的。不加 --delete1 / --delete2 它不删任何东西,源邮箱后来删掉的邮件目标那边还留着。

[阅读全文]

nixos-anywhere:一条命令把远程 Linux 装成 NixOS

装 NixOS 通常要做安装 U 盘,进安装环境,手动分区,手动装。云主机更麻烦,很多厂商没有 NixOS 镜像,只给 Debian、Ubuntu。

nixos-anywhere 解决的就是这件事。只要一台机器能 SSH 登录,它就能远程把机器上的 Linux 换成 NixOS。不用 U 盘,不用控制台,不用厂商支持。

它怎么做到的

靠的是 Linux 的 kexec。kexec 能跳过硬件重启,直接把内存里正在跑的内核换成另一个。nixos-anywhere 用它做四步:

  1. SSH 登进目标机器,下载一个很小的 NixOS 安装环境,用 kexec 切换过去。原来的系统被踢出内存,机器现在跑在一个纯内存的 NixOS 安装盘里。
  2. 按你写的分区文件给硬盘分区、格式化、挂载。这一步交给 disko 做,disko 是一个用配置文件描述磁盘布局的工具。
  3. 把你定义好的 NixOS 系统传到机器上,装进硬盘。
  4. 重启。机器起来就是 NixOS。

要准备什么

本机:

  • 装了 Nix,开了 flakes
  • 一个 flake,里面定义了目标机器的 NixOS 配置
  • 一个 disko 分区文件

目标机器:

  • 跑着任意 Linux,x86_64 或 aarch64
  • 能用 root 或免密 sudo 的用户 SSH 登录
  • 内存 1GB 以上,安装环境要在内存里跑
  • 支持 kexec。多数虚拟机和物理机都支持,OpenVZ、LXC 这类容器不支持

一个完整的例子

flake.nix:

[阅读全文]

顺着一封 DMARC 报告,学一下邮件认证三件套

slax.com 的客服邮箱每天会收到几封 DMARC Aggregate Report,发件人是 [email protected],附件是几百字节的 zip,里面是 XML。我之前从来不开。今天问了 Nix 一下这是什么,顺着学了一遍邮件认证三件套:SPF、DKIM、DMARC。

SPF

SPF(Sender Policy Framework)配在 DNS 里,告诉收件方"这些 IP 才允许替我发邮件"。比如域名用飞书邮箱,SPF 记录会写:

v=spf1 +include:_netblocks.m.feishu.cn -all

意思是飞书的发送服务器 IP 都允许,其他一律拒绝。

SPF 的弱点是不抗转发。客户把我的邮件转发到 Gmail 时,源 IP 变成转发服务器,原来的 SPF 检查就失败了。

DKIM

DKIM(DomainKeys Identified Mail)给每封外发邮件加密签名。私钥在邮件服务器那边,公钥发布在 DNS 里。收件方拿公钥验签,确认这封邮件是我发的、内容没被篡改。

签名跟着邮件走,被转发也不掉。所以 SPF 失败的转发场景,DKIM 还能过。

DKIM 的 selector 名因服务商而异,飞书是 feishu 加一串时间戳,比如 feishu2605101150._domainkey.yourdomain.com。要查 DKIM 是否配置,得知道精确的 selector 名。我一开始拿常见的 s1、default、larksuite 去 dig,全部空,以为是没配。后来登录飞书后台才看到真实的 selector,DKIM 其实早就启用了。

DMARC

DMARC(Domain-based Message Authentication, Reporting & Conformance)是上面两件的协调层。它告诉收件方"如果 SPF 和 DKIM 都对不上我可见的 From: 地址,按这个策略处理(none / quarantine / reject),并把每天的统计发到这里"。

[阅读全文]

一个 AMP 报警,挖出一个子域名接管

AMP(Accelerated Mobile Pages)是 Google 2015 年推的移动端加速网页框架,强制简化 HTML 和 JS、内容托管在 Google CDN,目的是让手机搜索结果秒开。后来普及度一般,2021 年 Google 把它从移动搜索排名加权里移除,现在基本是历史遗产,但 Search Console 还会扫描和报警。

今天收到 Google Search Console 的一封邮件:

AMP issues detected in wulujia.com

To the owner of wulujia.com:

Search Console has identified that your site is affected by 1 AMP issue(s). The following issues were found on your site.

Top non-critical issues

AMP page domain mismatch

Non-critical issues are suggestions for improvement, but don’t prevent the page or feature from appearing on Google. Some of these issues could be reclassified as critical in the future, and critical issues can affect your site’s appearance on Search.

[阅读全文]