Alternc  latest
Alternc logiel libre pour l'hébergement
make_mail_dataset.sh
Go to the documentation of this file.
1 #!/bin/bash
2 
3 # TODO Traduction.
4 # Script permettant de générer un jeu de données pour tester différents cas sur les mails.
5 #
6 # Utilisation :
7 # make_mail_dataset.sh > dataset.sql
8 
9 # Domaine sur lequel porte le jeu de données.
10 DOMAIN="example.com"
11 
12 # Identifiant du domaine.
13 DOMAIN_ID=2000
14 
15 # Mot de passe des comptes.
16 PASSWORD="password"
17 
18 # Delivery des mailbox
19 MAILBOX_DELIVERY="dovecot"
20 
21 # Delivery des listes
22 MAILMAN_DELIVERY="mailman"
23 
24 ALTERNC_MAIL="/var/alternc/mail"
25 
26 # Fonction pour ajouter la clause where
27 append_from_address(){
28  username="$1"
29 
30  echo "FROM address WHERE address.domain_id = $DOMAIN_ID AND address.address = '$username';"
31 }
32 
33 # Fonction permettant d'insérer une entrée dans la table address
34 insert_address(){
35  username="$1"
36 
37  echo "INSERT INTO address (domain_id, address, password) VALUES ($DOMAIN_ID, '$username', md5('$PASSWORD'));"
38 }
39 
40 # Fonction permettant d'insérer une entrée dans la table recipient
41 insert_recipient(){
42  username="$1"
43  alias="$2"
44 
45  echo "INSERT INTO recipient (address_id, recipients) SELECT address.id AS address_id, '$alias' AS recipients"
46  append_from_address "$username"
47 }
48 
49 # Fonction permettant d'insérer dans la table mailbox
50 insert_mailbox(){
51  username="$1"
52 
53  echo "INSERT INTO mailbox (address_id, path, delivery) SELECT address.id AS address_id, '$ALTERNC_MAIL/$DOMAIN/$username' AS path, '$MAILBOX_DELIVERY' AS delivery"
54  append_from_address "$username"
55 }
56 
57 # Fonction permettant d'insérer dans la table mailman
58 insert_mailman(){
59  listname="$1"
60 
61  echo "INSERT INTO mailman (address_id, delivery) SELECT address.id AS address_id, '$MAILMAN_DELIVERY' AS delivery"
62  append_from_address "$username"
63 }
64 
65 # Fonction permettant de rajouter des destinataires supplémentaires sur une adresse
66 append_recipients(){
67  username="$1"
68  shift
69 
70  j=""
71  for i in $*; do
72  j=$(echo -e "$j\n$i")
73  done
74 
75  insert_recipient "$username" "$j"
76 }
77 
78 # Fonction permettant d'ajouter une adresse avec un alias avec des destinataires supplémentaires
79 add_recipient(){
80  alias="alias$1"
81  shift
82 
83  begin
84  insert_address "$alias"
85  append_recipients "$alias" $*
86  commit
87 }
88 
89 # Fonction permettant d'ajouter une mailbox avec des destinataires supplémentaires
90 add_mailbox(){
91  username="mailbox$1"
92  shift
93 
94  begin
95  insert_address "$username"
96  insert_mailbox "$username"
97  append_recipients "$username" $*
98  commit
99 }
100 
101 # Fonction permettant d'ajouter une liste de diffusion avec des destinataires supplémentaires
102 add_list(){
103  listname="list$1"
104  shift
105 
106  begin
107  insert_address "$listname"
108  insert_mailman "$listname"
109  append_recipients "$listname" $*
110  commit
111 }
112 
113 # Fonction permettant d'ajouter une clause de début de transaction
114 begin(){
115  echo ""
116  echo "BEGIN;"
117 }
118 
119 # Fonction permettant d'ajouter une clause de fin de transaction
120 commit(){
121  echo "COMMIT;"
122 }
123 
124 # Ajout du domaine
125 begin
126 echo "INSERT INTO domaines (id, compte, domaine, dns_result) VALUES ($DOMAIN_ID, $DOMAIN_ID, '$DOMAIN', '0');"
127 commit
128 
129 # Cas simples
130 # alias00@$DOMAIN : alias vers recipient00@example.com
131 add_recipient "00" "recipient00@example.com"
132 
133 # mailbox00@$DOMAIN : mailbox locale
134 add_mailbox "00"
135 
136 # list00@$DOMAIN : liste de diffusion
137 add_list "00"
138 
139 # Cas complexes de niveau 1
140 # alias10@$DOMAIN : alias vers alias00@$DOMAIN
141 add_recipient "10" "alias00@$DOMAIN"
142 
143 # alias11@$DOMAIN : alias vers mailbox00@$DOMAIN
144 add_recipient "11" "mailbox00@$DOMAIN"
145 
146 # alias12@$DOMAIN : alias vers list00@$DOMAIN
147 add_recipient "12" "list00@$DOMAIN"
148 
149 # mailbox10@$DOMAIN : mailbox locale avec distribution supplémentaire vers recipient00@example.com (mailbox + alias00)
150 add_mailbox "10" "alias00@$DOMAIN"
151 
152 # list10@$DOMAIN : liste de diffusion avec distribution supplémentaire vers recipient00@example.com (list + alias00)
153 add_list "10" "alias00@$DOMAIN"
154 
155 # Cas complexes de niveau 2
156 # alias20@$DOMAIN : alias vers recipient00@example.com et alias00@$DOMAIN (alias00 + alias10)
157 add_recipient "20" "recipient00@example.com" "alias00@$DOMAIN"
158 
159 # alias21@$DOMAIN : alias vers recipient00@example.com et mailbox00@$DOMAIN (alias00 + alias11)
160 add_recipient "21" "recipient00@example.com" "mailbox00@$DOMAIN"
161 
162 # alias22@$DOMAIN : alias vers recipient00@example.com et list00@$DOMAIN (alias00 + alias12)
163 add_recipient "22" "recipient00@example.com" "list00@$DOMAIN"
164 
165 # mailbox20@$DOMAIN : mailbox locale avec distribution supplémentaire vers alias00@$DOMAIN (mailbox + alias10)
166 add_mailbox "20" "alias00@$DOMAIN"
167 
168 # mailbox21@$DOMAIN : mailbox locale avec distribution supplémentaire vers mailbox00@$DOMAIN (mailbox + alias11)
169 add_mailbox "21" "mailbox00@$DOMAIN"
170 
171 # mailbox22@$DOMAIN : mailbox locale avec distribution supplémentaire vers list00@$DOMAIN (mailbox + alias12)
172 add_mailbox "22" "list00@$DOMAIN"
173 
174 # list20@$DOMAIN : liste de diffusion avec distribution supplémentaire vers alias00@$DOMAIN (list + alias10)
175 add_list "20" "alias00@$DOMAIN"
176 
177 # list21@$DOMAIN : liste de diffusion avec distribution supplémentaire vers mailbox00@$DOMAIN (list + alias11)
178 add_list "21" "mailbox00@$DOMAIN"
179 
180 # list22@$DOMAIN : liste de diffusion avec distribution supplémentaire vers list00@$DOMAIN (list + alias12)
181 add_list "22" "list00@$DOMAIN"
182 
183 # Cas complexes de niveau 3
184 # alias30@$DOMAIN : alias vers alias00@$DOMAIN, mailbox00@$DOMAIN et test00@$DOMAIN (alias10 + alias11 + alias12)
185 add_recipient "30" "alias00@$DOMAIN" "mailbox00@$DOMAIN" "test00@$DOMAIN"
186 
187 # mailbox30@$DOMAIN : mailbox locale avec distribution supplémentaire vers recipient00@example.com et alias00@$DOMAIN (mailbox + alias00 + alias10)
188 add_mailbox "30" "recipient00@example.com" "alias00@$DOMAIN"
189 
190 # mailbox31@$DOMAIN : mailbox locale avec distribution supplémentaire vers recipient00@example.com et mailbox00@$DOMAIN (mailbox + alias00 + alias11)
191 add_mailbox "31" "recipient00@example.com" "mailbox00@$DOMAIN"
192 
193 # mailbox32@$DOMAIN : mailbox locale avec distribution supplémentaire vers recipient00@example.com et list00@$DOMAIN (mailbox + alias00 + alias12)
194 add_mailbox "32" "recipient00@example.com" "list00@$DOMAIN"
195 
196 # list30@$DOMAIN : liste de diffusion avec distribution supplémentaire vers recipient00@example.com et alias00@$DOMAIN (list + alias00 + alias10)
197 add_list "30" "recipient00@example.com" "alias00@$DOMAIN"
198 
199 # list31@$DOMAIN : liste de diffusion avec distribution supplémentaire vers recipient00@example.com et mailbox00@$DOMAIN (list + alias00 + alias11)
200 add_list "31" "recipient00@example.com" "mailbox00@$DOMAIN"
201 
202 # list32@$DOMAIN : liste de diffusion avec distribution supplémentaire vers recipient00@example.com et list00@$DOMAIN (list + alias00 + alias12)
203 add_list "32" "recipient00@example.com" "list00@$DOMAIN"
204 
205 # Cas complexe de niveau 4
206 # alias40@$DOMAIN : alias vers recipient00@example.com, alias00@$DOMAIN, mailbox00@$DOMAIN et list00@$DOMAIN (alias00 + alias10 + alias11 + alias12)
207 add_recipient "40" "recipient00@example.com" "alias00@$DOMAIN" "mailbox00@$DOMAIN" "list00@$DOMAIN"
208 
209 # mailbox40@$DOMAIN : mailbox locale avec distribution supplémentaire vers alias00@$DOMAIN, mailbox00@$DOMAIN et list00@$DOMAIN (mailbox + alias10 + alias11 + alias12)
210 add_mailbox "40" "alias00@$DOMAIN" "mailbox00@$DOMAIN" "list00@$DOMAIN"
211 
212 # list40@$DOMAIN : liste de diffusion avec distribution supplémentaire vers alias00@$DOMAIN, mailbox00@$DOMAIN et list00@$DOMAIN (list + alias10 + alias11 + alias12)
213 add_list "40" "alias00@$DOMAIN" "mailbox00@$DOMAIN" "list00@$DOMAIN"
214 
215 # Cas complexe de niveau 5
216 # mailbox50@$DOMAIN : mailbox locale avec distribution supplémentaire vers recipient00@example.com, alias00@$DOMAIN, mailbox00@$DOMAIN et list00@$DOMAIN (mailbox + alias00 + alias10 + alias11 + alias12)
217 add_mailbox "50" "recipient00@example.com" "alias00@$DOMAIN" "mailbox00@$DOMAIN" "list00@$DOMAIN"
218 
219 # list50@$DOMAIN : liste de diffusion avec distribution supplémentaire vers recipient00@example.com, alias00@$DOMAIN, mailbox00@$DOMAIN et list00@$DOMAIN (list + alias00 + alias10 + alias11 + alias12)
220 add_list "50" "recipient00@example.com" "alias00@$DOMAIN" "mailbox00@$DOMAIN" "list00@$DOMAIN"
221 
222 
223 echo "-- To delete everything"
224 echo "-- delete from mailbox where address_id in (select id from address where domain_id=2000);"
225 echo "-- delete from recipient where address_id in (select id from address where domain_id=2000);"
226 echo "-- delete from address where domain_id = 2000;"
227 echo "-- delete from domaines where id=2000;"