I am looking for a quick way to determine whether the client and server
tls setting are at their default values. Something similar to the
attached patch perhaps.
Use case: If ssl support is requested by the user, I am hoping to issue
postfix tls all-default-client && postfix tls enable-client
postfix tls all-default-server && postfix tls enable-server
and enable tls out of the box during installation.
--
Eray
--- a/conf/postfix-tls-script 2016-02-10 12:13:55.686879914 +0000
+++ b/conf/postfix-tls-script 2016-02-10 13:55:10.133778381 +0000
@@ -143,6 +143,12 @@
# .sp
# The default \fIkeyfile\fR list consists of the two supported
# algorithms \fBrsa\fR and \fBecdsa\fR.
+# .IP "\fBall-default-client\fR"
+# Return 0 if all SMTP client TLS settings are at their default
+# values. Otherwise, return 1.
+# .IP "\fBall-default-server\fR"
+# Return 0 if all SMTP server TLS settings are at their default
+# values. Otherwise, return 1.
# CONFIGURATION PARAMETERS
# .ad
# .fi
@@ -219,6 +225,10 @@
ERROR="$LOGGER -p error"
FATAL="$LOGGER -p fatal"
+# smtp/smtpd settings to check (tls at default?)
+client_settings="use_tls enforce_tls tls_enforce_peername tls_security_level tls_cert_file"
+server_settings="use_tls enforce_tls tls_security_level tls_cert_file"
+
#
# Can't do much without these in place.
#
@@ -781,8 +791,7 @@
}
enable_client() {
- if all_default smtp_ \
- use_tls enforce_tls tls_enforce_peername tls_security_level tls_cert_file
+ if all_default smtp_ ${client_settings}
then
set -- \
"smtp_tls_security_level = may" \
@@ -810,8 +819,7 @@
algo=$1; shift
bits=$1; shift
- if all_default smtpd_ \
- use_tls enforce_tls tls_security_level tls_cert_file
+ if all_default smtpd_ ${server_settings}
then
# algo bits keyfile deploy [hostnames ...]
new_server_cert "${algo}" "${bits}" "" "enable" "$@" || return 1
@@ -1041,9 +1049,33 @@
fi
;;
+all-default-client)
+ cmd=$1; shift; OPTIND=1
+
+ # No arguments for all-default-client
+ if [ $# -ge "${OPTIND}" ]; then
+ $FATAL "usage: postfix tls $cmd"
+ exit 1
+ fi
+
+ all_default smtp_ ${client_settings} || exit 1
+ ;;
+
+all-default-server)
+ cmd=$1; shift; OPTIND=1
+
+ # No arguments for all-default-server
+ if [ $# -ge "${OPTIND}" ]; then
+ $FATAL "usage: postfix tls $cmd"
+ exit 1
+ fi
+
+ all_default smtpd_ ${server_settings} || exit 1
+ ;;
+
*)
$ERROR "unknown tls command: '$1'"
- $FATAL "usage: postfix tls enable-client (or enable-server, new-server-key, new-server-cert, deploy-server-cert, output-server-csr, output-server-tlsa)"
+ $FATAL "usage: postfix tls enable-client (or enable-server, new-server-key, new-server-cert, deploy-server-cert, output-server-csr, output-server-tlsa, all-default-client, all-default-server)"
exit 1
;;