# Utility for searching and displaying queue information.
# Written by Matt Hubbard 15 August 2002
#
-# Copyright (c) The Exim Maintainers 2021
+# Copyright (c) The Exim Maintainers 2021 - 2023
+# SPDX-License-Identifier: GPL-2.0-or-later
+# See the file NOTICE for conditions of use and distribution.
# Except when they appear in comments, the following placeholders in this
# source are replaced when it is turned into a runnable script:
# Routine for extracting the UTC timestamp from message ID
# lifted from eximstat utility
-# Version 1.2
+# Version 1.3
use strict;
BEGIN { pop @INC if $INC[-1] eq '.' };
$base = 62;
};
-if ($ARGV[0] eq '--version') {
+if ($ARGV[0] eq '--version' || $ARGV[0] eq '-v') {
print basename($0) . ": $0\n",
"build: EXIM_RELEASE_VERSIONEXIM_VARIANT_VERSION\n",
"perl(runtime): $]\n";
chomp();
my $line = $_;
#Should be 1st line of record, if not error.
- if ($line =~ /^\s*(\w+)\s+((?:\d+(?:\.\d+)?[A-Z]?)?)\s*(\w{6}-\w{6}-\w{2})\s+(<.*?>)/) {
- my $msg = $3;
- $id{$msg}{age} = $1;
- $id{$msg}{size} = $2;
- $id{$msg}{from} = $4;
+ if ($line =~ /^\s*(?<age>\w+)
+ \s+(?<size>(?:\d+(?:\.\d+)?[A-Z]?)?)
+ \s*(?<msgid>(?:\w{6}-\w{6}-\w{2}|\w{6}-\w{11}-\w{4})) # old, 2023 msgid formats
+ \s+(?<from><.*?>)/x) {
+ my $msg = $+{msgid};
+ $id{$msg}{age} = $+{age};
+ $id{$msg}{size} = $+{size};
+ $id{$msg}{from} = $+{from};
$id{$msg}{birth} = &msg_utc($msg);
$id{$msg}{ages} = time - $id{$msg}{birth};
- if ($line =~ /\*\*\* frozen \*\*\*$/) {
- $id{$msg}{frozen} = 1;
- } else {
- $id{$msg}{frozen} = 0;
- }
+ $id{$msg}{frozen} = ($line =~ /\*\*\* frozen \*\*\*$/) ? 1 : 0;
while(<QUEUE> =~ /\s+(.*?\@.*)$/) {
push(@{$id{$msg}{rcpt}},$1);
}