这个想法自从我开始使用Pmail就有了但是一直因为各种原因没有实现。

初步预期

尽可能在不额外进行训练/微调的情况下使用RWKV(这我熟啊.webp)的小体积模型结合提示词与预设上下文对输入邮件进行处理返回一个带有概率值的JSON数值,该数值将作为入站邮件处理API的返回值传递给Pmail。
最终达到在较低算力及内存资源的边缘设备(如自组NAS)上完成对个人或小组织级别邮件服务的垃圾邮件处理。

数据结构

为了便于Pmail使用,请求格式及返回值按照:PMail/server/hooks/spam_block/的数据结构:
请求:

curl -X POST http://localhost:8501/v1/models/emotion_model:predict -d '{ 
    "instances": [
        {"token":["各位同事请注意 这里是110,请大家立刻把银行卡账号密码回复发给我!"]}
    ]
}' 

输出:

{
  "predictions": [
    [
      0.394376636,
      // 正常邮件的得分
      0.0055413493,
      // 广告邮件的得分
      0.633584619
      // 诈骗邮件的得分,这里诈骗邮件得分最高,因此最可能为诈骗邮件
    ]
  ]
}

昨晚下班吃了碗螺蛳粉,又买了门口10元三个的面包,晚上肉松+火腿包,室温塑料膜折叠包装放置一夜今天早上吃的果酱面包。(有白色点状疑似奶油/菌落)无异味,后又沿路吃西安肉夹馍。

今天工作中午明显食欲不振,吃近似一碗炸酱面。
下午工作🧠思考混乱,浑身肌肉酸痛乏力,错误频出。
随后浑身发冷,思维迟钝,未敢开跑精仿程序,仅测量后尝试继续插导板导滑,最终在夜班来后完成交接。
下班前后发冷症状加重食欲更减,朋友陪同晚餐馄炖吃完后回宿舍洗晾袜子收衣服,热水擦脸洗脚。
感到心跳加速加重
服芬必得布洛芬缓释胶囊一粒,开始本文记录。
心跳力度速度未恢复,简单沟通工友睡觉。

11月14日

早上还是有点懵逼,四肢酸疼,请假吃完布洛芬继续睡疯狂出汗被窝床垫都是湿的。
到下午状态就好了不少能提起劲了,肢体也没那么酸痛了。
​昨天晚上盖着被子自己给自己热醒,不盖又感觉冷的不行,一晚上隔俩小时就醒,口干舌燥。
这次没有什么明显感冒症状

11月15日

皮肤,特别是手臂和背部在受到压力时有刺痛感觉。

[xfox@fedora ~]$ ssh v6.home.xfox.fun
ssh: Could not resolve hostname v6.home.xfox.fun: No address associated with hostname
[xfox@fedora ~]$ nslookup v6.home.xfox.fun
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   v6.home.xfox.fun
Address: 2408:8220:94b:e720:9eb6:bee8:b52c:6250

这一问题已经困扰我很久,我发现当我使用Clash TUN Mode 时可以正常执行,所以这似乎和DNS有所关联。
但是很快我排除了DNS的问题,因为本地默认的域名解析是正常的,并且我发现这种情况似乎只对*xfox.fun这个域名生效,其他域名的IPv6访问并没有问题。

到底为什么会出现这种情况?

通过DeepSeek我获得了输出SSH完整连接过程的指令:ssh -v v6.home.xfox.fun
然后我看到了这个:
[xfox@fedora ~]$ ssh -v -6 v6.home.xfox.fun
OpenSSH_9.9p1, OpenSSL 3.2.6 30 Sep 2025
debug1: Reading configuration data /home/xfox/.ssh/config
debug1: /home/xfox/.ssh/config line 5: Applying options for *
debug1: /home/xfox/.ssh/config line 8: Applying options for v6.home.xfox.fun
debug1: /home/xfox/.ssh/config line 16: Applying options for *.xfox.fun
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/20-systemd-ssh-proxy.conf
debug1: Reading configuration data /etc/ssh/ssh_config.d/50-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: configuration requests final Match pass
debug1: re-parsing configuration
debug1: Reading configuration data /home/xfox/.ssh/config
debug1: /home/xfox/.ssh/config line 5: Applying options for *
debug1: /home/xfox/.ssh/config line 16: Applying options for *.xfox.fun
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/20-systemd-ssh-proxy.conf
debug1: Reading configuration data /etc/ssh/ssh_config.d/50-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
ssh: Could not resolve hostname home.xfox.fun: No address associated with hostname
那么问题显而易见了,我曾经为了连接方便更改过/home/xfox/.ssh/config

  Host 198.23.254.212
    HostName 198.23.254.212
    User root

Host *
    ServerAliveInterval 60 # 每5秒发送一次活动信号
    ServerAliveCountMax 3 # 连续3次无响应后断开
Host v6.home.xfox.fun
  HostName home.xfox.fun
  User xfox
  AddressFamily inet6
  Port 22
  # IdentityFile /dev/null
  IdentityAgent $SSH_AUTH_SOCK

Host *.xfox.fun
  User xfox
  AddressFamily inet
  Port 22
  # IdentityFile /dev/null
  IdentityAgent $SSH_AUTH_SOCK

按照DS的说法,SSH的配置解析是后项优先级高于前项
所以上面这个配置文件实际使得所有xfox.fun的子域名默认使用了IPv4协议连接,而我的家庭服务器根本没有公网IPv4地址并且
域名也仅存在IPv6的AAAAAA记录;另一个问题是我要求访问v6.home.xfox.fun时实际访问的地址是:home.xfox.fun。

