###############################################################################
#use strict;
-use 5.010;
+#use 5.010;
use Errno;
use FileHandle;
use Socket;
s/Delivered\s+\d+/Delivered nnn/;
+ # ======== Values in spool space failure message ========
+ s/space=\d+ inodes=[+-]?\d+/space=xxxxx inodes=xxxxx/;
+
+
# ======== Filter sizes ========
# The sizes of filter files may vary because of the substitution of local
# filenames, logins, etc.
die "** Cannot run $parm_exim: $!\n";
while(<EXIMINFO>)
{
+ if (my ($version) = /^Exim version (\S+)/) {
+ my $git = `git describe --dirty=-XX --match 'exim-4*'`;
+ if (defined $git and $? == 0) {
+ chomp $git;
+ $version =~ s/^\d+\K\./_/;
+ $git =~ s/^exim-//i;
+ $git =~ s/.*-\Kg([[:xdigit:]]+(?:-XX)?)/$1/;
+ print "\n*** Version mismatch (Exim: $version vs. GIT: $git). ***\n\n"
+ if not $version eq $git;
+ }
+ }
$parm_eximuser = $1 if /^exim_user = (.*)$/;
$parm_eximgroup = $1 if /^exim_group = (.*)$/;
$parm_trusted_config_list = $1 if /^TRUSTED_CONFIG_LIST:.*?"(.*?)"$/;
# Use private IP addresses if there are no public ones.
-$parm_ipv4 //= '172.10.10.1';
-$parm_ipv6 //= 'fd0a:c2ea:abfa::1';
+$parm_ipv4 = '172.10.10.1' if not defined $parm_ipv4;
+$parm_ipv6 = 'fd0a:c2ea:abfa::1' if not defined $parm_ipv6;
# If either type of IP address is missing, we need to set the value to
# something other than empty, because that wrecks the substitutions. The value
# Find the host name, fully qualified.
chomp($temp = `hostname`);
-$parm_hostname = (gethostbyname($temp))[0] // $temp;
-$parm_hostname = "no.host.name.found" if $parm_hostname eq "";
+die "'hostname' didn't return anything\n" unless defined $temp and length $temp;
+$parm_hostname = (gethostbyname($temp))[0];
+$parm_hostname = "no.host.name.found" unless defined $parm_hostname and length $parm_hostname;
print "Hostname is $parm_hostname\n";
if ($parm_hostname !~ /\./)