刘家的博客
type: channel
link: https://liujia.anqun.org/
description: 记录一下，不要忘记，方便查找
items: 我的香港“半天游”
items: 和平县出入境办证窗口搬到工业园妇幼保健院附近
items: mailpit - 中文语言文件 - 中文设置 - server/ui-src/components/message/MessageItem.vue
items: poste.io - 中文语言文件 - 中文设置 - messages+intl-icu.zh.yml
items: iRedMail 批量创建邮箱工具 - Windows 可执行 .exe 文件
items: 广东电信 IPTV + LAN 分线器 - 关闭次级路由器的 DHCP 功能
items: DCImanager 5 - Windows 2025 - Unattend.xml
items: 批量设置域名 dkim 脚本 - iRedMail - dkim_setup.py - ptyhon - debian
items: 为 inbucket 的 web 界面添加一个“随机生成邮箱”的菜单标签
items: FOSSBilling - 0.6.22 - apache2 静态化规则文件 - install

我的香港“半天游”
type: item
date: 2025-12-23T15:37:00+08:00
description: 听网友说，汇丰香港银行新公布的规定：自2026年1月1日开“汇丰One”账户，且日均资产不足一万元的，会收取100元管理费。这如同一颗石子投到平静的水面，激起了“港卡”微信交流群里的波动：啊……我还没开卡呢，等等我。我决定17日星期三到香港，要办的事情是申请开通 FSMOne 证券投资和香港银行账户。当我想着做一件事时，心里就是老想着，要把事情的前前后后，如怎么过海关、怎么坐车、怎么连接WIFI、怎么在手机应用上申请银行账户等等事情都想一遍又一遍。心里想着事，觉就睡得不怎么好。第二天早上不到六点钟，我就起床，冲麦片、煮鸡蛋和收拾背包了。约六点四十五分，我在手机上，点开“智惠大巴 源平出行”的微信小程序，准备坐七点的车到“河源汽车客运站”，然后打车到“河源东站”，再坐高铁到“香港西九龙站”。没想到，票没了。我不甘心，背着包到“龙湖公园”路边等，或许有人退款或没坐上车，我来补个位。我每隔几秒反复地看手机上的时钟，看着数字从 01 分缓慢地变动，焦急等待着，心里越来越不安，能拦到车的希望越来越低。终于，我看到一辆白色的面包车，车身上有“河源”的字样，但它开得很快，仿佛没有“龙湖公园”这个上车点一样，开走了。唉……今天没人退票，我没能补票上车。我又尝试用手机应用打车，看能否打到“顺风车”到“河源东站”。我的报价是约 60 元，不承担高速费用。等了几分钟，没司机接单。我心里想，不能这么地等下去。我主动拨通上边司机的电话，问能否赶得上从“河源东站” 09:55 分开出的高铁。司机干脆地答，“不可能。你不出高速费，60 元怎么出车！”语气中带着些不耐烦。我袋好手机，调转头，往汽车站走，准备坐大巴车到深圳。我走到汽车站，车站内人很少。我在售票窗口，扫微信，买了张车票，90元。我说要去罗湖口岸，售票员说，上车时，要向跟车的人说明，因为要换车到罗湖的。车是 08:15 分开出的，还早。我站了一阵，觉得无聊，就掏出身份证在闸机里试，看能不能开到闸机。等了几秒，闸机没反应。我又尝试翻转身份证，也是不行。这时，对面路过一个大哥，对我说，“身份证没磁了”。我不信，将身份证从透明的塑料套取出，再放到感应器上，“滋——未到检票时间”，闸机有响应了。客车开出前，有几架三轮货车载来装着桔子的纸箱，跟车的人将纸箱等放到车厢下，拍照。车上乘客不多，约 5 个。可能因为要尽可能接客，所以中途客车先后在三个高速路口接了几个散客，如河源的源城汽车站、惠州等地。当客车走到深圳龙岗“大运”地铁站附近时，跟车的老板对我说，“下只站，尔可以落车，会有另一架车接”。过了一会，客车掉了个头，到了之前的路对面，我看到有几辆车停在路边，其中一辆是绿色的，车头贴有“和平 深圳”的标识。绿车司机从原客车上接过一箱物品，塞到车厢下，问我，“老板，到乃里？”“罗湖口岸”我答。“过香港啊？那可以在莲塘过关啊，还较近、方便。”“吖咪？莲塘还较近啊？从顶里到莲塘还爱几久？”“二十分钟左右。”司机瞄了瞄后视镜附近的电子时钟，此时显示 11:19 分。“过香港做惹业务？”司机边开车边问我。“聊下。想开证券户，投下‘港美股’。”“炒股啊？爱望下来啊。不好把人家骗了。之前，有帮人也系过香港，话系投资，就系投万把两万，有老板保本，每日有两三百收入。后边不了了之，估计拿归本都难。”“嗯，我睇下争，不投钱。”“今日赶吖归？香港伙食好贵嘅喔，一只快餐都爱六七拾。”“不知吖赶得归。我本想在‘河源东站’坐高铁直接到‘香港西九龙’的，但不曾赶到落河源嘅车，网约车又不肯接单。”“系啊。里下网约车，有时司机觉得做不过来，会推掉单子。就系约好嘅单，如果人不齐，第二工也会撤单。坐河源班车，爱提早一工订票争得。”这时，司机的手机响了，有人要上车，他们约好下一个停车地点。接到人后，司机就和他接着聊了。我坐在车窗旁，看路边的建筑。当看到一个凸出来的、波浪样的、写着“莲塘口岸”的建筑时，我知道，要下车了。司机在我背后说，“如果不知路，问下工作人员就得”。我走进“罗湖口岸”，跟着路标指示走，下楼梯，右转从一个小门进到一栋商场内。里边跟其它的商场有些不同，有一些银行的货币兑换店。我跟着“抵港”的指示走。当对面有人相向而行时，觉得离港往深圳的人比去香港的人要多。先刷身份证过闸，再刷通行证和指纹过闸。不知不觉，仿佛只过了一条不过 5 米长的室内天桥，我已经离境，到达香港境内了。我跟着人流，下电梯到了地面一层，这里如同在天桥底下，光线暗，回声大。映入我眼帘的是，各种巴士和目的地的指示牌，如“直达上水”等。路上，有成队、成团的游客，在集结，在嗡嗡响着，等着领队的下一个指令。我的手机收到信息提示，已经激活“香港一日流量包”。我打开“高德地图”，输入“尖沙咀”的目的地，它提示坐公交车，从 B8 经 “廣福邨”站 转 271 车，到“中港城”站下。我找到 …

