From e6fda335f96432eec7610ef73846daa3eb041e67 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 21 Apr 2020 15:11:41 +0200 Subject: [PATCH] Scripts d'aides pour Kopano --- kopano/active_imap.sh | 24 ++++++++++++++++++++++++ kopano/addvirtual.sh | 23 +++++++++++++++++++++++ kopano/create_mailbox.csv | 1 + kopano/create_mailbox.sh | 33 +++++++++++++++++++++++++++++++++ kopano/kopano_db.sh | 32 ++++++++++++++++++++++++++++++++ kopano/mig_blorand.csv | 2 ++ kopano/mig_blorand.sh | 36 ++++++++++++++++++++++++++++++++++++ 7 files changed, 151 insertions(+) create mode 100755 kopano/active_imap.sh create mode 100755 kopano/addvirtual.sh create mode 100644 kopano/create_mailbox.csv create mode 100755 kopano/create_mailbox.sh create mode 100755 kopano/kopano_db.sh create mode 100644 kopano/mig_blorand.csv create mode 100755 kopano/mig_blorand.sh diff --git a/kopano/active_imap.sh b/kopano/active_imap.sh new file mode 100755 index 0000000..78c654b --- /dev/null +++ b/kopano/active_imap.sh @@ -0,0 +1,24 @@ +#!/bin/bash +CSV_FILE="$1" + +if [ -z "$CSV_FILE" ] ; then + echo No CSV file supplied... Exiting + exit 1 +fi + +cat $CSV_FILE | grep -v '^#' | while read line ; do + MAIL=`echo $line | awk -F';' '{ print $1 }'` + USERNAME="$MAIL" + + + if kopano-cli --user=$USERNAME > /dev/null 2>&1 ; then + if kopano-cli --user=$USERNAME | awk '/^Features/' | grep imap > /dev/null 2>&1 ; then + echo imap already activated for $USERNAME + else + echo Activating imap for $USERNAME + /usr/sbin/kopano-cli --user $USERNAME --add-feature imap + fi + else + echo $USERNAME does not exist + fi +done diff --git a/kopano/addvirtual.sh b/kopano/addvirtual.sh new file mode 100755 index 0000000..5dca18f --- /dev/null +++ b/kopano/addvirtual.sh @@ -0,0 +1,23 @@ +#!/bin/bash +CSV_FILE="$1" + +if [ -z "$CSV_FILE" ] ; then + echo No CSV file supplied... Exiting + exit 1 +fi + +cat $CSV_FILE | grep -v '^#' | while read line ; do + MAIL=`echo $line | awk -F';' '{ print $1 }'` + USERNAME="$MAIL" + PASSWORD=`echo $line | awk -F';' '{ print $3 }'` + FULL_NAME=`echo $line | awk -F';' '{ print $2 }'` + + if grep "^$MAIL" /etc/aliases > /dev/null 2>&1 ; then + echo $MAIL already exist + else + echo Adding $MAIL account + echo -e "$MAIL:\t$MAIL" >> /etc/aliases + fi +done +#postmap /etc/postfix/virtual +newaliases diff --git a/kopano/create_mailbox.csv b/kopano/create_mailbox.csv new file mode 100644 index 0000000..df05327 --- /dev/null +++ b/kopano/create_mailbox.csv @@ -0,0 +1 @@ +# email;Full Name;password diff --git a/kopano/create_mailbox.sh b/kopano/create_mailbox.sh new file mode 100755 index 0000000..f2c0e48 --- /dev/null +++ b/kopano/create_mailbox.sh @@ -0,0 +1,33 @@ +#!/bin/bash +CSV_FILE="$1" + +if [ -z "$CSV_FILE" ] ; then + echo No CSV file supplied... Exiting + exit 1 +fi + +cat $CSV_FILE | grep -v '^#' | while read line ; do + MAIL=`echo $line | awk -F';' '{ print $1 }'` + USERNAME="$MAIL" + PASSWORD=`echo $line | awk -F';' '{ print $3 }'` + FULL_NAME=`echo $line | awk -F';' '{ print $2 }'` + + + if kopano-cli --user=$USERNAME > /dev/null 2>&1 ; then + echo $USERNAME already exist + else + TEMP_SH=`mktemp /tmp/create_mailbox.XXXX` + cat > $TEMP_SH << EOF +#!/bin/sh +echo creating $USERNAME +/usr/sbin/kopano-cli --create \ +--user '$USERNAME' \ +--password '$PASSWORD' \ +--email '$MAIL' \ +--fullname '$FULL_NAME' \ +--admin-level 0 \ +--lang '$LANG' +EOF + sh $TEMP_SH && rm $TEMP_SH + fi +done diff --git a/kopano/kopano_db.sh b/kopano/kopano_db.sh new file mode 100755 index 0000000..55aeb54 --- /dev/null +++ b/kopano/kopano_db.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +PASS_LENGH="14" +DB_NAME="kopano" +DB_USER="kopano" +DB_HOST="localhost" +DB_PORT="3306" +DB_PASS=`openssl rand -base64 $PASS_LENGH` + +cat > /etc/kopano/db.cfg << EOF +database_engine = mysql +mysql_host = $DB_HOST +mysql_port = $DB_PORT +mysql_user = $DB_USER +mysql_password = $DB_PASS +mysql_database = $DB_NAME +EOF + +GRANT_SH=`mktemp /tmp/GRANT_DB.XXXX` +cat > $GRANT_SH << EOF +#!/bin/sh +mysql -e "grant all privileges on $DB_NAME.* to '$DB_USER'@'localhost' identified by '$DB_PASS';" +EOF +sh $GRANT_SH && rm $GRANT_SH + +if grep '^!include /etc/kopano/db.cfg' /etc/kopano/server.cfg 2>&1 > /dev/null ; then + echo /etc/kopano/db.cfg already include in /etc/kopano/server.cfg +else + echo Including /etc/kopano/db.cfg in /etc/kopano/server.cfg + echo '!include /etc/kopano/db.cfg' >> /etc/kopano/server.cfg +fi + diff --git a/kopano/mig_blorand.csv b/kopano/mig_blorand.csv new file mode 100644 index 0000000..f98f462 --- /dev/null +++ b/kopano/mig_blorand.csv @@ -0,0 +1,2 @@ +# Source IMAP IP;Source IMAP login;Source IMAP password;Destination IMAP IP (localhost);Destination IMAP login;Destination IMAP password +# Be sure to not have ";" in password diff --git a/kopano/mig_blorand.sh b/kopano/mig_blorand.sh new file mode 100755 index 0000000..3ffe686 --- /dev/null +++ b/kopano/mig_blorand.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +IMAPSYNC_BIN=/usr/bin/kopano-migration-imap + +#imapsync \ +# --host1 test1.lamiral.info --user1 test1 --password1 secret1 \ +# --host2 test2.lamiral.info --user2 test2 --password2 secret2 + +cat mig_blorand.csv | grep -v '^#' | while read line ; do + ORIG_IMAP_SRV=`echo $line | awk -F':' '{ print $1 }'` + ORIG_IMAP_LOGIN=`echo $line | awk -F':' '{ print $2 }'` + ORIG_IMAP_PASS=`echo $line | awk -F':' '{ print $3 }'` + DEST_IMAP_SRV=`echo $line | awk -F':' '{ print $4 }'` + DEST_IMAP_LOGIN=`echo $line | awk -F':' '{ print $5 }'` + DEST_IMAP_PASS=`echo $line | awk -F':' '{ print $6 }'` + + IMAPSYNC_LOG="$IMAPSYNC_LOGDIR/$ORIG_IMAP_LOGIN-`date +%y%m%d-%H:%M:%S`.log" + + $IMAPSYNC_BIN \ + --noreleasecheck --timeout1 1200 --timeout2 1200 \ + --host1 $ORIG_IMAP_SRV --user1 $ORIG_IMAP_LOGIN --password1 "$ORIG_IMAP_PASS" \ + --host2 $DEST_IMAP_SRV --user2 $DEST_IMAP_LOGIN --password2 "$DEST_IMAP_PASS" \ + --useheader "Message-Id" \ + --exclude 'Notes' \ + --delete2 --delete2duplicates --expunge2 \ + --regextrans2 's/Sent/&AMk-l&AOk-ments envoy&AOk-s/' \ + --regextrans2 's/Drafts/Brouillons/' \ + --regextrans2 's/Junk/Courrier ind&AOk-sirable/' \ + --regextrans2 's/Trash/&AMk-l&AOk-ments supprim&AOk-s/' + + if [ "$?" == "0" ] ; then + echo " : OK" + else + echo " : NOK" + fi +done