Bob Mottram 11 лет назад
Родитель
Сommit
60150fe6b4
1 измененных файлов: 68 добавлений и 0 удалений
  1. 68
    0
      install-freedombone.sh

+ 68
- 0
install-freedombone.sh Просмотреть файл

69
 USE_HWRNG="yes"
69
 USE_HWRNG="yes"
70
 INSTALLED_WITHIN_DOCKER="no"
70
 INSTALLED_WITHIN_DOCKER="no"
71
 
71
 
72
+# If you want to run an encrypted mailing list specify its name here.
73
+# There should be no spaces in the name
74
+PRIVATE_MAILING_LIST=
75
+
72
 GPG_KEYSERVER="hkp://keys.gnupg.net"
76
 GPG_KEYSERVER="hkp://keys.gnupg.net"
73
 
77
 
74
 # optionally you can provide your exported GPG key pair here
78
 # optionally you can provide your exported GPG key pair here
1011
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/gpg-genkey.conf
1015
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/gpg-genkey.conf
1012
       su -c "gpg --batch --gen-key /home/$MY_USERNAME/gpg-genkey.conf" - $MY_USERNAME
1016
       su -c "gpg --batch --gen-key /home/$MY_USERNAME/gpg-genkey.conf" - $MY_USERNAME
1013
       shred -zu /home/$MY_USERNAME/gpg-genkey.conf
1017
       shred -zu /home/$MY_USERNAME/gpg-genkey.conf
1018
+      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $DOMAIN_NAME | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}'" - $MY_USERNAME)
1019
+      MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
1020
+	  su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
1014
   fi
1021
   fi
1015
 
1022
 
1016
   echo 'configure_gpg' >> $COMPLETION_FILE
1023
   echo 'configure_gpg' >> $COMPLETION_FILE
1151
   echo '  mkdir $PROCMAILLOG' >> /usr/bin/mailinglistrule
1158
   echo '  mkdir $PROCMAILLOG' >> /usr/bin/mailinglistrule
1152
   echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/mailinglistrule
1159
   echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/mailinglistrule
1153
   echo 'fi' >> /usr/bin/mailinglistrule
1160
   echo 'fi' >> /usr/bin/mailinglistrule
1161
+  echo 'MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC)'
1162
+  echo 'sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC'
1163
+  echo 'chown $MYUSERNAME:$MYUSERNAME $MUTTRC'
1154
   chmod +x /usr/bin/mailinglistrule
1164
   chmod +x /usr/bin/mailinglistrule
1155
   echo 'folders_for_mailing_lists' >> $COMPLETION_FILE
1165
   echo 'folders_for_mailing_lists' >> $COMPLETION_FILE
1156
 }
1166
 }
1187
   echo '  mkdir $PROCMAILLOG' >> /usr/bin/emailrule
1197
   echo '  mkdir $PROCMAILLOG' >> /usr/bin/emailrule
1188
   echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/emailrule
1198
   echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/emailrule
1189
   echo 'fi' >> /usr/bin/emailrule
1199
   echo 'fi' >> /usr/bin/emailrule
1200
+  echo 'MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC)'
1201
+  echo 'sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC'
1202
+  echo 'chown $MYUSERNAME:$MYUSERNAME $MUTTRC'
1190
   chmod +x /usr/bin/emailrule
1203
   chmod +x /usr/bin/emailrule
1191
   echo 'folders_for_email_addresses' >> $COMPLETION_FILE
1204
   echo 'folders_for_email_addresses' >> $COMPLETION_FILE
1192
 }
1205
 }
1210
   echo 'dynamic_dns_freedns' >> $COMPLETION_FILE
1223
   echo 'dynamic_dns_freedns' >> $COMPLETION_FILE
1211
 }
1224
 }
1212
 
1225
 
