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
 	;;
 

Reply via email to