$POSTCONF="postconf";
open(POSTCONF, "$POSTCONF -d|") || die "cannot run $POSTCONF -d: !$\n";
while(<POSTCONF>) {
chop;
if (($name, $defval) = split(/\s+=\s+/, $_, 2)) {
$defval =~ s/&/\&/g;
$defval =~ s/</\</g;
$defval =~ s/>/\>/g;
$defval =~ s/\s+$//;
$defaults{$name} = $defval;
} else {
die "unexpected $POSTCONF output: $_\n";
}
}
close(POSTCONF) || die "$POSTCONF failed: $!\n";
$censored = <<EOF;
alias_database
alias_maps
command_directory
command_expansion_filter
config_directory
daemon_directory
default_database_type
default_rbl_reply
export_environment
forward_expansion_filter
forward_path
hash_queue_names
html_directory
import_environment
mail_release_date
mail_spool_directory
mail_version
mailbox_delivery_lock
mailq_path
manpage_directory
mydomain
myhostname
mynetworks
newaliases_path
parent_domain_matches_subdomains
proxy_read_maps
queue_directory
readme_directory
sendmail_path
smtpd_expansion_filter
virtual_mailbox_lock
EOF
for $name (split(/\s+/, $censored)) {
$defaults{$name} = "see \"postconf -d\" output";
}
$name = $defval = $text = $line = "";
while(<>) {
if (/^%PARAM/) {
if ($name) {
$defval = $defaults{$name} if (defined($defaults{$name}));
print "%PARAM $name $defval\n";
}
print $text;
$name = $defval = $text = $line = "";
do {
$_ =~ s/\s+$//;
$line .= " " . $_;
} while(($_ = <POSTCONF>) && /^../);
($junk, $class, $name, $defval) = split(/\s+/, $line, 4);
} else {
$_ =~ s/\s+$/\n/;
$text .= $_;
}
}
if ($name && $text) {
$defval = $defaults{$name} if (defined($defaults{$name}));
print "%PARAM $name $defval\n$text";
}