X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/1a41defab20ca8a3472d9ba6cab57b40b2011a0a..a5ffa9b475a426bc73366db01f7cc92a3811bc3a:/src/src/exipick.src diff --git a/src/src/exipick.src b/src/src/exipick.src index 33054543f..4999d843f 100644 --- a/src/src/exipick.src +++ b/src/src/exipick.src @@ -1,8 +1,9 @@ #!PERL_COMMAND -# $Cambridge: exim/src/src/exipick.src,v 1.17 2010/03/23 14:06:48 jetmore Exp $ -# This variable should be set by the building process to Exim's spool directory. -my $spool = 'SPOOL_DIRECTORY'; +# This variables should be set by the building process +my $spool = 'SPOOL_DIRECTORY'; # may be overridden later +my $exim = 'BIN_DIRECTORY/exim'; + # Need to set this dynamically during build, but it's not used right now anyway. my $charset = 'ISO-8859-1'; @@ -11,6 +12,7 @@ my $charset = 'ISO-8859-1'; # http://www.exim.org/eximwiki/ToolExipickManPage use strict; +BEGIN { pop @INC if $INC[-1] eq '.' }; use Getopt::Long; my($p_name) = $0 =~ m|/?([^/]+)$|; @@ -80,7 +82,7 @@ GetOptions( 'show-tests' => \$G::show_tests # display tests as applied to each message ) || exit(1); -# if both freeze and thaw specified, only thaw as it is less desctructive +# if both freeze and thaw specified, only thaw as it is less destructive $G::freeze = undef if ($G::freeze && $G::thaw); freeze_start() if ($G::freeze); thaw_start() if ($G::thaw); @@ -112,7 +114,9 @@ $G::and = $G::and; # shut up -w $G::msg_ids = {}; # short circuit when crit is only MID $G::caseless = $G::caseful ? 0 : 1; # nocase by default, case if both @G::recipients_crit = (); # holds per-recip criteria -$spool = $G::spool if ($G::spool); +$spool = defined $G::spool ? $G::spool + : do { chomp($_ = `$exim -n -bP spool_directory`); + $_ // $spool }; my $input_dir = $G::input_dir || ($G::finput ? "Finput" : "input"); my $count_only = 1 if ($G::mailq_bpc || $G::qgrep_c); my $unsorted = 1 if ($G::mailq_bpr || $G::mailq_bpra || @@ -758,7 +762,7 @@ sub _decode_2047 { $i += 2; } } - elsif ($ow[$i] =~ /\s/) { # whitspace is illegal + elsif ($ow[$i] =~ /\s/) { # whitespace is illegal $e = 1; last; } @@ -956,6 +960,8 @@ sub _parse_header { $self->{_vars}{tls_cipher} = $arg; } elsif ($tag eq '-tls_peerdn') { $self->{_vars}{tls_peerdn} = $arg; + } elsif ($tag eq '-tls_sni') { + $self->{_vars}{tls_sni} = $arg; } elsif ($tag eq '-host_address') { $self->{_vars}{sender_host_port} = $self->_get_host_and_port(\$arg); $self->{_vars}{sender_host_address} = $arg; @@ -1019,6 +1025,12 @@ sub _parse_header { return($self->_error("incorrect format: $_")) if (length($2) != $3); $self->{_recips}{$1} = { pno => $4, errors_to => $2 }; $addr = $1; + } elsif (/^(\S*)\s(\S*)\s(\d+),(\d+)\s(\S*)\s(\d+),(-?\d+)#3$/) { + #print STDERR "exim4 new type #3 DSN (untested): $_\n"; + return($self->_error("incorrect format: $_")) + if ((length($2) != $3) || (length($5) != $6)); + $self->{_recips}{$1} = { pno => $7, errors_to => $5 }; + $addr = $1; } elsif (/^.*#(\d+)$/) { #print STDERR "exim4 #$1 style (unimplemented): $_\n"; $self->_error("exim4 #$1 style (unimplemented): $_"); @@ -1380,7 +1392,7 @@ Display only the message IDs (exiqgrep) =item --input-dir -Set the name of the directory under the spool directory. By defaut this is "input". If this starts with '/', the value of --spool is ignored. See also --finput. +Set the name of the directory under the spool directory. By default this is "input". If this starts with '/', the value of --spool is ignored. See also --finput. =item -l @@ -1420,7 +1432,8 @@ Same as '$shown_message_size eq ' (exiqgrep) =item --spool -Set the path to the exim spool to use. This value will have the argument to --input or 'input' appended, or be ignored if --input is a full path. +Set the path to the exim spool to use. This value will have the argument to --input or 'input' appended, or be ignored if --input is a full path. If not specified, exipick uses the value from C, and if this fails, the F +from build time (F) is used. =item --show-rules @@ -1488,7 +1501,7 @@ Boolean variables are checked simply by being true or false. There is no real o =item NUMERIC -Valid comparisons are <, <=, >, >=, ==, and !=. Numbers can be integers or floats. Any number in a test suffixed with d, h, m, s, M, K, or B will be mulitplied by 86400, 3600, 60, 1, 1048576, 1024, or 1 respectively. Examples of valid numeric tests: +Valid comparisons are <, <=, >, >=, ==, and !=. Numbers can be integers or floats. Any number in a test suffixed with d, h, m, s, M, K, or B will be multiplied by 86400, 3600, 60, 1, 1048576, 1024, or 1 respectively. Examples of valid numeric tests: '$message_age >= 3d' '$local_interface == 587' '$message_size < 30K' @@ -1502,7 +1515,7 @@ The string operators are =, eq, ne, =~, and !~. With the exception of '=', the =item NEGATION -There are many ways to negate tests, each having a reason for existing. Many tests can be negated using native operators. For instance, >1 is the opposite of <=1 and eq and ne are opposites. In addition, each individual test can be negated by adding a ! at the beginning of the test. For instance, '!$acl_m1 =~ /^DENY$/' is the same as '$acl_m1 !~ /^DENY$/'. Finally, every test can be specified by using the command line argument --not. This is functionally equivilant to adding a ! to the beginning of every test. +There are many ways to negate tests, each having a reason for existing. Many tests can be negated using native operators. For instance, >1 is the opposite of <=1 and eq and ne are opposites. In addition, each individual test can be negated by adding a ! at the beginning of the test. For instance, '!$acl_m1 =~ /^DENY$/' is the same as '$acl_m1 !~ /^DENY$/'. Finally, every test can be specified by using the command line argument --not. This is functionally equivalent to adding a ! to the beginning of every test. =back @@ -1794,6 +1807,10 @@ The cipher suite that was negotiated for encrypted SMTP connections. The value of the Distinguished Name of the certificate if Exim is configured to request one +=item S . $tls_sni + +The value of the Server Name Indication TLS extension sent by a client, if one was sent. + =item N + $warning_count The number of delay warnings which have been sent for this message.