和平县出入境办证窗口搬到工业园妇幼保健院附近
type: item
date: 2025-09-26T09:23:00+08:00
description: 昨天(25日)上午，我突然想去香港，打算下午去公安局办《来往港澳通行证》。下午走到和平大道公安局旁侧的“出入境自助一体办证服务厅”，一看，傻眼了——玻璃门上锁了，贴了张白纸，说：即日起入境所有业务搬迁至（新）和平县政务服务中心和平县公安局出入境管理大队2025年9月24日我想起在微信小程序里瞄过一眼，“和平融媒”的公众号好像发过一段视频，说有“新和平县政务服务中心”了。我赶紧拿出手机，来搜索视频，想知道办证厅具体搬到哪里了。这时，来了一位想办证的，拉着小孩上了台阶那儿的人工办证厅，看到锁了门，也退回到门口了，想知道办证厅的新地址在哪，问我是不是搬到九子岗了。我慌乱点击着手机屏幕，东找西找，终于找到视频，对大姐说，“搬到工业园了”。这时，门口又来一个大姐，笑着接话说，“搬到新妇幼保健院那儿了，昨天搬的”。她还问我要办什么业务，我答说办港澳证。她问，还没填表吧？我答说，没有。她说，那到路对面店里填表，也可以拍照。我问，拍照多少钱。她答说，一样。我再问，是多少钱。她才回答说，30 元，跟自助拍照一样。我说，如果价格是一样，那么就人工拍照吧。我就跟着她到了路对面，拍照，完成了办证的前提——采集数字相片。我还问，老板娘，那儿几点下班。答说是五点半，时间够。工业园的新和平县政务服务中心挺远的，大概就是在工业园主（大）路的尽头，我走到时，是 5 点钟。因为准备好了身份证和数字相片，材料具备，再加上现场采集指纹和摄像，约 5 分钟就搞好了。总结：费用：港澳证工本费 60 元，一年一次的签注是 15 元。在外头照数字相片是 30 元。总共是 105 元。个人体验：我从东山路走到新政务服务中心，很远，单程是约 1 个小时，来回那就是 2 个小时。印象中，这是办港澳证窗口第2次搬迁地点了，从解放路的老公安局到和平大道的新公安局，再到现在的工业园尽头的新政务服务中心。觉得一次比一次搬的远，感叹现在城镇化是很成功的，因为现在办事，光凭双脚走路到办事的地点，是吃力的。我看着新政务服务中心面前坪里停的汽车，心想，来这儿上班的，应该都是开车来的吧？