1226
+function create_private_mailing_list {
1227
+  if grep -Fxq "create_private_mailing_list" $COMPLETION_FILE; then
1228
+      return
1229
+  fi
1230
+  if [ ! $PRIVATE_MAILING_LIST ]; then
1231
+	  return
1232
+  fi
1233
+  if [ $PRIVATE_MAILING_LIST == $MY_USERNAME ]; then
1234
+	  echo 'The name of the private mailing list should not be the'
1235
+	  echo 'same as your username'
1236
+	  exit 10
1237
+  fi
1238
+  if [ ! $MY_GPG_PUBLIC_KEY ]; then
1239
+	  echo 'To create a private mailing list you need to specify a file'
1240
+	  echo 'containing your exported GPG key within MY_GPG_PUBLIC_KEY at'
1241
+	  echo 'the top of the script'
1242
+	  exit 11
1243
+  fi
1244
+  apt-get -y --force-yes install ruby ruby-dev ruby-gpgme libgpgme11-dev libmagic-dev
1245
+  gem install schleuder
1246
+  schleuder-fix-gem-dependencies
1247
+  schleuder-init-setup
1248
+  sed -i 's/#smtp_port: 25/smtp_port: 465/g' /etc/schleuder/schleuder.conf
1249
+  sed -i 's/#superadminaddr: root@localhost/superadminaddr: root@localhost' /etc/schleuder/schleuder.conf
1250
+  schleuder-newlist $PRIVATE_MAILING_LIST@$DOMAIN_NAME -realname "$PRIVATE_MAILING_LIST" -adminaddress $MY_USERNAME@$DOMAIN_NAME -initmember $MY_USERNAME@$DOMAIN_NAME -initmemberkey $MY_GPG_PUBLIC_KEY -nointeractive
1251
+  emailrule $MY_USERNAME $PRIVATE_MAILING_LIST@$DOMAIN_NAME $PRIVATE_MAILING_LIST
1252
+
1253
+  echo 'schleuder:' > /etc/exim4/conf.d/router/550_exim4-config_schleuder
1254
+  echo '  debug_print = "R: schleuder for $local_part@$domain"' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1255
+  echo '  driver = accept' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1256
+  echo '  local_part_suffix_optional' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1257
+  echo '  local_part_suffix = +* : -bounce : -sendkey' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1258
+  echo '  domains = +local_domains' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1259
+  echo '  user = schleuder' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1260
+  echo '  group = schleuder' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1261
+  echo '  require_files = schleuder:+/var/lib/schleuder/$domain/${local_part}' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1262
+  echo '  transport = schleuder_transport' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
1263
+
1264
+  echo 'schleuder_transport:' > /etc/exim4/conf.d/transport/30_exim4-config_schleuder
1265
+  echo '  debug_print = "T: schleuder_transport for $local_part@$domain"' >> /etc/exim4/conf.d/transport/30_exim4-config_schleuder
1266
+  echo '  driver = pipe' >> /etc/exim4/conf.d/transport/30_exim4-config_schleuder
1267
+  echo '  home_directory = "/var/lib/schleuder/$domain/$local_part"' >> /etc/exim4/conf.d/transport/30_exim4-config_schleuder
1268
+  echo '  command = "/usr/bin/schleuder $local_part@$domain"' >> /etc/exim4/conf.d/transport/30_exim4-config_schleuder
1269
+  chown -R schleuder:schleuder /var/lib/schleuder
1270
+  update-exim4.conf.template -r
1271
+  update-exim4.conf
1272
+  service exim4 restart
1273
+  useradd -d /var/schleuderlists -s /bin/false schleuder
1274
+  adduser Debian-exim schleuder
1275
+  usermod -a -G mail schleuder
1276
+  exim -d -bt $PRIVATE_MAILING_LIST@$DOMAIN_NAME
1277
+  echo 'create_private_mailing_list' >> $COMPLETION_FILE
1278
+}
1279
+
1213
 function import_email {
1280
 function import_email {
1214
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
1281
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
1215
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1282
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1297
 folders_for_mailing_lists
1364
 folders_for_mailing_lists
1298
 folders_for_email_addresses
1365
 folders_for_email_addresses
1299
 dynamic_dns_freedns
1366
 dynamic_dns_freedns
1367
+create_private_mailing_list
1300
 import_email
1368
 import_email
1301
 install_final
1369
 install_final
1302
 echo 'Freedombone installation is complete'
1370
 echo 'Freedombone installation is complete'