-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpostfixadmin-mass-mailboxes-create.sh
76 lines (60 loc) · 1.91 KB
/
postfixadmin-mass-mailboxes-create.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
#####
#
# Mass postfixadmin mailboxes creation by @ClessAlvein
#
#####
# VARS
mailboxesListFile="./mailboxes.txt"
mailboxQuota="2048"
pfCli="/usr/share/nginx/html/postfixadmin/scripts/postfixadmin-cli"
dateTimeCurrent=`date +%Y-%m-%d_%H-%M-%S`
# SCRIPT START
# declare array with mailbox data in the each line
declare -A arrayMailboxes;
# getting each line from the file with each user's data
while IFS= read -r line || [[ "$line" ]];
do
# getting user, pass, name from the line and put it to the assoc array key=value
while IFS="|" read "mailboxUserFromFile" "mailboxPassFromFile" "mailboxNameFromFile";
do
# makeup
echo "";
# debug
#echo "${mailboxUser}, ${mailboxPass}, ${mailboxName}";
# declare assoc array with each key as a bit mailbox's data
declare -A arrayMailbox;
# each key is a bit of the mailbox's data
arrayMailbox[arrayMailboxUser]=${mailboxUserFromFile};
arrayMailbox[arrayMailboxPass]=${mailboxPassFromFile};
arrayMailbox[arrayMailboxName]=${mailboxNameFromFile};
# for each bit of mailbox's data create var (user,pass,name)
for key in "${!arrayMailbox[@]}";
do
case $key in
arrayMailboxUser)
mailboxUser=${arrayMailbox[${key}]};;
arrayMailboxPass)
mailboxPass=${arrayMailbox[${key}]};;
arrayMailboxName)
mailboxName=${arrayMailbox[${key}]};;
esac
done
done < <( echo ${line} )
# if ${mailboxName} is empty
if [ -z "${mailboxName}" ]; then
mailboxName=${mailboxUser}
fi
# debug
echo "mailboxUser: ${mailboxUser}";
echo "mailboxPass: ${mailboxPass}";
echo "mailboxName: ${mailboxName}";
# create each mailbox
${pfCli} mailbox add ${mailboxUser} \
--password "${mailboxPass}" \
--password2 "${mailboxPass}" \
--name "${mailboxName}" \
--quota "${mailboxQuota}" \
--active --welcome-mail \
| tee -a ./log_${dateTimeCurrent}
done < ${mailboxesListFile}