public inbox for [email protected]  
help / color / mirror / Atom feed
From: Célestin Matte <[email protected]>
To: [email protected]
Subject: [PATCH] pglister: Add example script to import from mailman
Date: Wed, 3 Nov 2021 20:15:08 +0100
Message-ID: <[email protected]> (raw)


-- 
Célestin Matte

Attachments:

  [text/x-patch] 0001-Add-example-script-to-import-from-mailman-tools-impo.patch (3.1K, 2-0001-Add-example-script-to-import-from-mailman-tools-impo.patch)
  download | inline diff:
From 40ffdea780c631c30ceff14ca18496ff4aeecb23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email protected]>
Date: Wed, 3 Nov 2021 20:13:03 +0100
Subject: [PATCH] Add example script to import from mailman
 tools/import_from_mailman.sh

---
 tools/import_from_mailman.sh | 54 ++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 tools/import_from_mailman.sh

diff --git a/tools/import_from_mailman.sh b/tools/import_from_mailman.sh
new file mode 100755
index 0000000..c8a46ec
--- /dev/null
+++ b/tools/import_from_mailman.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+# Script to import subscribers and email archives from mailman to pglister.
+# Lists must already be created in pglister.
+# Here is where to find some options in mailman administrative interface for each list:
+# - Subscription policy:
+#     Privacy options -> "What steps are required for subscription?"
+# - Members view membership:
+#     Privacy options -> "Who can view subscription list?"
+# - Moderation level:
+#     Privacy options -> Sender filter -> "By default, should new list member postings be moderated?"
+
+ORIGIN="" # server hosting mailman
+TARGET="" # server hosting pglister
+PUBLIC_LISTS="" # space-separate list of public lists to import
+PRIVATE_LISTS="" # space-separate list of private lists to import
+DOMAIN="" # fqdn used for lists
+DJANGO_USER="list"
+PYTHON_VENV_PGLISTER="/srv/pglister/local/web/pglister/bin/python"
+PYTHON_VENV_PGARCHIVES="/srv/pgarchives/local/django/bin/python"
+PYTHON_VENV_PGARCHIVES_PRIVATE="/srv/pgarchives-private/local/django/bin/python"
+PGARCHIVES_PATH="/srv/pgarchives/local/"
+PGARCHIVES_PRIVATE_PATH="/srv/pgarchives-private/local/"
+PGLISTER_PATH="/srv/pglister/local/"
+
+function import_list() {
+    listname_full="$1"
+    listname=$(echo "$listname_full" | tr '[:upper:]' '[:lower:]')
+    echo "Loading subscribers from $listname_full"
+    ssh $ORIGIN /var/lib/mailman/bin/list_members -f -n -o "$listname"_nomail.txt "$listname_full"
+    ssh $ORIGIN /var/lib/mailman/bin/list_members -f -o "$listname"_mail.txt "$listname_full"
+    scp $ORIGIN:"$listname"_nomail.txt $TARGET:lists/
+    scp $ORIGIN:"$listname"_mail.txt $TARGET:lists/
+    ssh $TARGET sudo -u $DJANGO_USER $PYTHON_VENV_PGLISTER $PGLISTER_PATH/bin/load_subscribers.py -l "$listname"@$DOMAIN -a -f lists/"$listname"_nomail.txt --nomail
+    ssh $TARGET sudo -u $DJANGO_USER $PYTHON_VENV_PGLISTER $PGLISTER_PATH/bin/load_subscribers.py -l "$listname"@$DOMAIN -a -f lists/"$listname"_mail.txt
+    echo "Loading archives from $listname_full"
+    scp $ORIGIN:/var/lib/mailman/archives/private/"$listname".mbox/"$listname".mbox $TARGET:lists/
+    if [ "$2" == "public" ]
+    then
+        ssh $TARGET sudo -u $DJANGO_USER $PYTHON_VENV_PGARCHIVES $PGARCHIVES_PATH/loader/load_message.py -m lists/"$listname".mbox -l "$listname"
+    else
+        ssh $TARGET sudo -u $DJANGO_USER $PYTHON_VENV_PGARCHIVES_PRIVATE $PGARCHIVES_PRIVATE_PATH/loader/load_message.py -m lists/"$listname".mbox -l "$listname"
+    fi
+}
+
+for i in $PUBLIC_LISTS
+do
+    import_list "$i" public
+done
+
+for i in $PRIVATE_LISTS
+do
+    import_list "$i" private
+done
-- 
2.33.1



reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: [PATCH] pglister: Add example script to import from mailman
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox