#!/bin/sh # Reports parameters that exist in postconf(1) output, but that are not # documented in the postconf(5) manpage. LANG=C; export LANG LC_ALL=C; export LC_ALL bin/postconf mail_version >/dev/null || exit 1 trap 'rm -f want.tmp have.tmp stoplist.tmp 2>/dev/null' 0 1 2 3 15 # Extract parameters from the postconf(5) manpage. awk '/^%PARAM/ { print $2 }' proto/postconf.proto | sort > have.tmp || exit 1 # Build a stoplist for postconf(1) output. # Eliminate unwanted dynamic parameter names for delivery agents. These # names are prefixed by their master.cf service name (they must instead # be documented with fake names that have the "transport_" prefix; that # is implemented later in this script). for xport in error lmtp local relay retry smtp virtual do cat <<EOF ${xport}_delivery_slot_cost ${xport}_delivery_slot_discount ${xport}_delivery_slot_loan ${xport}_destination_concurrency_failed_cohort_limit ${xport}_destination_concurrency_limit ${xport}_destination_concurrency_negative_feedback ${xport}_destination_concurrency_positive_feedback ${xport}_destination_rate_delay ${xport}_destination_recipient_limit ${xport}_extra_recipient_limit ${xport}_initial_destination_concurrency ${xport}_minimum_delivery_slots ${xport}_recipient_limit ${xport}_recipient_refill_delay ${xport}_recipient_refill_limit ${xport}_transport_rate_delay EOF done >stoplist.tmp # Eliminate other unwanted per-service parameters. #cat >>stoplist.tmp <<EOF #EOF # Eliminate unwanted auto-generated parameters that make no sense. cat >>stoplist.tmp <<'EOF' lmtp_tlsrpt_enable lmtp_tlsrpt_skip_reused_handshakes lmtp_tlsrpt_socket_name EOF # Build the list of parameter names that must have an entry in the # postconf(5) manpage. ( # First, extract parameters from postconf(1) output, using the stock # configurations. bin/postconf -dHc conf | grep -F -vx -f stoplist.tmp # Next, require that all dynamically-generated parameter names for delivery # agents are documented as transport_mumble. cat <<EOF transport_delivery_slot_cost transport_delivery_slot_discount transport_delivery_slot_loan transport_destination_concurrency_failed_cohort_limit transport_destination_concurrency_limit transport_destination_concurrency_negative_feedback transport_destination_concurrency_positive_feedback transport_destination_rate_delay transport_destination_recipient_limit transport_extra_recipient_limit transport_initial_destination_concurrency transport_minimum_delivery_slots transport_recipient_limit transport_recipient_refill_delay transport_recipient_refill_limit transport_transport_rate_delay EOF # Require that other per-service parameters are documented. cat <<EOF transport_time_limit EOF ) | sort >want.tmp || exit 1 # Report parameter names that have an implementation but no documentation. comm -23 want.tmp have.tmp