自托管服务器

共18篇文章。

别了,SMTP mTLS

• Security

最近在查看一封邮件的原始信头时,其中一段Received:记录引起了我的注意:

1
2
3
4
5
6
7
8
Received: from mx2.freebsd.org (mx2.freebsd.org [96.47.72.81])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange x25519 server-signature RSA-PSS (4096 bits)
	 server-digest SHA256
	 client-signature RSA-PSS (4096 bits) client-digest SHA256)
	(Client CN "mx2.freebsd.org", Issuer "YR1" (not verified))
	by anubis.delphij.net (Postfix) with ESMTPS id B904024CDA
	for <delphij@delphij.net>; Wed, 14 Oct 2026 12:46:42 -0700 (PDT)

注意其中的(Client CN "mx2.freebsd.org", Issuer "YR1" (not verified))。这个(not verified)对我来说有些意外,翻看我自己邮件服务器上的日志发现,对于来自mx2.freebsd.org和其他一些邮件服务的投递,都记录了类似的状态:

1
2
3
4
5
Oct 14 12:46:42 anubis postfix/smtpd[90904]: Untrusted TLS connection
  established from mx2.freebsd.org[96.47.72.81]: TLSv1.3 with cipher
  TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519
  server-signature RSA-PSS (4096 bits) server-digest SHA256
  client-signature RSA-PSS (4096 bits) client-digest SHA256
阅读全文… ( 本文约2921字,阅读大致需要6分钟 )

再见, sirius (2010-2025)

• Tribute

delphij.net搬到美国之后,一直是在大河的FMT-1的sirius.delphij.net上运行的。这台机器是iXsystems组装,于2010年5月20日上线的,采用Intel Xeon L5630处理器,Supermicro X8STi主板,当时配了24GB内存,4块1.5TB硬盘,后将硬盘替换成了3块2TB + 1个SSD。

阅读全文… ( 本文约339字,阅读大致需要1分钟 )

购买二手硬件的一些人生经验

• Hardware

以往我是不直接在eBay上购买二手硬件(这不包括美国比较常见的「翻新refurbished」硬件,这类卖家往往是比较专业的回收处理机构)的,原因是购买此类硬件多少有点像拆盲盒:二手硬件的质量往往缺乏统一且一致的标准,并且通常只提供较短的退货窗口。

不过上回书说到我收了一台二手的Dell R640服务器,既然选择了消费降级索性一降到底试试看买二手内存和存储。

阅读全文… ( 本文约1945字,阅读大致需要4分钟 )

Debrand Dell Vxrail E560

• Hardware

最近从张师傅那里获得了一台来自政府换新时拍卖的二手Dell VxRail E560,这是Dell/EMC「超融合」概念的机器,实际硬件和Dell PowerEdge R640是一样的。

由于我并不需要使用VxRail E560系列增加的一系列VMware功能,将其变回PowerEdge R640可以让管理员获得更多的对于固件的控制。这里记录一下过程。

阅读全文… ( 本文约376字,阅读大致需要1分钟 )

postfix 的 SNI 支持与 gmail 的兼容问题

• Networking

今天在家里的票务系统上修改某个票的状态(该操作会触发一封邮件)时,我正好另一个窗口开着邮件服务器的日志,观察到一些奇怪的现象:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Mar 19 20:17:12 XXXXXX postfix/smtp[XXXXX]: certificate verification failed for 
  gmail-smtp-in.l.google.com[2607:f8b0:4023:1c03::1a]:25: self-signed certificate
Mar 19 20:17:12 XXXXXX postfix/smtp[XXXXX]: Untrusted TLS connection established
  to gmail-smtp-in.l.google.com[2607:f8b0:4023:1c03::1a]:25: TLSv1.3 with cipher
  TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS
  (2048 bits) server-digest SHA256
Mar 19 20:17:12 XXXXXX postfix/smtp[XXXXX]: XXXXXXXXXX: Server certificate not verified
Mar 19 20:17:13 XXXXXX postfix/smtp[XXXXX]: certificate verification failed for
  gmail-smtp-in.l.google.com[142.250.142.26]:25: self-signed certificate
