mailman2에서 discourse로 마이그레이션하는 방법

안녕하세요,

mailman2discourse는 config.pck 파일에서 발견되는 mailman2 구성을 discourse 카테고리로 가져오기 위한 명령줄 도구로 PyPI에서 사용할 수 있습니다. 메일링 리스트의 각 멤버에 대해 사용자가 생성되며, 카테고리에 새 메시지가 게시되면 해당 사용자에게 알림이 전송됩니다(해당 사용자의 mailman2 옵션이 메일을 전혀 받지 않는 것으로 설정된 경우 제외). 비공개 메일링 리스트의 관리자는 discourse 그룹의 멤버가 되며, 이 그룹은 모든 새 게시물을 검토할 수 있습니다. 메일링 리스트의 아카이브가 공개되지 않은 경우, discourse 카테고리는 mailman2 멤버십 목록을 모방하는 discourse 그룹에게만 표시됩니다.

설치

$ pipenv install mailman2discourse

사용법

요구 사항:

  • User Level이 All Users인 API 키(/admin/api/keys/new에서 발급)
  • 관리자 사용자(예: admin)
  • 다음을 포함하는 mbox 가져오기 컨테이너
    • DISCOURSE_MAX_ADMIN_API_REQS_PER_KEY_PER_MINUTE: 60000000
    • DISCOURSE_MAX_REQS_PER_IP_MODE: none
    • “templates/web.ratelimited.template.yml” 파일 미포함
  • mailman2 메일링 리스트의 config.pck 파일

listname@example.com mailman2 메일링 리스트를 가져오려면:

    $ mailman2discourse --url http://172.19.0.2 --api-key APIKEY --api-user admin \
                      --mailman-config config.pck \
                      --list listname --domain example.com

가져오기는 멱등적(idempotent)이므로, 중단되었거나 config.pck 파일이 업데이트된 경우와 같이 여러 번 실행해도 안전합니다.

이제 아카이브의 내용을 가져올 수 있습니다.

아카이브 가져오기

메일링 리스트 아카이브는 mbox
가져오기 도구
를 사용하여 가져올 수 있습니다. .mbox 및 .mbox.gz 파일은 mailman2discourse가 생성한 카테고리 이름과 동일한 이름의 디렉터리에 배치해야 합니다.

버그 보고

문제를 보고하는 가장 좋은 곳은 이슈 트래커이지만, 이 주제에 게시해도 됩니다.

지난해 이 스크립트 개발을 시작했으며, 2021년 5월 Spip 메일링 리스트를 마이그레이션할 때 이를 테스트할 기회를 가졌습니다. 스크립트는 아직 매우 초기 단계이지만, 이제 충분히 사용 가능하다고 자신 있습니다.

아직 가져오기 과정에서 수작업으로 처리해야 할 단계가 많습니다. discourse import --mailman2 config.pck mbox-archives-directory처럼 “그저 작동하는” 도구를 가지면 좋겠습니다. 하지만 저는 이를 구현할 계획은 없습니다. 커스텀 셸 스크립트를 사용하는 데 만족하고 있으며, 이를 일반화하는 방법을 찾지 못하고 있습니다. 어쨌든 mailman2discourse에서 구현한 로직은 퍼즐에서 빠져 있던 한 조각이었으며, 그것이 존재하게 되어 기쁩니다 :slight_smile: