About
記憶體自述
直到一切都消失不见,才发现曾经近在眼前。
无法阻止,也无法释怀。
唯有记录,
在我身边。
其餘資訊
直到一切都消失不见,才发现曾经近在眼前。
无法阻止,也无法释怀。
唯有记录,
在我身边。
其餘資訊

从白嫖 Yandex 域名邮箱到 FastMail 付费托管邮箱,一直在找适合自己的域名邮件服务,传统的自建方式模块过于分散,上手难度较大,后在 NickCao 老师推荐下尝试了 Maddy。Maddy 目前只提供了命令行运行的 Linux 服务端,WebUI 或者本地客户端需自行选择,仅需手动配置一下 POP3/IMAP(收) 和 SMTP(发) 服务端地址即可。我目前使用的是 Thunderbird (电脑)和 K-9 Mail(Android)。
下载:Github | 上游服务器 文档:maddy.email
部分 VPS 提供商会为了防止广告等原因会禁用 25 号 TCP 端口的 SMTP 端口,但多数情况下(比如 Google Cloud 就不允许)也可以开工单说明邮箱用途和性质,对于个人性质的域名邮箱来说一般不会有太多限制。如果机器本身或者 VPS 提供商还配有防火墙,请打开对应端口(25,465,993)。
使用邮件服务需要关闭 CDN 代理,故存在机器 IP 暴露风险,在选择机器时候注意避开其它敏感数据服务。
可以从 docker 拉取,但这里以 binary + 自己配置方式为主。
一般放在 /etc/maddy/maddy.conf
|
|
如果是由 Maddy 自身直接处理 TLS 则不需要该项配置
|
|
maddy 的 systemd service 正常启动后可以使用:
|
|
这里以 Cloudflare 托管 DNS 服务为例,其它应该也能找到对应 DNS 设置面板。使用了子域名 mail.example.com 作为邮件服务专用。
| 类型 | 名称 | 内容 | 代理状态 |
|---|---|---|---|
| A | 服务器实际 IPv4 地址 | 仅限 DNS | |
| AAAA | 服务器实际 IPv6 地址(如果有) | 仅限 DNS | |
| MX | @ | mail.example.com | 仅限 DNS |
| TXT | v=spf1 mx ~all | 仅限 DNS |
spf 值这里推荐使用仅允许 mx,若有其他来源也可以添加。
为了避免拒收,进一步提高邮件投递率,需要配置 rDNS 以便收信方邮件服务商溯源。
以 Vultr 为例,其 Reverse DNS 页面在 机器详情 > Settings > IPv4 / IPv6 选项卡内,在 Reverse DNS 中填入自己的邮件服务域名即可,如 mail.example.com,如果存在多条公共 IP 地址,则都需要填写。
local_domains 后面加上新的域名
|
|
|
|
将新域名的 dkim 密钥内容也添加到 DNS 的 TXT 记录中
dmarc 和 rDNS 同理
客户端有诸多选择,不变的是手动设置方式:
mail.example.com,连接方式均为 SSL/TLS,用户名和密码均为先前所设置,认证方式均为 Normal Password。993,465![]()
可以写一些稍微正经的内容,发送到 https://www.mail-tester.com 内所给的邮件地址,来测试自己的邮箱评分。
虽然说自建邮箱可能还是存在邮件投递到垃圾箱里的问题,但有了 Maddy 后搭建一个自己的域名邮箱确实变成了相对简单的工作。

Linux 下的用户环境变量配置常显得十分琐碎,如 .xprofile、.pam_environment 亦或是各种 shell 配置文件。
session required pam_env.so user_readenv=1 以恢复读取该文件中环境变量的行为,并非长久之计。参考了依云的 Linux 的环境变量怎么设 一文,遂选用 systemd 的 environment.d 作为用户环境变量配置方案。
配置文件目录如下:
其写法如下:
$HOME, $PATH 等原有的环境变量,如:PATH=~/.local/bin:$PATH![]()
由于我是 fish + tmux 用户,需要自己导出一下生成的环境变量文件到命令行。
~/.config/fish/conf.d/env_init.fish
|
|
![]()
在 Plasma 5.21 和 Systemd 246 以及后续更新版本中,可以使用 systemd 来启动和管理 KDE 服务。
其中一个好处在于:其环境变量可直接继承自 environment.d 而无需再手动设置 systemd-environment-d-generator 生成的环境变量。
启用后重启生效。
|
|
使用 Systemd 进行管理后可利用其 CGroups 限制资源分配和使用等诸多特性(或许可以给你的应用加上 cgproxy?),进一步细化和统一用户配置方案,再次感谢开发者为此做出的努力。
|
|