mailpit - 中文语言文件 - 中文设置 - server/ui-src/components/message/MessageItem.vue
type: item
date: 2025-07-16T19:06:52+08:00
description: Mailpit (1.27.1) 是一个挺好的邮件测试软件，如用于收取邮件。它的 Web 界面，默认是英文的，但可以简单将以下几个文件的少数英文字句替换成中文，就可以基本使用了。server/ui-src/components/NavMailbox.vue server/ui-src/components/ListMessages.vue server/ui-src/components/SearchForm.vue server/ui-src/components/message/MessageItem.vue参考：https://mailpit.axllent.org/docs/install/source/

poste.io - 中文语言文件 - 中文设置 - messages+intl-icu.zh.yml
type: item
date: 2025-06-23T05:14:00+08:00
description: 环境：poste.io 版本 2.5.5 FREE # 3204操作步骤：在 docker 容器里，/opt/admin/translations 新增以下中文语言文件：├── messages+intl-icu.zh.yml├── date.zh.xliff├── Base/│ └── messages+intl-icu.zh.yml├── Base/│ └── validators+intl-icu.zh.yml在配置文件上，新增 zh ， docker exec -it mailserver nano /opt/admin/config/services_base.yaml App\Base\LocaleListener: arguments: - '@service_container' - ['en', 'zh', 'cs']重启容器， docker restart mailserver ， 如果顺利，那么使用默认为中文语言的浏览器访问 admin/ 会显示中文可选，执行 docker exec -it mailserver php /opt/admin/bin/console debug:translation zh ，来查看翻译文件是否有文件格式错误或没有翻译的语句参考：https://poste.io/https://symfony.com/doc/current/translation.htmlhttps://chat.qwen.ai/

iRedMail 批量创建邮箱工具 - Windows 可执行 .exe 文件
type: item
date: 2025-06-18T09:47:00+08:00
description: 在 Windows 系统里，通过鼠标双击 .exe 程序，连接远端的 iRedMail 邮局服务器，批量创建邮箱地址。使用说明：先确保 iRedMail 邮局服务器正常运行确认邮局管理员登录信息有效在自己的 Windows 系统里，运行 .exe 批量创建工具参考：https://iredmail.org/

广东电信 IPTV + LAN 分线器 - 关闭次级路由器的 DHCP 功能
type: item
date: 2025-06-02T16:45:07+08:00
description: 环境：墙里只预留了一条网线，但现在需要同时使用 IPTV 和 LAN 两条网线。尝试：按网友说的，简单方法之一：是墙的两头分别用一个分线器，将原八芯的网线，分成两条四芯的网线使用。遇到的问题：IPTV 能正常使用，但 LAN 连接路由器和笔记本电脑测试时，会间隔着连续丢包。用网线测试仪测试，网线物理连接应该没有问题。尝试关闭 LAN 端连接着的路由器 DHCP 功能。正常了。

