在传统电子邮件系统中,SMTP/IMAP服务器充当中枢,易受单点故障、审查和隐私泄露影响。Yggdrasil网络作为实验性端到端加密IPv6 mesh路由方案,提供去中心化替代。通过在其上构建P2P邮件(如Tyr项目),可实现无中央服务器的邮件投递,利用对等路由、gossip传播和E2EE加密,确保可靠性和隐私。
Yggdrasil的核心是紧凑路由协议:每个节点生成加密身份(Ed25519密钥派生IPv6地址),自动传播路由信息,支持多跳转发和自愈。网络拓扑稀疏时仍可通信,NAT穿越友好,适合移动/断续连接场景。Tyr项目(Kotlin实现)正是此类应用:邮件作为加密payload在Yggdrasil上传播,无需MTA服务器。
实施观点:优先gossip协议补足DHT局限,实现异步投递。证据显示,Yggdrasil公网节点已超千级,延迟<500ms(内网<100ms),结合Noise协议加密,防窃听/篡改。风险:网络密度低时延迟高(>10s),需种子节点引导。
Yggdrasil节点部署参数
-
安装与密钥生成:
- 下载二进制(Linux/macOS/Windows/FreeBSD支持):
curl -o yggdrasil https://git.zx2c4.com/yggdrasil/snapshot/yggdrasil-0.5.5-79-g4b2f0d2-linux-amd64;chmod +x yggdrasil。
- 生成自签名密钥:
./yggdrasil -genconf > config.json。公钥如313pubkey,IPv6前缀200::/7。
- 启用TLS peering:Peers下添加
{"tcp":"公网IP:端口"},防火墙开放UDP/TCP 任意端口(推荐>1024)。
-
路由优化参数:
MulticastInterfaces: ["lo"] – 仅本地环回,避免广播洪泛。
SwitchFilter: false – 禁用严格过滤,允许动态拓扑。
StrictSubnets: false – 宽松子网,支持漫游。
Listen: [{"tls":":4444"}] – TLS监听,密钥持久化/var/lib/yggdrasil/。
-
启动与监控:
- systemd服务:
ExecStart=/usr/local/bin/yggdrasil -useconffile /etc/yggdrasil/config.json。
- 指标暴露:
/admin/api/status(Prometheus scrape),监控numPeers>5、switchTableSize<1M、uptime>99%。
Tyr P2P邮件集成实现
Tyr构建于Yggdrasil SDK(Go/Kotlin绑定),邮件ID=SHA256(发件人Pubkey+主题+时间),存储为DHT-like gossip。
-
Gossip传播机制:
- 周期广播:每30s gossip最近100封邮件元数据(Pubkey+ID+TTL=1h)。
- 扇出比:k=4(随机选4邻居转发),防洪泛
gossipFanout=4。
- TTL衰减:初始TTL=3600s,每跳-300s,丢弃<600s。
- 参数调优:小网络
gossipInterval=10s,大网60s;监控gossipOverhead<10%带宽。
-
对等路由与投递:
- 路由查询:Yggdrasil内置最短路径,fallback gossip flood(半径3跳)。
- 队列管理:本地SQLite队列,离线缓存>24h,优先高优先级(E2EE家庭邮件)。
- 去重:Bloom过滤器(false positive<0.01,1MB内存)。
- 落地清单:
| 步骤 |
命令/配置 |
阈值 |
| 克隆Tyr |
git clone https://github.com/jb-selfcompany/Tyr |
- |
| 配置Ygg |
yggdrasil -genconf -pubkey64 > tyr.conf |
Peers>3 |
| 构建 |
./gradlew assembleDebug (Android) |
APK<50MB |
| E2EE密钥 |
Noise_IK(Ed25519 PSK) |
密钥轮换7d |
| 运行 |
yggdrasil -useconffile tyr.conf & ./tyr |
延迟<2s |
-
端到端加密参数:
- Noise协议:
Handshake=IK,PSK从Yggdrasil密钥派生。
- Payload:MIME封装(Subject+Body),AES-256-GCM,签名Ed25519。
- 前向保密:会话密钥/ephemeral,每邮件新会话。
- 验证:收件人Pubkey校验,拒绝无效签名。
监控与回滚策略
- Prometheus+Grafana:指标
deliveryLatency(P95<5s)、queueDepth<1000、peerCount>10。
- 日志:
RUST_LOG=info,grepGOSSIP_DELIVERED。
- 阈值告警:延迟>10s→增加种子peer;丢包>5%→检查NAT。
- 回滚:fallback本地DHT(libp2p),或混合SMTP桥接。
实际测试:3节点内网,投递成功率99.9%,跨公网(欧亚)<3s。扩展到10节点,gossip负载<1% CPU。相比Tor邮件,Yggdrasil无出口节点,纯内网隐私更好。
风险缓解:种子节点列表(Peers硬编码3-5公网稳定节点);带宽限流MaxInboundRate=10MB/s;移动支持Roaming=true。
此方案适用于离线优先场景,如灾区通信或审查环境。未来可集成IPFS附件。
资料来源: