Misfin プロトコル (メール)
gemini://satch.xyz/misfin/
gemini://misfin.org/
Geminispace にやってきている人の中には
Web サイトの状況にうんざりしている人も少なくありまっせん。
これは Web だけではなく、E-mail に関しても同様に思われる状況です。
そこで、Gemini プロトコルと SSL 証明書を用いたメールプロトコルが
Misfin プロトコルです。
Capsule 運営者が Misfin サーバーを建てて実際に送受信してテストしていますが、
日本語・絵文字を送信した際に文字が欠けて受信する場合がある事を確認しています。
’そのため現状では日本語を使う場合は別の手段で連絡するのが無難そうです。
- - - 🎈 - - -
Misfin アカウントを得て使用する
例えばこちらの場所でアカウントを申し込んですぐに使用できます。
この 2 ヶ所で使われている Misfin サーバーは日本語処理も大丈夫そうですし、
後に日本語表示も選択可能になるでしょう。
gemini://woodpeckersnest.space
gemini://woodpeckersnest.space:1958
gemini://hashnix.club:
gemini://hashnix.club:1958
woodpeckersnest.space はドメイン名が長いですが、
日本からのレスポンスが明らかにはやいです。
証明書を得られるので、これを Gemini クライアントにインポートし、
:1958 の URL を証明書を使用している状態で参照して下さい。
メールボックスの表示が出てきたら準備環境です。
これで Web メールのように使用できます。
Misfin アドレスは misfin://username@example.com と表記します。
Lagrange 等のクライアントは misfin: のアドレスを参照で、
送信フォームを表示します。
VPS なんかのサーバーで Gemini サーバーを建ててる場合、
Misfin サーバーを建てる事も可能です。下に記載しています。
- - - 🎈 - - -
Misfin プロトコルの仕様
当初検討された Misfin(A) から改善されたが文字数制限がある Misfin(B) と、
それを元にサイズ制限の問題を改善した Misfin(C) が現在のプロトコル状況です。
ポート番号は 1958 が使われます。
公開する Misfin アドレスは misfin://mail@example.com という形式になります。
E-mail の mailto: に近い形式ですが、// が付きます。
メッセージは拡張された Gemtext 形式(Gemmail 形式)です。
Misfin(B)
メッセージが最大 2048 バイトとなっている仕様です。
SSL で接続した後、次のメッセージを送ります。
misfin://mail@example.com<SP>メッセージ<CR><LF>
サーバーは Gemini プロトコルのレスポンスを用いて返します。
正常では 20 受信者の fingerprint になり、30 で転送も可能です。
Misfin(C)
misfin://mail@example.com<TAB>サイズ<CR><LF>メッセージ
メッセージは 16384 バイトまで対応し、メッセージのサイズを含めます。
Misfin(B) では Misfin アドレスの後が <SP> になっていますが、
Misfin(C) では <TAB> に変更されています。これで区別できるようにし、
Misfin(C) に対応していないサーバーでは
59 Invalid Request が返ってくる事が期待できます。
- - - 🎈 - - -
gemmail 形式
text/gemini 形式で送られますが、
次の 3 項目が拡張されます。
ただし、拡張 3 項目はオプションであり、必須ではありません。
転送する場合、拡張された項目を維持して項目を追加する必要があります。
このメッセージでの改行は <CR><LF> 以外に <LF> のみも有効です。
Sender
行頭 < で Misfin アドレスと送信者を記載します。
< mail@example.net BALLOON | FU-SEN
メーリングリストなどの用途で複数行にする事ができます。
< balloon@ml.example.org balloon mailing list
< mail@example.net BALLOON | FU-SEN
Recipients
行頭 : で受信者を一覧します。
複数の Misfin アドレスを入れられます。
: one@example.com two@example.com three@example.com
Timestamp
行頭 @ ではじまり、ISO-8601 形式で日時を入れます。
日本標準時(UTC+9)は末尾 +09:00 を使用できます。
@ 2023-12-31T13:05:00Z
@ 2026-05-12T12:34:56+09:00
subject
メッセージの最初の行で 行頭 # の見出しではじまる場合、
クライアントは subject のように扱う事ができます。
- - - 🎈 - - -
Misfin クライアント
今のところ GUI 対応はなく、
端末・ターミナルでコマンドからの使用を想定した
CLI 対応のみのようです。
以下は Misfin(C) 対応です。
https://gitlab.com/cipres/misfin
https://gitlab.com/clseibold/misfinmail
https://tildegit.org/alexlehm/misfin-shell
gemini://satch.xyz/skylab/
Misfin(C) 非対応は次があります。
https://codeberg.org/mk270/misfin-submit
https://git.sr.ht/~lem/misfin
Lagrange も misfin:// に対応していて、送信が可能ですが、
受信は対応していません。
- - - 🎈 - - -
Misfin サーバー
https://git.sr.ht/~nixgoat/estampa
https://gitlab.com/cipres/misfin
https://gitlab.com/clseibold/misfin-server
https://tildegit.org/alexlehm/vertx-misfin-server
cipres/misfin と clseibold/misfin-server は
Gemini クライアントで参照できるフロントエンドがあり、
Web メールのように使用できます。
misfin (cipres/misfin)
https://gitlab.com/cipres/misfin
https://gitlab.com/cipres/misfin/-/blob/master/docs/index.md
おすすめは cipres さんによる misfin で、
fusen.nya.je の Misfin サーバーも現在こちらを採用しています。
アカウントの登録をして他の人が使えるようにできます。
(もちろん登録不可にも設定できます。fusen.nya.je も登録不可です)
また日本語も問題なく送受できているように見えます。
AppImage がダウンロードできるので、インストールは楽でしょう。
起動して FUSE が必要と表示される場合、
ライブラリ以外に fise 本体もインストールして下さい。
その中にある fusemount が使用されています。
https://gitlab.com/cipres/misfin/-/merge_requests/2
言語サポートがあるので日本語の翻訳を行い Pull Request してマージされています。
アカウント提供しているサーバーはこの Misfin サーバーを用いているので、
そのうち日本語で表示できるようになるでしょう。
おかしい翻訳になっているところがありましたら教えていただけると幸いです。
https://gitlab.com/cipres/misfin/-/work_items/33
misfin で公開する場合、公開するホスト名とサーバーによっては
INFO:misfin:OS error: [Errno 99] Cannot assign requested address
を表示して起動できません。これを回避するために
/etc/hosts でローカル IP アドレス (127.0.0.1)や
サーバーのプライベート IP アドレス(10.●.●.●)を割り当てます。
ただしこれだと外部からの応答をしないので、リバースプロキシが必要です。
https://github.com/alongL/tcprelay
自分の Web サーバーは Caddy を使っていて、Caddy は SSL を処理してしまうので、
tcprelay を導入し TCP トンネルによって IP アドレス・ポート番号を変えて
misfin サーバーへ接続するようにしています。
misfin サーバー側は misfin server-init で生成される misfind.toml で
ポート番号を変更可能です。
misfin-server
https://gitlab.com/clseibold/misfin-server
misfin-server は Go 言語なので、Go 言語をインストールすれば、
あとはコマンド 1 行で実行ファイルを生成できます。
releases は 2023 年が最新になっているので非推奨です。
https://gitlab.com/clseibold/misfin-server/-/work_items/3
cipres/misfin のサーバーからこの misfin-server へ
日本語や絵文字を含むメッセージを送ると、本文の一部がなくなって
gembox に入っている状態になっているようです。
misfin-server 側で issues を入れています。
この問題を回避して、受信したメールは日本語が処理できるように
fusen.nya.je はサーバーを変更しました。
もし使用する場合は英語限定とか記載しておくと良いでしょう。
- - - 🎈 - - -
Q&A
暗号化されていますか? 安全ですか?
Gemini プロトコルを継承して SSL 証明書必須になっています。
SSL で暗号化されると共にアカウント毎で証明書が発行されて、
これ自体がパスワード代わりの認証になっています。
添付ファイルはできますか?
Misfin プロトコルではテキストファイルのみで、
ファイル転送が考慮されていません。
例えば公開サーバーやクラウドなどを用いて URL を含む事が期待されています。
また、ファイル転送目的の Titan プロトコルが別途存在しているのもあります。
文字化けしますか?
仕様上は文字コード UTF-8 を期待しているので、日本語は使用可能です。
ただし、現状一部のサーバーで本文の一部が欠けてしまうため、
これをきっかけとした文字化けは発生している Misfin サーバーが存在します。
ネームサーバーの MX レコードや TXT レコードを設定する必要はありますか?
E-mail を使用する際に用いる受信メールサーバーの MX レコードと、
SPF などを提供する TXT レコードは
今のところ Misfin プロトコルでは必要ありません。
A・AAAA レコードまたは CNAME レコードの設定で使用できます。
実際 fusen.nya.je の元になる nya.je は MX レコードを提供していません。
- - - 🎈 - - -
🎈 fusen.nya.je
- - - 🎈 - - -
😺 Powered by nya.je