DCImanager 5 - Windows 2025 - Unattend.xml
type: item
date: 2025-05-17T16:43:00+08:00
description: <?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="windowsPE"> <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> <UserData> <AcceptEula>true</AcceptEula> </UserData> <DiskConfiguration> <WillShowUI>OnError</WillShowUI> <Disk wcm:action="add"> <CreatePartitions> <CreatePartition wcm:action="add"> <Order>1</Order> <Size>100</Size> <Type>Primary</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Extend>true</Extend> <Order>2</Order> <Type>Primary</Type> </CreatePartition> </CreatePartitions> <ModifyPartitions> <ModifyPartition wcm:action="add"> <Active>true</Active> <Format>NTFS</Format> <Label>System <Order>1</Order> <PartitionID>1</PartitionID> </ModifyPartition> <ModifyPartition wcm:action="add"> <Order>2</Order> <PartitionID>2</PartitionID> <Label>Windows <Letter>C</Letter> <Format>NTFS</Format> </ModifyPartition> </ModifyPartitions> <DiskID>0</DiskID> <WillWipeDisk>true</WillWipeDisk> </Disk> </DiskConfiguration> <ImageInstall> <OSImage> <InstallTo> <DiskID>0</DiskID> <PartitionID>2</PartitionID> </InstallTo> <InstallFrom> <MetaData wcm:action="add"> <Key>/IMAGE/INDEX</Key> <Value>2</Value> </MetaData> </InstallFrom> <WillShowUI>OnError</WillShowUI> <InstallToAvailablePartition>false</InstallToAvailablePartition> </OSImage> </ImageInstall> </component> <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> <SetupUILanguage> <UILanguage>en-US</UILanguage> </SetupUILanguage> <InputLocale>0409:00000409</InputLocale> <SystemLocale>en-US</SystemLocale> <UILanguage>en-…

批量设置域名 dkim 脚本 - iRedMail - dkim_setup.py - ptyhon - debian
type: item
date: 2025-05-13T12:54:00+08:00
description: 环境：debian 12.10 ，iRedMail - 1.7.3目标：批量配置域名 dkim 步骤：将 dkim_setup.py 及 domains.txt 上传到邮局服务器文件系统里，如 /rootpython3 dkim_setup.py # 执行 dkim_setup.py 脚本。脚本会从 domains.txt （可自行创建，每行一个域名） 里逐行读取邮件域名，创建 dkim 文件、将 相应的域名和 key 追加到 /etc/amavis/conf.d/50-user 文件内容中。脚本每次执行前，会对当前的 /etc/amavis/conf.d/50-user 复制备份，预防出错后需要还原使用，最后脚本会将域名及对应的解析值追加到 dkim_dns_records.json ，方便您解析域名amavisd testkey # 如需验证 dkim 的查询结果，可执行此命令如需手工操作：amavisd-new genrsa /var/lib/dkim/iredmail.demo.anqun.org.pem 2048 # 为邮件域名 iredmail.demo.anqun.org 生成数字签名文件chown amavis:amavis amavisd genrsa /var/lib/dkim/iredmail.demo.anqun.org.pem # 更改签名文件属主chmod 0400 /var/lib/dkim/iredmail.demo.anqun.org.pem # 更改签名权限编辑 /etc/amavis/conf.d/50-user 文件内容，将签名的邮件域名和文件等追加进去# Add dkim_key here. dkim_key('iredmail.demo.anqun.org', 'dkim', '/var/lib/dkim/iredmail.demo.anqun.org.pem'); @dkim_signature_options_bysender_maps = ({ # 'd' defaults to a domain of an author/sender address, # 's' defaults to whatever selector is offered by a matching key # Per-domain dkim key #"domain.com" => { d => "domain.com", a => 'rsa-sha256', ttl => 10*24*3600 }, # catch-all (one dkim key for all domains) '.' => {d => 'iredmail.demo.anqun.org', a => 'rsa-sha256', c => 'relaxed/simple', ttl => 30*24*3600 }, });dkim_setup.py 的文件内容：#!/usr/bin/env python3 import subprocess import os import datetime import json AMAVIS_CONFIG_FILE = "/etc/amavis/conf.d/50-user" DKIM_BASE_PATH = "/var/lib/dkim" DKIM_KEY_SIZE = 2048 # Or 2048, if desired AMAVIS_COMMAND = "amavisd" # Changed from amavisd-new DNS_OUTPUT_FILE = "dkim_dns_records.json" def generate_dkim_key(domain): """Generates a DKIM key for the given domain.""" key_path = os.path.join(DKIM_BASE_PATH, f"{domain}.pem") command = [AMAVIS_COMMAND, "genrsa", key_path, str(DKIM_KEY_SIZE)] try: subprocess.run(command, check=True) subprocess.run(["chown", "amavis:amavis", key_path], check=True) subprocess.run(["chmod", "0400", key_path], check=True) print(f"DKIM key generated for {domain} at {key_path}") return key_path except su…

