Browse Source

Public mailing list

Bob Mottram 10 years ago
parent
commit
81d7447385
1 changed files with 72 additions and 1 deletions
  1. 72
    1
      install-freedombone.sh

+ 72
- 1
install-freedombone.sh View File

92
 # Whether this system is being installed within a docker container
92
 # Whether this system is being installed within a docker container
93
 INSTALLED_WITHIN_DOCKER="no"
93
 INSTALLED_WITHIN_DOCKER="no"
94
 
94
 
95
+# If you want to run a public mailing list specify its name here.
96
+# There should be no spaces in the name
97
+PUBLIC_MAILING_LIST=
98
+# Optional different domain name for the public mailing list
99
+PUBLIC_MAILING_LIST_DOMAIN_NAME=
100
+
95
 # If you want to run an encrypted mailing list specify its name here.
101
 # If you want to run an encrypted mailing list specify its name here.
96
 # There should be no spaces in the name
102
 # There should be no spaces in the name
97
 PRIVATE_MAILING_LIST=
103
 PRIVATE_MAILING_LIST=
1665
   echo 'dynamic_dns_freedns' >> $COMPLETION_FILE
1671
   echo 'dynamic_dns_freedns' >> $COMPLETION_FILE
1666
 }
1672
 }
1667
 
1673
 
1674
+function create_public_mailing_list {
1675
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
1676
+      return
1677
+  fi
1678
+  if grep -Fxq "create_public_mailing_list" $COMPLETION_FILE; then
1679
+      return
1680
+  fi
1681
+  if [ ! $PUBLIC_MAILING_LIST ]; then
1682
+      return
1683
+  fi
1684
+  # does the mailing list have a separate domain name?
1685
+  if [ ! $PUBLIC_MAILING_LIST_DOMAIN_NAME ]; then
1686
+      PUBLIC_MAILING_LIST_DOMAIN_NAME=$DOMAIN_NAME
1687
+  fi
1688
+
1689
+  apt-get -y --force-yes install mlmmj
1690
+  adduser --system mlmmj
1691
+
1692
+  # create the list
1693
+  mlmmj-make-ml -a -L "$PUBLIC_MAILING_LIST" -c mlmmj
1694
+
1695
+  echo 'mlmmj_router:' > /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1696
+  echo '  driver = accept' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1697
+  echo '  domains = +mlmmj_domains' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1698
+  echo '  require_files = MLMMJ_HOME/${lc::$local_part}' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1699
+  echo '  # Use this instead, if you dont want to give Exim rx rights to mlmmj spool.' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1700
+  echo '  # Exim will then spawn a new process running under the UID of "mlmmj".' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1701
+  echo '  #require_files = mlmmj:MLMMJ_HOME/${lc::$local_part}' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1702
+  echo '  local_part_suffix = +*' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1703
+  echo '  local_part_suffix_optional' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1704
+  echo '  headers_remove = Delivered-To' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1705
+  echo '  headers_add = Delivered-To: $local_part$local_part_suffix@$domain' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1706
+  echo '  transport = mlmmj_transport' >> /etc/exim4/conf.d/router/750_exim4-config_mlmmj
1707
+
1708
+  echo 'mlmmj_transport:' > /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1709
+  echo '  driver = pipe' >> /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1710
+  echo '  return_path_add' >> /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1711
+  echo '  user = mlmmj' >> /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1712
+  echo '  group = mlmmj' >> /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1713
+  echo '  home_directory = MLMMJ_HOME' >> /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1714
+  echo '  current_directory = MLMMJ_HOME' >> /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1715
+  echo '  command = /usr/local/bin/mlmmj-receive -F -L MLMMJ_HOME/${lc:$local_part}' >> /etc/exim4/conf.d/transport/40_exim4-config_mlmmj
1716
+
1717
+  if ! grep -q "MLMMJ_HOME=/var/spool/mlmmj" /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs; then
1718
+      sed -i '/MAIN CONFIGURATION SETTINGS/a\MLMMJ_HOME=/var/spool/mlmmj' /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
1719
+  fi
1720
+  if ! grep -q "domainlist mlmmj_domains =" /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs; then
1721
+      sed -i "/MLMMJ_HOME/a\domainlist mlmmj_domains = $PUBLIC_MAILING_LIST_DOMAIN_NAME" /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
1722
+  fi
1723
+
1724
+  if ! grep -q ": +mlmmj_domains" /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs; then
1725
+      sed -i 's/domainlist relay_to_domains = MAIN_RELAY_TO_DOMAINS/domainlist relay_to_domains = MAIN_RELAY_TO_DOMAINS : +mlmmj_domains/g' /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
1726
+  fi
1727
+
1728
+  if ! grep -q "! +mlmmj_domains" /etc/exim4/conf.d/router/200_exim4-config_primary; then
1729
+      sed -i 's/domains = ! +local_domains/domains = ! +mlmmj_domains : ! +local_domains/g' /etc/exim4/conf.d/router/200_exim4-config_primary
1730
+  fi
1731
+  service exim4 restart
1732
+
1733
+  mailinglistrule $MY_USERNAME "$PUBLIC_MAILING_LIST" "$PUBLIC_MAILING_LIST"
1734
+
1735
+  echo 'create_public_mailing_list' >> $COMPLETION_FILE
1736
+}
1737
+
1668
 function create_private_mailing_list {
1738
 function create_private_mailing_list {
1669
   if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
1739
   if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
1670
       return
1740
       return
1677
   if [ ! $PRIVATE_MAILING_LIST ]; then
1747
   if [ ! $PRIVATE_MAILING_LIST ]; then
1678
       return
1748
       return
1679
   fi
1749
   fi
1680
-  if [ $PRIVATE_MAILING_LIST == $MY_USERNAME ]; then
1750
+  if [[ $PRIVATE_MAILING_LIST == $MY_USERNAME ]]; then
1681
       echo 'The name of the private mailing list should not be the'
1751
       echo 'The name of the private mailing list should not be the'
1682
       echo 'same as your username'
1752
       echo 'same as your username'
1683
       exit 10
1753
       exit 10
3526
 folders_for_mailing_lists
3596
 folders_for_mailing_lists
3527
 folders_for_email_addresses
3597
 folders_for_email_addresses
3528
 dynamic_dns_freedns
3598
 dynamic_dns_freedns
3599
+create_public_mailing_list
3529
 #create_private_mailing_list
3600
 #create_private_mailing_list
3530
 import_email
3601
 import_email
3531
 script_for_attaching_usb_drive
3602
 script_for_attaching_usb_drive