Mar 19 20:17:13 XXXXXX postfix/smtp[XXXXX]: Untrusted TLS connection established
  to gmail-smtp-in.l.google.com[142.250.142.26]:25: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384
  (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
Mar 19 20:17:13 XXXXXX postfix/smtp[XXXXX]: XXXXXXXXXX: Server certificate not verified
Mar 19 20:17:13 XXXXXX postfix/smtp[XXXXX]: certificate verification failed for
  alt1.gmail-smtp-in.l.google.com[142.250.115.27]:25: self-signed certificate
Mar 19 20:17:13 XXXXXX postfix/smtp[XXXXX]: Untrusted TLS connection established
  to alt1.gmail-smtp-in.l.google.com[142.250.115.27]:25: TLSv1.3 with cipher
  TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS
  (2048 bits) server-digest SHA256
Mar 19 20:17:13 XXXXXX postfix/smtp[XXXXX]: XXXXXXXXXX: Server certificate not verified
Mar 19 20:17:14 XXXXXX postfix/smtp[XXXXX]: certificate verification failed for
  alt1.gmail-smtp-in.l.google.com[2607:f8b0:4023:1004::1b]:25: self-signed certificate
Mar 19 20:17:14 XXXXXX postfix/smtp[XXXXX]: Untrusted TLS connection established to
  alt1.gmail-smtp-in.l.google.com[2607:f8b0:4023:1004::1b]:25: TLSv1.3 with cipher
  TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS
  (2048 bits) server-digest SHA256
Mar 19 20:17:14 XXXXXX postfix/smtp[XXXXX]: XXXXXXXXXX: Server certificate not verified
Mar 19 20:17:14 XXXXXX postfix/smtp[XXXXX]: Verified TLS connection established to
  alt2.gmail-smtp-in.l.google.com[2607:f8b0:4003:c15::1b]:25: TLSv1.3 with cipher
  TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA
  (prime256v1) server-digest SHA256
Mar 19 20:17:15 XXXXXX postfix/smtp[XXXXX]: XXXXXXXXXX: to=<XXXXXXX@gmail.com>,
  relay=alt2.gmail-smtp-in.l.google.com[2607:f8b0:4003:c15::1b]:25, delay=2.8,
  delays=0.06/0.1/2/0.66, dsn=2.0.0, status=sent (250 2.0.0 OK  XXXXXXXXXX
  XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XX - gsmtp)
阅读全文… ( 本文约2240字,阅读大致需要5分钟 )

用 rspamd 来实现反垃圾邮件

• Security

我搞邮件服务器有二十多年了,最开始是在学校做社团的邮件服务,后来有几年和老房东在某领先网络媒体公司做了多年针对公众提供的邮件服务,因此前同事群的名字也是「老邮条」。我个人的域名是2002年注册的,自从那时起我就一直在自己运行邮件服务。

在过去二十年中的大部分时间,我采用的是amavisd-new,与直接使用SpamAssassin相比,它还增加了病毒扫描等一系列功能和milter接口,这让它与MTA更容易集成。

阅读全文… ( 本文约1290字,阅读大致需要3分钟 )

采用 Ed25519 的 DKIM 签名

• Security

Ed25519是一种高性能的公钥签名系统。和RSA相比,同等强度的Ed25519的密钥长度要比RSA短很多,此外,软件实现的Ed25519的验证速度也比同等强度的RSA快很多。

尽管早在2018年RFC 8463 Section 5就已经将RFC 6376 Section 3.3修正为要求验证者必须支持Ed25519验证,然而时至今日主要的邮件服务提供商中,包括Google的Gmail和Microsoft的Outlook.com以及Apple的iCloud都还不支持验证Ed25519 DKIM签名。ProtonMail支持Ed25519的DKIM签名,但它并不使用Ed25519签名向外发出的邮件。

阅读全文… ( 本文约1350字,阅读大致需要3分钟 )

线上重做 FreeBSD GPT 引导分区

• Kernel

记一笔。

我现在这台服务器已经用了蛮久(超过10年)了,刚刚安装的时候还是FreeBSD 8.1 RC,一路升级到FreeBSD 12.2。前段时间因为工作比较忙,一直没顾上把它升级到FreeBSD 13.0,今天总算是找了点时间来做升级。

总体上这次升级比预想的还要平稳一些,由于FreeBSD 13.0和12.2的内核接口变化不大,因此我也没按照正规的做法,即升级内核、重启第一次、etcupdate、installworld,重启第二次、delete-old/delete-old-libs,而是在installkernel之后直接做了etcupdate和installworld。

阅读全文… ( 本文约2666字,阅读大致需要6分钟 )

dovecot的全文搜索

• Distributed Computing

试了一下这个基于CLucene的全文搜索,似乎还不错。这里记一下过程。

首先是在Dovecot安装Lucene插件,用FreeBSD port来安装的话,只需make config,选择LUCENE然后portmaster dovecot即可。

阅读全文… ( 本文约449字,阅读大致需要1分钟 )

总算找到时间把邮件系统迁移给做了

• Data Management

📜 历史文件已不具备现实意义

本文记录的是2011年邮件系统迁移时的架构方案,部分组件与做法已经过时。目前的系统不再使用amavisd-new与amavisd-milter,反垃圾邮件过滤已迁移至rspamd,并启用了DKIM签名与DANE TLSA等现代邮件安全机制。

之前用的邮件系统是基于Postfix、Cyrus IMAPd、amavisd-new等软件在2006年搭建的,跑了5年多,作为不折腾会死星人,对这套系统一直有相当多的不满意,举例来说:

  • Cyrus IMAPd支持foo+box@domain.tld,也就是如果foo用户的邮箱中存在box这个子目录时直接投递到那个子目录很有问题;
  • Cyrus IMAPd采用的是自己的邮箱格式。支持这种格式的只此一家;我虽然不是Maildir的fans,但Maildir是一种事实标准,而且处理起来工具也要多得多;
  • amavisd-new和Postfix的集成原先是采取双MTA的方式进行的,这种做法会导致至少多一倍的磁盘I/O(好处是在系统过载的时候不影响进信),并且由于多了一个环节有可能引入更多的不确定性1;
阅读全文… ( 本文约901字,阅读大致需要2分钟 )