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 決定要顯示「去收信」還是「歡迎」,不要看狀態碼猜。讀錯的話會對一個還得去收信的人說歡迎。

會遇到的回應:

  • 名稱被用了。 名稱是使用者自己挑的代號,所以直接告訴他。
  • 地址已經有帳號了。 訪客看到的跟成功一模一樣,都是「去收信」,同時寄一封信給那個地址說有人試過。說「這個地址已經有人用了」的話,註冊表單就變成一個問「某人在不在這台機器上」的地方。
  • 同一個地址寄太多次。 一小時三封,註冊和重設各自計數。

忘記密碼

要求重設密碼的時候,地址存不存在得到的回答都一樣,理由同上。沒設定寄信的話根本沒有重設連結這件事,而且機器會講明,所以前端可以直接不放那個選項,而不是給一個按了沒用的東西。

本頁內容