Преглед на файлове

Optional private mailing list

Bob Mottram преди 11 години
родител
ревизия
60150fe6b4
променени са 1 файла, в които са добавени 68 реда и са изтрити 0 реда
  1. 68
    0
      install-freedombone.sh

+ 68
- 0
install-freedombone.sh Целия файл

@@ -69,6 +69,10 @@ KERNEL_VERSION="v3.15.10-bone7"
69 69
 USE_HWRNG="yes"
70 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 76
 GPG_KEYSERVER="hkp://keys.gnupg.net"
73 77
 
74 78
 # optionally you can provide your exported GPG key pair here
@@ -1011,6 +1015,9 @@ function configure_gpg {
1011 1015
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/gpg-genkey.conf
1012 1016
       su -c "gpg --batch --gen-key /home/$MY_USERNAME/gpg-genkey.conf" - $MY_USERNAME
1013 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 1021
   fi
1015 1022
 
1016 1023
   echo 'configure_gpg' >> $COMPLETION_FILE
@@ -1151,6 +1158,9 @@ function folders_for_mailing_lists {
1151 1158
   echo '  mkdir $PROCMAILLOG' >> /usr/bin/mailinglistrule
1152 1159
   echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/mailinglistrule
1153 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 1164
   chmod +x /usr/bin/mailinglistrule
1155 1165
   echo 'folders_for_mailing_lists' >> $COMPLETION_FILE
1156 1166
 }
@@ -1187,6 +1197,9 @@ function folders_for_email_addresses {
1187 1197
   echo '  mkdir $PROCMAILLOG' >> /usr/bin/emailrule
1188 1198
   echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/emailrule
1189 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 1203
   chmod +x /usr/bin/emailrule
1191 1204
   echo 'folders_for_email_addresses' >> $COMPLETION_FILE
1192 1205
 }
@@ -1210,6 +1223,60 @@ function dynamic_dns_freedns {
1210 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 1280
 function import_email {
1214 1281
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
1215 1282
   if grep -Fxq "import_email" $COMPLETION_FILE; then
@@ -1297,6 +1364,7 @@ configure_firewall_for_email
1297 1364
 folders_for_mailing_lists
1298 1365
 folders_for_email_addresses
1299 1366
 dynamic_dns_freedns
1367
+create_private_mailing_list
1300 1368
 import_email
1301 1369
 install_final
1302 1370
 echo 'Freedombone installation is complete'