Browse Source

import_from_archive

main
pvincent 2 weeks ago
parent
commit
772fec9e82
  1. 3
      .vscode/settings.json
  2. 13
      sympa/doc/migration.md
  3. 7
      sympa/miaou/miaou-migrate-sympa-from-container
  4. 4
      sympa/resources/tools/sympa_export.bash
  5. 42
      sympa/resources/tools/sympa_import.bash
  6. 18
      sympa/resources/tools/sympa_purge.bash

3
.vscode/settings.json

@ -17,7 +17,8 @@
"**/*.mdown",
"**/*.md",
"**/sympa/miaou/*",
"**/*.sh"
"**/*.sh",
"**/*.bash"
],
"bashIde.shfmt.simplifyCode": true,
"bashIde.shfmt.spaceRedirects": true,

13
sympa/doc/migration.md

@ -66,3 +66,16 @@ To: debian13, sympa 6.2.76
* CONTAINER=listes.artcode.re
* miaou/miaou-migrate-sympa-from-container $CONTAINER
# aliases
append_or_replace: /etc/postfix/main.cf
```
myhostname = <SYMPA_DOMAIN>
alias_maps = hash:/etc/aliases, hash:/etc/mail/sympa/aliases
alias_database = hash:/etc/aliases, hash:/etc/mail/sympa/aliases
```
copy:
* /etc/mail/sympa/aliases{,.db}

7
sympa/miaou/miaou-migrate-sympa-from-container

@ -83,7 +83,10 @@ function create_new_container {
pct stop $vmid
/opt/miaou-bash/tools/append_or_replace "^net0.*$" "$SYMPA_NET0\n$net1" $vm_conf_file
pct start $vmid
}
function import_from_archive {
"$BASEDIR"/miaou-install-from-import-sympa $CONTAINER $SYMPA_ARCHIVE
}
# MAIN
@ -96,10 +99,12 @@ export_sympa
get_container_net0
stop_old_container
create_new_container
import_from_archive
# 5. install sympa
# 6. import old data
# 7. fix_dmarc_off + fix_dkim_global_on + fix external origin
# 7. fix_dmarc_off + fix_dkim_global_on
# 8. fix external origin
# allowed_external_origin *
# (https://gitlab.cemea.org/cemeaweb/khazad-dum/-/issues/110)

4
sympa/resources/tools/sympa_export.bash

@ -24,9 +24,13 @@ function export_files {
tar -C / -cf "$temp_dir/files.tar" etc/sympa/sympa/sympa.conf
tar -C / -uf "$temp_dir/files.tar" etc/sympa/data_structure.version
tar -C / -uf "$temp_dir/files.tar" etc/sympa/auth.conf
tar -C / -uf "$temp_dir/files.tar" etc/mail/sympa/aliases{,.db}
[[ -d /etc/dkimkeys ]] && tar -C / -uf "$temp_dir/files.tar" etc/dkimkeys/mail.{private,txt}
tar -C / -uf "$temp_dir/files.tar" var/lib/sympa
tar -C / -uf "$temp_dir/files.tar" var/spool/sympa
gzip "$temp_dir/files.tar"
}

42
sympa/resources/tools/sympa_import.bash

@ -8,6 +8,8 @@ DB_NAME=sympa
DB_USER="$DB_NAME"
DB_PASS="$DB_NAME"
SYMPA_DOMAIN=''
## functions
function usage {
@ -61,6 +63,13 @@ function import_files_etc_sympa {
replace_conf_entry_from_export wwsympa_url
replace_conf_entry_from_export listmaster
replace_conf_entry_from_export lang
/opt/miaou-bash/tools/append_or_replace "^aliases_program.*$" "aliases_program postalias" /etc/sympa/sympa/sympa.conf
}
function import_files_etc_mail_sympa_aliases {
mv etc/mail/sympa/aliases{,.db} /etc/mail/sympa/
chown sympa:sympa /etc/mail/sympa/aliases{,.db}
}
function import_files_etc_dkimkeys {
@ -86,8 +95,11 @@ function import_files {
cd "$files_temp"
tar -xf "$export_tmp/files.tar.gz"
import_files_etc_sympa
import_files_etc_mail_sympa_aliases
[[ -d etc/dkimkeys ]] && import_files_etc_dkimkeys
import_files_lib
import_files_spool
@ -96,7 +108,7 @@ function import_files {
function import_certbot {
local sympa_domain=$(grep '^domain' /etc/sympa/sympa/sympa.conf | cut -f2)
SYMPA_DOMAIN=$(grep '^domain' /etc/sympa/sympa/sympa.conf | cut -f2)
if [[ -f "$export_tmp/certbot.tar" ]]; then
echo -n "import certbot..."
@ -156,10 +168,10 @@ server {
server {
listen 443 ssl;
server_name $sympa_domain;
server_name $SYMPA_DOMAIN;
ssl_certificate /etc/letsencrypt/live/$sympa_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$sympa_domain/privkey.pem;
ssl_certificate /etc/letsencrypt/live/$SYMPA_DOMAIN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$SYMPA_DOMAIN/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
@ -200,15 +212,17 @@ function migrate_sympa {
function stop_services {
echo -n "stop services..."
sudo systemctl stop sympa.service
sudo systemctl stop wwsympa.socket
systemctl stop sympa.service
systemctl stop wwsympa.socket
systemctl stop postfix.service
echo OK
}
function start_services {
echo -n "start services..."
sudo systemctl start sympa.service
sudo systemctl start wwsympa.socket
systemctl start sympa.service
systemctl start wwsympa.socket
systemctl start postfix.service
echo OK
}
@ -218,6 +232,14 @@ function remove_temp {
echo OK
}
function configure_postfix {
echo "$SYMPA_DOMAIN" > /etc/mailname
/opt/miaou-bash/tools/append_or_replace "^myhostname =.*$" "myhostname = $SYMPA_DOMAIN" /etc/postfix/main.cf
/opt/miaou-bash/tools/append_or_replace "^alias_maps =.*$" "alias_maps = hash:/etc/aliases, hash:/etc/mail/sympa/aliases" /etc/postfix/main.cf
/opt/miaou-bash/tools/append_or_replace "^alias_database =.*$" "alias_database = hash:/etc/aliases, hash:/etc/mail/sympa/aliases" /etc/postfix/main.cf
}
function import {
create_temp
@ -225,7 +247,9 @@ function import {
stop_services
import_database
import_files
import_certbot
import_certbot # SYMPA_DOMAIN got populated!
configure_postfix
start_services
migrate_sympa

18
sympa/resources/tools/sympa_purge.bash

@ -55,6 +55,24 @@ function purge {
fi
done
# MAIL/SYMPA/ALIASES
local escaped="${SYMPA_DOMAIN//./\\.}"
local regex="-e ^## -e ^#- -e $escaped"
local to_purge=$(grep -v ${regex@E} /etc/mail/sympa/aliases)
if [[ -n $to_purge ]]; then
echo "ALIASES: useless entries"
echo '------------------------'
echo "$to_purge"
echo '------------------------'
grep ${regex@E} /etc/mail/sympa/aliases > /etc/mail/sympa/aliases
newaliases # build the `.db` version
local number_to_purge=$(echo "$to_purge" | wc -l)
echo "$number_to_purge entries removed!"
fi
}
### MAIN

Loading…
Cancel
Save