这几天几乎是在"折腾"里度过的。
从一台服务器上自建邮局开始,到给博客修插件、写安卓 App、换装 AI 助手……看起来是几件不相干的事,但做完回头看,它们其实共用同一套方法论。这篇就当作一次复盘,把过程和学习记下来。
---
一、自建邮局:把"发信"这件小事彻底搞明白
起因很简单——想要一个完全开源、支持 Exchange(ActiveSync)、有 webmail、还中文友好的邮箱。
踩过的坑比想象中多:
- "能收能发"和"不被人当垃圾"是两回事。 本地 Postfix 跑起来不等于对外可投递。SPF、DKIM、DMARC 三件套缺一不可,还得有正确的 PTR 反解析。最后用邮件检测工具逐项验证,看到 SPF/DKIM/iprev 全 pass 才敢说"成了"。
- 出站和入站可以拆开。 用一台带 PTR 的中继服务器专门负责往外发,本地只管收和内部投递——这个架构比想象中清爽。
- 管理入口要留后路。 管理员密码、别名、DKIM 密钥这些,一定要落在文档里;不然三天后自己都记不住。
收获一句话:邮件系统的难点从来不是"装软件",而是"让全局的可信度成立"。
---
二、给博客修插件:四个 Bug,一条都没有白踩
博客用的是 Typecho,装了插件之后前台一直不出订阅入口。于是一路追下去,居然揪出四个独立的问题:
1. 类声明写法导致按钮消失。 PHP8 会把完整命名空间当一整个 token,主题的解析逻辑只认短名,于是插件的启用/配置/停用按钮全被判定为"不可用"。加一行 use 导入就解决了。
2. 数据库接口调用写错。 新旧 ORM 的 insert() 签名不一致,调用直接抛异常又被静默吞掉,前台只显示一句含糊的"订阅失败"。改成正确的参数形式即可。
3. CDN 缓存了 404。 站点挂了 CDN,动态接口没带缓存指令,旧结果被缓存下来。补上 no-store 才恢复。
4. 地址拼接出现了"双地址"。 某个工具函数会把绝对路径再拼一次前缀,最终请求 URL 变成了两个域名叠在一起,自然 404。
修完之后,前台订阅、后台测试邮件全部打通。
收获一句话:一个"不工作"的现象背后,往往叠着好几个"各自独立"的 bug。得有耐心一个层一个层剥。
---
三、两个安卓 App:从"能跑"到"能用"之间隔着真实世界
这几天顺手做了两个自用的小 App:一个记油耗、一个读车载 OBD 诊断。
- 离线优先是对的。 本地先存、联网再同步,用户体验立刻不一样。
- "数据不能丢"是硬约束。 于是写了数据库自动补列逻辑,升级版本不丢历史数据。
- 真实设备永远比模拟器更"野"。 车机适配器返回的数据会带一堆奇怪的帧头前缀,解析器必须先清洗再解析——这种问题只有接上真机才会暴露。
- 升级必须用同一签名。 否则用户装新版得先卸载,还得重登同步。这个教训值得刻在墙上。
收获一句话:Demo 到产品之间,隔着的全是"边界情况"。
---
四、换装 AI 助手:同一件事,可以有很多种做法
把服务器上原来那套 AI 网关换成了另一款开源助手,整个过程也算一次选型练习:
- 先看清"它到底是什么"再动手。 同名项目在生态里可能有好几个,动手前先确认官网、仓库、许可证,别把 A 当成 B。
- 容器化 + 反向代理 + 自动签证书,是一套可复用的最小部署模板。
- 安全要主动收紧:端口只绑本地、由前置代理统一暴露 443、强制 HTTPS、限制来源。默认配置永远不要直接上线。
收获一句话:选型不是选"最好",而是选"最匹配当下需求 + 自己维护得动"。
---
五、几种"顺手做的"小改进
- 日志告警从"每天一封"改成"只在异常时提醒"。 用一份基线做对比,只有明显偏离才发信,噪音立刻降下来。
- 登录失败提示改成友好的中文文案,把"技术错误"翻译成"人话"。
- 被防火墙误封时先查封禁记录,很多"网站打不开"其实是本机 IP 进了黑名单,解封即可。
这些小改动单看不起眼,但它们共同的主题是:让系统更"有人情味"——出问题时给清楚的反馈,没事时别打扰。
---
这几天通用的六条经验
1. 先搞清对象是什么,再动手。 (尤其是复用一个已有域名/服务前,务必确认它原本的用途。)
2. 硬事实要对官方来源核实。 本地打包的文档会过时,踩过这个坑。
3. 一个故障,往往是一堆 bug 叠出来的。 分层排查,别急着下结论。
4. "能跑"不等于"能用"。 边界情况、真实设备、升级路径,才是产品力所在。
5. 默认不安全。 安全配置要主动做,而不是等出事。
6. 写下文档。 三天后的自己,和陌生人没差。
---
写在最后
折腾的乐趣,大概不在于最后那个"完成了",而在于过程中不断发现"原来是这样"。
这几天学到的东西,技术层面各有各的,但底层其实是一回事:面对不确定,保持耐心,一层一层把问题拆开,然后老老实实记录。
只要还在折腾,就还在进步。
—— 本文由AI根据这几天的项目要求复盘所写。
评论区
共 7 条评论