为 inbucket 的 web 界面添加一个“随机生成邮箱”的菜单标签
type: item
date: 2025-04-20T21:02:00+08:00
description: 环境：inbucket_3.1.0-beta2_linux_amd64.deb目标：在已有的网页界面里，添加一个“随机生成邮箱”的菜单标签。访客点击这个标签，会自动生成一个随机邮箱用户名（8位，包含数字和小写字母），且会自动跳转到相应的收件箱页面，如“最近邮箱”标签的作用类似。方便访客使用。尝试：照着 inbucket 的文档，在 AI （poe 和 deepseek）的帮助下，对 ui/src 里的 Layout.elm 文件内容做了修改。尽可能不改动其它文件内容。这里是我修改后的 Layout.elm 文件内容：module Layout exposing (Model, Msg, Page(..), frame, init, reset, update) import Data.Session as Session exposing (Session) import Effect exposing (Effect) import Html exposing ( Attribute , Html , a , button , div , footer , form , h2 , header , i , input , li , nav , pre , span , td , text , th , tr , ul ) import Html.Attributes exposing ( attribute , class , classList , href , placeholder , rel , target , type_ , value ) import Html.Events as Events import Modal import Route import Timer exposing (Timer) import Random import Time generateRandomMailbox : Time.Posix -> Int -> String generateRandomMailbox time length = let chars = "abcdefghijklmnopqrstuvwxyz0123456789" charsLength = String.length chars -- 使用当前时间的毫秒数作为种子 seed = Random.initialSeed (Time.posixToMillis time) -- 生成随机索引列表 randomIndices = Random.step (Random.list length (Random.int 0 (charsLength - 1))) seed |> Tuple.first -- 将随机索引转换为随机字符 randomChars = List.map (\index -> String.slice index (index + 1) chars) randomIndices in String.fromList (List.concat (List.map String.toList randomChars)) {-| Used to highlight current page in navbar. -} type Page = Other | Mailbox | Monitor | Status type alias Model msg = { mapMsg : Msg -> msg , mainMenuVisible : Bool , recentMenuVisible : Bool , recentMenuTimer : Timer , mailboxName : String } init : (Msg -> msg) -> Model msg init mapMsg = { mapMsg = mapMsg , mainMenuVisible = False , recentMenuVisible = False , recentMenuTimer = Timer.empty , mailboxName = "" } {-| Resets layout state, used when navigating to a new page. -} reset : Model msg -> Model msg reset model = { model | mainMenuVisible = False , recentMenuVisible = False , recentMenuTimer = Timer.cancel model.recentMenuTimer , mailboxName = "" } type Msg…

FOSSBilling - 0.6.22 - apache2 静态化规则文件 - install
type: item
date: 2025-03-12T16:59:00+08:00
description: 问题：在 Hestiacp 的 nginx proxy + apache2 环境中，下载最新的 FOSSBilling 0.6.22 zip 版本文件，顺利安装。但安装后，无论访问 /admin 还是 news 等各个网址，都是显示 首页 的内容。尝试：在线安装成功后，网站根目录 .htaccess 的文件内容，关键的一条静态化规则是 RewriteRule ^(.*)$ index.php [QSA,L] ，但安装包里的，是 RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] 。用安装包里的 .htaccess 替代，即可。参考：https://forum.hestiacp.com/t/htaccess-with-rewriterule/12686https://hestiacp.com/docs/server-administration/web-templateshttps://forum.hestiacp.com/t/fossbilling-nginx-template-in-need/13224