Browse Source

Improve email tls config

Bob Mottram 7 years ago
parent
commit
268fb4cc6f
1 changed files with 29 additions and 17 deletions
  1. 29
    17
      src/freedombone-base-email

+ 29
- 17
src/freedombone-base-email View File

@@ -120,29 +120,41 @@ function email_create_template {
120 120
 }
121 121
 
122 122
 function email_install_tls {
123
-    # make a tls certificate for email
123
+    tls_config_file=/etc/exim4/conf.d/main/03_exim4-config_tlsoptions
124
+    tls_auth_config_file=/etc/exim4/conf.d/auth/30_exim4-config_examples
125
+
126
+    if [ ! -f $tls_config_file ]; then
127
+        tls_config_file=/etc/exim4/exim4.conf.template
128
+        tls_auth_config_file=$tls_config_file
129
+    fi
124 130
     if [ ! -f /etc/ssl/certs/exim.dhparam ]; then
125 131
         ${PROJECT_NAME}-addcert -h exim --dhkey $DH_KEYLENGTH
126 132
         check_certificates exim
133
+        cp /etc/ssl/certs/exim.dhparam /etc/exim4
134
+        chown root:Debian-exim /etc/exim4/exim.dhparam
135
+        chmod 640 /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
127 136
     fi
128
-    cp /etc/ssl/private/exim.key /etc/exim4
129
-    cp /etc/ssl/certs/exim.crt /etc/exim4
130
-    cp /etc/ssl/certs/exim.dhparam /etc/exim4
131
-    chown root:Debian-exim /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
132
-    chmod 640 /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
133
-
134
-    sed -i '/login_saslauthd_server/,/.endif/ s/# *//' /etc/exim4/exim4.conf.template
135
-    if ! grep -q "MAIN_TLS_ENABLE = true" /etc/exim4/exim4.conf.template; then
136
-        sed -i "/.ifdef MAIN_HARDCODE_PRIMARY_HOSTNAME/i\MAIN_HARDCODE_PRIMARY_HOSTNAME =\nMAIN_TLS_ENABLE = true" /etc/exim4/exim4.conf.template
137
-    else
138
-        sed -i "s|MAIN_HARDCODE_PRIMARY_HOSTNAME =.*|MAIN_HARDCODE_PRIMARY_HOSTNAME =|g" /etc/exim4/exim4.conf.template
137
+    if ! grep -q 'MAIN_TLS_ENABLE = true' $tls_config_file; then
138
+        sed -i "/.ifdef MAIN_HARDCODE_PRIMARY_HOSTNAME/i\MAIN_HARDCODE_PRIMARY_HOSTNAME =\nMAIN_TLS_ENABLE = true" $tls_config_file
139
+    fi
140
+    if ! grep -q "tls_on_connect_ports=465" $tls_config_file; then
141
+        sed -i '/SSL configuration for exim/i\tls_on_connect_ports=465' $tls_config_file
139 142
     fi
140
-    sed -i "s|SMTPLISTENEROPTIONS=''|SMTPLISTENEROPTIONS='-oX 465:25:587 -oP /var/run/exim4/exim.pid'|g" /etc/default/exim4
141
-    if ! grep -q "tls_on_connect_ports=465" /etc/exim4/exim4.conf.template; then
142
-        sed -i '/SSL configuration for exim/i\tls_on_connect_ports=465' /etc/exim4/exim4.conf.template
143
+    if grep -q '# login_saslauthd_server' $tls_auth_config_file; then
144
+        sed -i '/login_saslauthd_server/,/.endif/ s/# *//' $tls_auth_config_file
145
+    fi
146
+    if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
147
+        if ! grep -q "MAIN_TLS_CERTKEY = /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem" $tls_config_file; then
148
+            sed -i "/.ifdef MAIN_TLS_CERTKEY/i\MAIN_TLS_CERTKEY = /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem" $tls_config_file
149
+        fi
150
+    fi
151
+    if [ -f /etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key ]; then
152
+        if ! grep -q "MAIN_TLS_PRIVATEKEY = /etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key" $tls_config_file; then
153
+            sed -i "/.ifdef MAIN_TLS_PRIVATEKEY/i\MAIN_TLS_PRIVATEKEY = /etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key" $tls_config_file
154
+        fi
143 155
     fi
144
-    if ! grep -q "# don't send system passwords" /etc/exim4/exim4.conf.template; then
145
-        sed -i "s|don't send system passwords.*|# don't send system passwords unencrypted|g" /etc/exim4/exim4.conf.template
156
+    if ! grep -q "SMTPLISTENEROPTIONS='-oX 465:25:587" /etc/default/exim4; then
157
+        sed -i "s|SMTPLISTENEROPTIONS=.*|SMTPLISTENEROPTIONS='-oX 465:25:587 -oP /var/run/exim4/exim.pid'|g" /etc/default/exim4
146 158
     fi
147 159
 }
148 160