2019 年 1 月的时候知道了这个发行版,当时 @NixOS_zh 群刚建立(后来这群凉了),就开虚拟机玩了一下,时隔多年发现又有不少人对其颇感兴趣,便决定重新写一下安装相关的教程。
本文以 Arch Linux 作为宿主机,大体步骤与 Arch Wiki 相近
一般情况下需要进入到 BIOS 对应页面打开虚拟化支持,常见对应设置项如下:
开启虚拟化后在宿主机上用命令行检测(比如我的是 AMD 的处理器):
|
|
内核支持检测,如果使用的是 ArchLinux 提供的官方内核,即 core/linux 则已经包含了对应的 kvm 模块(kvm、kvm_amd或kvm_intel):
|
|
查看这些内核模块是否已自动加载:
|
|
如果没有自动加载则手动:
|
|
检测 VIRTIO 模块是否可用:
|
|
准虚拟化设备列表(主要确保以下几个模块有对应开启,若未开启则手动用 modprobe 命令开启):
|
|
Arch Wiki: PCI 直通
如果需要启用 PCI 直通功能则需要在内核参数中添加 intel_iommu=on 或者 amd_iommu=on,同时可以在其后添加 iommu=pt,以防前者失效,以下命令检测是否开启成功,由于本人所用 AMD Ryzen 5 4600U 支持方面还有些问题,故此不做展示。
|
|
|
|
为了避免每次都需要询问 root 密码,建议将自己的用户添加到 libvirt 组:
|
|
编辑服务端配置文件 /etc/libvirt/libvirtd.conf,取消如下几行的注释:
|
|
同时添加 ipv4 的内核转发参数:
|
|
设置开机启动和运行服务。
|
|
![]()
建议重启以应用之前的设置,此时在 Virtual Machine Manager 的界面应该可以看到一些已经连接上的服务端,如果没有则在菜单栏自行添加,推荐初次连接系统级服务来创建虚拟机。
![]()
将下载到的镜像文件所在目录创建为文件系统池,随后在其中选择镜像文件进行加载。
![]()
设置合适的系统资源和网络配置等(初次使用推荐用 NAT 模式较为简单,Bridge 模式之后会提到如何配置)。
![]()
如果你的宿主机支持的话,推荐使用 UEFI 模式启动(由 extra/edk2-ovmf 这个提供,中途安装的话要重启 libvirtd 服务以生效)。
![]()
调整镜像到启动优先级最高,最后启动工具栏上的 Begin Install 就可以安装了。
![]()
![]()
由于我下载的是最小化镜像,所以并没有图形界面,如果下载的是带 Gnome 或者 KDE 的镜像的话应该可以看到界面了,稍后我也会以最小化镜像的方式开始安装图形界面。
查看当前块设备状态,可以看到我们之前分配的盘 vda 还未被挂载
![]()
建议使用 GPT 分区表,按照可以按照图中对 boot、swap(可选)和 root 分区进行创建,注意下方 Type 选择对应的分区类型,Write 写入后退出。
|
|
![]()
格式化分区,可以看到格式化后效果如下:
|
|
![]()
|
|
挂载后可以检查是否挂载成功,不要重复挂载。
![]()
由命令生成默认的配置文件:
|
|
可以看到已经有了 systemd-boot 作为 bootloader 引导操作系统。其他一些基本配置,按照自己的需求取消注释并修改内容即可,注意创建用户 users.users.<YourUserName> 及其对应的用户组,完成后 Ctrl + O 保存。
![]()
如果网络情况欠佳的话可以设置 http_proxy 或者更换更新频道到国内镜像站:
|
|
使用 sudo nixos-install 进行安装并设置 root 密码,完成之后取消挂载并重启(记得更改启动项顺序到虚拟硬盘)。
|
|
![]()
重启登陆后可以查看引导状态:
|
|
![]()
/etc/nixos/configuration.conf 配置文件参考如下
|
|
修改配置文件之后需要使用命令重建并推荐重启生效:
|
|
日常使用的时候理论上可以多套配置(profile)兼容和切换,当配置过多的时候可用 nix-collect-garbage -d 来完成,详见文档。
在用户层面安装软件包使用 nix 包管理器进行搜索和安装:
|
|
更多用法可见官方文档
![]()

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。通常情况下本地的解析请求会发送到离你最近的 DNS 服务器,它可能是你的无线路由器、宿舍楼梯下的服务器或者运营商的地区性服务器等,但由于各种原因导致解析效果不理想,延迟高等问题,这时可以考虑换一个网络质量好的域名解析服务,错峰出行,减少拥堵。
SmartDNS 集成了多种出栈请求协议,包括常用的 UDP 和较为现代的 DNS-Over-Https 等,能够在给定的规则列表中挑选出一个延迟最低的域名解析服务,并向其发送请求。同时其内部也提供 DNS 缓存,如果缓存能够命中则直接从本地缓存中返回对应 IP 地址,如未能查找到则继续向上级 DNS 服务传播请求。
![]()
推荐项目:dnsmasq-china-list
作者肥猫在其项目中提供了几个较为常用的匹配规则列表,对于非 Arch Linux 用户而言可以把项目克隆到本地然后构建对应的配置文件,而 Arch 用户可以从 CN 源 里安装 smartdns-china-list-git 以获取自动更新。
生成对应的配置文件操作如下,具体参考,可见其生成形式为 nameserver /<域名>/<组名>,后面的组名就是对应我们后来需要的匹配规则而制定的。
|
|
默认的配置文件中有很多不常用的项目,作为自己的配置文件一般精简到自己需要的功能配置即可。
|
|
更多 DNS 服务地址:dnscrypt.info
如果有多个分组需求,可以自定义规则配置文件,服务配置后面再添加 -group [组名]。
被 -exclude-default-group 标记为排除在默认组之内的服务需至少在一个组才可能被访问到。
|
|
默认在后台运行,推荐使用自带的 systemd service 来进行管理,如果 /ect/resolv.conf 没有被更改成监听本地的话可以检查一下文件是否有特殊标志位(lsattr),手动修改即可(chattr )。
|
|

