Bob Mottram пре 10 година
родитељ
комит
81d7447385
1 измењених фајлова са 72 додато и 1 уклоњено
  1. 72
    1
      install-freedombone.sh

+ 72
- 1
install-freedombone.sh Прегледај датотеку

@@ -92,6 +92,12 @@ USE_HWRNG="yes"
92 92
 # Whether this system is being installed within a docker container
93 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 101
 # If you want to run an encrypted mailing list specify its name here.
96 102
 # There should be no spaces in the name
97 103
 PRIVATE_MAILING_LIST=
@@ -1665,6 +1671,70 @@ function dynamic_dns_freedns {
1665 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 1738
 function create_private_mailing_list {
1669 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 1740
       return
@@ -1677,7 +1747,7 @@ function create_private_mailing_list {
1677 1747
   if [ ! $PRIVATE_MAILING_LIST ]; then
1678 1748
       return
1679 1749
   fi
1680
-  if [ $PRIVATE_MAILING_LIST == $MY_USERNAME ]; then
1750
+  if [[ $PRIVATE_MAILING_LIST == $MY_USERNAME ]]; then
1681 1751
       echo 'The name of the private mailing list should not be the'
1682 1752
       echo 'same as your username'
1683 1753
       exit 10
@@ -3526,6 +3596,7 @@ configure_firewall_for_email
3526 3596
 folders_for_mailing_lists
3527 3597
 folders_for_email_addresses
3528 3598
 dynamic_dns_freedns
3599
+create_public_mailing_list
3529 3600
 #create_private_mailing_list
3530 3601
 import_email
3531 3602
 script_for_attaching_usb_drive