tessera

邮件

可选。开了之后注册和忘记密码会不一样

不配也能跑。单人的家用机通常不用配,忘记密码可以用命令救。

配置

在后台设,或用环境变量:

配置
mail.host中继主机
mail.port默认 587
mail.tls连接怎么加密,见下面
mail.username、mail.password存了之后就封起来,后台不会再显示
mail.from发件地址。域名要是中继肯让你发的
mail.public_url邮件里每条链接的开头。填收件人的浏览器打得开的地址

host、from、public_url 三个都有值才算配好。只填一半会被拒绝,不会照样跑,因为那会画出一个「忘记密码」链接,然后在有人已经被锁在外面的时候才失败。

连接怎么加密

mail.tls 是其中之一:

  • auto,默认:port 465 从第一个字节就走 TLS,其他 port 走 STARTTLS。
  • starttls 或 implicit,强制用其中一种。
  • none,给同一台机器或同一个网段上的中继:本机的 postfix、中继容器、Mailpit。中继的地址不是私有、loopback 或 link-local 的话,它会拒绝发。

auto 的行为改过

旧版只有 587 走 STARTTLS,其他 port 全部从一开始就走 TLS。现在中继如果在 465 以外的 port 要求一开始就走 TLS,要明确设成 implicit。设错会得到一个看起来像证书问题的握手错误。

配置默认上限
reset_ttl_minutes3024 小时
registration_ttl_hours247 天

注册会变成两段

没配置的时候,注册当场建好账号并且登录。

没有 有 有人注册 有配置 mail? 当场建好账号直接登录 还没建任何东西等点链接

配置之后什么都还没创建。数据先放着,对方点了邮件里的链接才真的有账号。

注册 去收信 确认链接 点了链接 账号建好,直接登录 访客 tessera 邮箱

这样做是因为任何人都能填别人的地址。直接建账号的话,拿别人的地址去注册可以占走那个地址、占走一个用户名,还能在一个他读不到的邮箱后面用掉这台机器的存储空间。

前端要读 /capabilities

用 registration_requires_confirmation 决定要显示「去收信」还是「欢迎」,不要看状态码猜。读错的话会对一个还得去收信的人说欢迎。

会遇到的响应:

  • 用户名被占了。 用户名是用户自己挑的代号,所以直接告诉他。
  • 地址已经有账号了。 访客看到的跟成功一模一样,都是「去收信」,同时发一封信给那个地址说有人试过。说「这个地址已经有人用了」的话,注册表单就变成一个问「某人在不在这台机器上」的地方。
  • 同一个地址发太多次。 一小时三封,注册和重置各自计数。

忘记密码

要求重置密码的时候,地址存不存在得到的回答都一样,理由同上。没配置发信的话根本没有重置链接这件事,而且机器会讲明,所以前端可以直接不放那个选项,而不是给一个按了没用的东西。

本页内容