Mailing リストを Discourse へ移行する (mbox、Listserv、Google Groups など)

まあ、それはひどい話ですね!

Google は2015年2月以来、手を付けていないと思っていたのですが、私の認識が間違っていました。

どうやら2020年に全面的なリデザインが行われ、2021年にはロゴの微調整が施されたようです。

GMAIL と Discourse の API を使用して、メールスレッドを Discourse の投稿に変換しようと考えています。Google API を確認し、メールの取得には成功しましたが、いくつか質問があります。

  1. メールを「元のメッセージ」の Base64 エンコード値として生形式でダウンロードできますが、これは mbox 形式と同じですか、それとも異なりますか?
  2. Discourse の API を通じて投稿や添付ファイルを追加するサンプル例はありますか?

興味深いですね。Gmail API を使って Google グループのメールにアクセスすることは可能でしょうか、それとも単にグループ宛てに送信されたすべてのメールを含む Gmail アカウントをお持ちなのでしょうか。

すべてのメッセージを個別の *.eml ファイルとして保存することをお勧めします。もしメッセージ全体(メールヘッダーを含む)が base64 でエンコードされている場合は、保存前にメッセージをデコードする必要があります。その後、Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc) の手順に従ってください(Google グループに関する手順は除く)。インポートスクリプトが投稿、添付ファイル、その他多くのデータを自動的に処理してくれます。

「いいね!」 1

グループのメンバーなので、自分のメールでメールを取得できます。ヘッダーを含むメールメッセージ全体が、エンコードされた文字列の一部となります。

Discourse へのインポートについては、少なくともスレッド単位で、あなたのアプローチを試してみます。

「いいね!」 1

さて、その場合は Gmail API が不要かもしれません。Thunderbird などのメールクライアントを Gmail アカウントに接続し、個別のメールや mbox ファイルをエクスポートすれば十分でしょう…

さて、これがどのように機能するのか本当に知りたいですね。Google グループは NNTP をサポートしていないと認識していました。

「いいね!」 1

NNTP ではなく、REST API です。

「いいね!」 3

私のメールボックスの容量は 200GB を超えています。特定のグループ関連のメールを取得するには、Thunderbird でこれらすべてのメールをダウンロードする必要があるかもしれませんが、Thunderbird では Google グループのメールがすべて「受信トレイ」の下に表示されていません。また、一度に 200 件のメールしかダウンロードされません。そのため、メールを取得するのにどれくらい時間がかかるか見当がつきません。

Google グループのデータを取得して mbox 形式でエクスポートする別の方法はありませんか?

こんにちは、Gerhard Schlager 様

Google グループを Discourse へ移行する際、上記のドキュメントに記載されている手順をすべて実施しましたが、Discourse 上でカテゴリが作成されるだけで、データがインポートされません。お手数ですが、本件について迅速にご回答いただけますと幸いです。

私たちが知っていた唯一の方法は、もはや機能しません。データ取得のいかなる方法でもご存知であれば、それを実行すべきです。もし方法をご存知なら、その方法も使えなくなる前に、できるだけ早くデータを取得し始めるべきでしょう。

もしデータがメールボックスにある場合、Gmail API を使ってダウンロードできるかもしれません。ただし、これは難しい作業になります。コードを作成するには、Google グループのデータが含まれるメールボックスへのアクセス権を持つ開発者が必要になるからです。

それが必要なエンタープライズ顧客がいる場合を除き、cdck(つまり discourse.org)が近々そのようなコードを作成するとは考えにくいです。Marketplace で尋ねてみてください。私は少なくとも 2,000 ドル未満では検討しないでしょうし、過去に Google グループのインポートスクリプトで経験したフラストレーションを踏まえると、おそらく 5,000 ドルが必要になるでしょう。もちろん、より優れたスキルや忍耐力を持つ他の人がいるかもしれません。

考えられるアプローチの一つとして、Google Groups と Discourse アプリが利用可能であれば、Integromat を使用してコンバージョンを作成する方法があります。あるいは、HTTP 呼び出しを用いてそれぞれの REST API を直接呼び出す方法もあります。

Integromat はデータ移行用の統合システムです。非常に強力であり、ほとんどコーディングなしで多くの作業をこなすことができます。

Google Takeouthttps://takeout.google.com/)を試しました。Google Workspace グループのオーナーになり、Google グループの会話をダウンロードできるようになりました。インポートはまだ作業中です。

このアプローチにはいくつかの欠点があります。

  1. 増分更新が必要な場合、フルデータを再度ダウンロードする必要があります。
  2. 選択したグループのデータのみをダウンロードすることはできず、代わりにユーザーがオーナーまたはマネージャーの権限を持つすべてのグループのデータがダウンロードされます。
  3. デフォルトで無効になっているため、Google Workspace 管理者と協力して Takeout を有効にする必要があります。
「いいね!」 3

@Anjana_Raghavendra_P 様 - このアプローチで簡単なインポートはできましたでしょうか?

ありがとうございます!

はい、takeoutからmboxファイルがダウンロードでき、元の投稿に記載されている手順でインポートできました。

その後、DiscourseのPAASサービスを利用しているため、ファイルをDiscourseの技術チームに提供したところ、コンテンツをDiscourseプラットフォームにインポートすることができました。

「いいね!」 2

それは嬉しいです。ありがとうございます!

settings.yml の最初の行 data_dir: /shared/import/data をデフォルトから変更した際に、@sturdy2 と同じ問題が発生しました。

教訓: 変更しないでください。これは、メインマシン上のパスではなく、インポート Docker 内部のパスを参照しています。

インポートの再開について質問があります。

開発者ではありませんが、Topicbox Group Email というシステムから提供された 2 つの mbox ファイルを正常にインポートすることに成功しました。Digital Ocean にセットアップした Discourse の一時的なインスタンスにテストインポートを行いました。そして、上記の notes about setting the category.custom_fields[“import_id”] = “mydir” のおかげで、すでに作成していた既存のカテゴリに 2 つのサンプル mbox ファイルをインポートすることができました。

やった!しかし、さらに mbox ファイルをインポートしたい場合、FAQ 2.2 に記載されているすべてのコマンドを実行する必要がありますか?それには「すべて削除する」と記載されています。

「いいね!」 2

最初のテストインポートとして、2つの異なるカテゴリの「import_id」を正常に設定できました。うまくいきました! 2つのmboxファイルが、指定した既存のカテゴリにインポートされました。

最終的にこれを行う必要があるカテゴリは18個あります。Rubyについては何も知りません。各カテゴリのディレクトリ名を設定するファイルを作成して、Rubyコマンドラインインターフェイスで各行を手動で入力する必要がないようにすることはできますか?

「いいね!」 2

はい。Googleで「ruby for each」を検索し、カテゴリのいくつかを配列として作成してください。

「いいね!」 1

いいえ、その必要はありません。インポーターは増分インポートをサポートしています。次回の実行時に新しいデータのみをインポートします。最初からやり直したい場合を除き、2.2に記載されているコマンドを実行しないでください。

残念ながら、現時点ではそれは不可能です。既存のカテゴリにインポートしたい場合は、各カテゴリに import_id を割り当てる必要があります。

「いいね!」 2

素晴らしい功績を上げてくださった @gerhard さん、ありがとうございます!私は開発者ではありませんが、Topicbox というメーリングリストシステムからの移行を完了することができました。Discourse にインポートするために、Topicbox から mbox ファイルを取得することができました。試行錯誤した手順をブログ記事にまとめました。もしよろしければ、Discourse に移行したい他の Topicbox ユーザーのために、そのブログ記事へのリンクをここに貼り付けたいと思います。

「いいね!」 4