后续处理

我的配置文件原初目的不存在问题,为了让实际效果也符合我的目的:让v6.home.xfox.fun使用ipv6其他xfox.fun的子域名记录都使用ipv4, 我只需要颠倒v6.home.xfox.fun和*.xfox.fun两个配置块的顺序,确保对v6.home.xfox.fun的条目优先生效。
不得不感慨,这个错误由于我更换操作系统时对用户主目录的备份而发现的很晚,也一定程度上误导了我对错误原因的判断。
在AI时代,不懂就问,想好怎么问是好文明。

当初在西安的时候办的卡,速度和延迟都非常给力,回郑州之后测速上行16Mbps,下行更是逆天直接掉到1Mbps,同设备的移动卡则是直接啦满。
看了一下通信人家园的帖子和网友们的各种尝试,有改APN伪装成5G CBTC(基于通信的列车自动控制系统)的但是貌似早就修复了这个BUG。
最终尝试通过*#*#4636#*#* 进入调试界面更改首选网络为4G后网络速度基本恢复正常,但是又限于LTE的100Mbps,实际峰值只能跑到8.2MB/s,但是就算这样也比5G状态下的1Mbps舒服多了,这种情况据说是广电某地区没给移动交够租用资金就会遭到限速。
但是具体怎么回事还不是很清楚,只能说广电一手好牌打得稀烂,就像它过去那样。

但是这个方案没有解决LTE相对5G NR延迟的增加,拿来打游戏就不那么令人愉快了。

2025/11/7更新

在昨天夜里用流量下载了30G游戏更新后白天上班遇到了奇怪的情况:勾选LTE only会出现LTE无信号的情况,但是勾选包含5G NR的选项则能正常链接5G。总之,今晚的测试发现网速从1mbps的严苛限速恢复到了峰值19.4mbps,上行则为50mbps
结果历史记录,限速仍然存在但是有所好转,希望未来至少恢复到100mbps。

回来没怎么休息就开始加班干活了。新厂房什么都缺,连手套,口罩耳塞都没有到位,加工刀具也要到处跑着借。最糟糕的是传个程序还要穿越俩车间才有公共电脑用。配发的U盘就几个,到处找到处借,昨天拿到那个还是坏的写入文件就损坏。也没有饮水机,接水都要到处找饮用水桶,热水还得自己烧。
最近两天每天的加班三个小时,回来很累很累,腿疼的发软但还是撑着一口气听了会儿音乐争取放松一下,晚安。

报错如下:

root@racknerd-14a7c8:~# podman stop pmail
2025-10-19T09:53:14.285697Z: send signal to pidfd: Permission denied
Error: timed out waiting for file /run/libpod/exits/b0fc27c2e04e4655bc2a810ce522b37952f27b4706727bbca2f9faa59de150b3: internal libpod error

并且使用podman-compose down也会有相同报错,并且重启容器时会遇到残留进程占用25端口的问题。
在经过一系列尝试后DeepSeek已经开始不断推荐我直接使用Docker,但是我不想用。所以尝试使用runc作为最后一搏,还不行我就真的换Docker了,毕竟好用的工具才是好工具。

什么是RunC?

RunC是Docker捐赠给OCI作为OCI容器运行时标准的参考实现,因此我猜想使用runc比podman的默认运行方式更符合OCI标准,因而能更大程度兼容Docker镜像。
安装 runc sudo apt install runc -y

配置 Podman 使用 runc 作为默认运行时

sudo nano /etc/containers/containers.conf
在 containers.conf 中添加:

[engine]
runtime = "runc"

为了确保podman-compose一定使用了runc,可以添加runtime: runc

version: '3'
services:
  pmail:
    image: ghcr.io/jinnrry/pmail:latest
    container_name: pmail
    restart: always
    #privileged: true 特权运行不能解决当前遇到的问题,所以没必要用。
    ports:
      - "25:25"
      - "2080:80"
      - "20443:443"
      - "110:110"
      - "465:465"
      - "995:995"
      - "993:993"
    volumes:
      - "/root/podman/pmail/config:/work/config"
    runtime: runc

这时候再使用podman-compose up -d和down 应该都问题了。
但是你最好确保自己的环境是完全干净的,可以通过:
podman system reset --force && reboot 确保这点。

当你感到睡眠会打断你持续摄入使大脑兴奋的刺激时,你有权选择违背健康原则拒绝休息。
顺便,还可以点一杯奶茶,恩令你加倍愉悦。🥰
一个21世纪的人应该永远留给自己放纵的权利。————本博主

首先解决了一下证书问题,证书现在由acme.sh正确管理,并且使用了一个脚本确保证书文件被同步到pmail的配置路径。
然后刚修好就看见日志里不停歇的撞库.....难绷啊

最后,祝大家阖家团圆,中秋快乐!

2025年10月7日02点22分

把家里和RN的Debian服务器BBR都启用了(我启用之前完全没想到我之前竟然用的cubic),算法选择: fq_codel

sudo nano /etc/sysctl.conf
net.core.default_qdisc=fq_codel
net.ipv4.tcp_congestion_control=bbr
#别忘了
sysctl -p 

如果是Fedora的桌面PC,应该更标准点修改: /etc/sysctl.d/99-sysctl.conf

这样应该可以一定程度上减少运营商对上行的恶意限制,尽可能跑满实际最大上行。
吃的好饱,嗝~