常用于跨平台集群管理,提供多设备认证、远程操作和反向代理。
官方网站:goteleport.com
有以下几种方式,单个可执行文件内已经包含 web 管理平台、服务端和客户端功能。(Windows 目前仅支持客户端)
|
|
可由如下命令启用服务端进行测试,要点如下:
https_keypairs 也仍然需要在监听的 web 地址前面加上 https://,或者使用 --insecure-no-tls 命令行参数对 http:// 进行访问。/var/lib/teleport 仅限 root 权限访问,则需要调整到对应的权限再启动命令。web_listen_addr 所指示的地址发生。
|
|
tctl 是 teleport 的一个命令行管理工具,在 teleport 服务运行时,可以由它对用户、节点、密令等进行动态管理。
|
|
添加好用户后可访问提示的地址,输入账户密码,用手机两步验证器扫码后填入验证码即可初始化成功。配置文件中支持除 otp 外还支持 github auth 认证等方式。
![]()
常用的两步验客户端
除了服务端平台自己可以作为节点外,还可以添加其他的子节点构成集群,大体上分为两类:
roles 内需要含有 proxy)。静态子节点配置文件需要对应服务端里的地址和 <nodes_auth_token>,随后直接在节点上运行即可。
|
|
动态子节点需要在服务端上进行添加,由以下命令生成一个临时的 token 以添加子节点。
|
|
得到形如下方的命令:
|
|
添加成功后可以在 web 界面内看到所有的节点。
![]()
安装包内自带一个名为 tsh 的可执行文件,用于命令行认证和登陆
|
|
登陆后可以使用 ls 命令查看已添加的节点
|
|
使用 ssh 来登陆节点终端
|
|
TBC…