mirror of
https://github.com/darold/sendmailanalyzer.git
synced 2026-05-15 22:02:32 -06:00
Fix direction in cache, changes from sendmailanalyzer was not reported into set_direction.
This commit is contained in:
parent
7ea5dd79d0
commit
76cda01d9f
1 changed files with 43 additions and 47 deletions
90
sa_cache
90
sa_cache
|
|
@ -4139,65 +4139,61 @@ sub set_direction
|
|||
my $direction = 'Int_';
|
||||
|
||||
###### Check for sender origine
|
||||
# This host is a gateway and it forward mails to an internal hub
|
||||
if (!$CONFIG{MAIL_GW} && $CONFIG{MAIL_HUB}) {
|
||||
# if message doesn't come from localhost it comes from outside
|
||||
$direction = 'Ext_' if ($STATS->{$id}{sender_relay} ne 'localhost');
|
||||
# This host received mails from any side
|
||||
} elsif (!$CONFIG{MAIL_GW} && !$CONFIG{MAIL_HUB}) {
|
||||
# The message is not internal
|
||||
if ($STATS->{$id}{sender_relay} ne 'localhost') {
|
||||
# Check if sender relay match any of our domains
|
||||
if (exists $CONFIG{LOCAL_HOST_DOMAIN}{$hostname} && ($#{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}} > -1) ) {
|
||||
if (!grep($STATS->{$id}{sender_relay} =~ /\b$_$/i, @{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}})) {
|
||||
$direction = 'Ext_';
|
||||
if ($STATS->{$id}{sender_relay}) {
|
||||
# This host is a gateway and it forward mails to an internal hub or outside
|
||||
if (!$CONFIG{MAIL_GW} && $CONFIG{MAIL_HUB}) {
|
||||
if (!grep($STATS->{$id}{sender_relay} =~ /$_/i, split(/[\s\t,;]/, $CONFIG{MAIL_HUB}))) {
|
||||
# if message doesn't come from localhost or user defined loca relay it comes from outside
|
||||
if (exists $CONFIG{LOCAL_HOST_DOMAIN}{$hostname} && ($#{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}} > -1) ) {
|
||||
$direction = 'Ext_' if (!grep($STATS->{$id}{sender_relay} =~ /\b$_$/, 'localhost', @{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}}));
|
||||
} elsif (exists $CONFIG{LOCAL_DOMAIN} && ($#{$CONFIG{LOCAL_DOMAIN}} > -1)) {
|
||||
$direction = 'Ext_' if (!grep($STATS->{$id}{sender_relay} =~ /\b$_$/, 'localhost', @{$CONFIG{LOCAL_DOMAIN}}));
|
||||
}
|
||||
}
|
||||
if (exists $CONFIG{LOCAL_DOMAIN} && ($#{$CONFIG{LOCAL_DOMAIN}} > -1)) {
|
||||
if (!grep($STATS->{$id}{sender_relay} =~ /\b$_$/i, @{$CONFIG{LOCAL_DOMAIN}})) {
|
||||
$direction = 'Ext_';
|
||||
}
|
||||
} else {
|
||||
# There's no local domain defined: impossible to know where message comes from
|
||||
# Maybe you must review you configuration file or write som pieces of code here
|
||||
}
|
||||
# This host received all messages from a gateway
|
||||
} elsif ($CONFIG{MAIL_GW} && !$CONFIG{MAIL_HUB}) {
|
||||
# If sender relay is the gateway, it comes from outside
|
||||
$direction = 'Ext_' if (grep($STATS->{$id}{sender_relay} =~ /$_/i, split(/[\s\t,;]/, $CONFIG{MAIL_GW}) ));
|
||||
# This host is a hub, it received all messages from a gateway and forward them to other host
|
||||
} elsif ($CONFIG{MAIL_GW} && $CONFIG{MAIL_HUB}) {
|
||||
# If sender relay is the gateway, it comes from outside
|
||||
$direction = 'Ext_' if (grep($STATS->{$id}{sender_relay} =~ /$_/i, split(/[\s\t,;]/, $CONFIG{MAIL_GW})));
|
||||
}
|
||||
# This host received all messages from a gateway
|
||||
} elsif ($CONFIG{MAIL_GW} && !$CONFIG{MAIL_HUB}) {
|
||||
# If sender relay is the gateway, it comes from outside
|
||||
$direction = 'Ext_' if (grep($STATS->{$id}{sender_relay} =~ /$_/i, split(/[\s\t,;]/, $CONFIG{MAIL_GW}) ));
|
||||
# This host is a hub, it received all messages from a gateway and forward them to other host
|
||||
} elsif ($CONFIG{MAIL_GW} && $CONFIG{MAIL_HUB}) {
|
||||
# If sender relay is the gateway, it comes from outside
|
||||
$direction = 'Ext_' if (grep($STATS->{$id}{sender_relay} =~ /$_/i, split(/[\s\t,;]/, $CONFIG{MAIL_GW})));
|
||||
} else {
|
||||
$direction = 'Unk_';
|
||||
}
|
||||
|
||||
###### Now check for destination
|
||||
# If the recipient relay is localhost, it should be distributed internally
|
||||
if (grep(/^$STATS->{$id}{rcpt_relay}[$i]$/, 'localhost')) {
|
||||
$direction .= 'Int';
|
||||
# If this host is a mail gateway and the recipient relay match one of
|
||||
# our destination hub lets say it should be distributed internally
|
||||
} elsif ($CONFIG{MAIL_HUB} && (grep($STATS->{$id}{rcpt_relay}[$i] =~ /$_/, split(/[\s\t,;]/, $CONFIG{MAIL_HUB}) )) ) {
|
||||
$direction .= 'Int';
|
||||
# If the recipient relay match any of our local domain
|
||||
# lets say the mail should be distributed internally
|
||||
} elsif (exists $CONFIG{LOCAL_HOST_DOMAIN}{$hostname} && ($#{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}} > -1) ){
|
||||
if (grep($STATS->{$id}{rcpt_relay}[$i] =~ /\b$_$/i, @{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}})) {
|
||||
if ($STATS->{$id}{rcpt_relay}[$i]) {
|
||||
# If the recipient relay is localhost, it should be distributed internally
|
||||
if ($STATS->{$id}{rcpt_relay}[$i] eq 'localhost') {
|
||||
$direction .= 'Int';
|
||||
# If this host is a mail gateway and the recipient relay match one of
|
||||
# our destination hub lets say it should be distributed internally
|
||||
} elsif ($CONFIG{MAIL_HUB} && (grep($STATS->{$id}{rcpt_relay}[$i] =~ /$_/, split(/[\s\t,;]/, $CONFIG{MAIL_HUB}) )) ) {
|
||||
$direction .= 'Int';
|
||||
# If the recipient relay match any of our local domain
|
||||
# lets say the mail should be distributed internally
|
||||
} elsif (exists $CONFIG{LOCAL_HOST_DOMAIN}{$hostname} && ($#{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}} > -1) ){
|
||||
if (grep($STATS->{$id}{rcpt_relay}[$i] =~ /\b$_$/i, @{$CONFIG{LOCAL_HOST_DOMAIN}{$hostname}})) {
|
||||
$direction .= 'Int';
|
||||
} else {
|
||||
$direction .= 'Ext';
|
||||
}
|
||||
} elsif (exists $CONFIG{LOCAL_DOMAIN} && ($#{$CONFIG{LOCAL_DOMAIN}} > -1)) {
|
||||
if (grep($STATS->{$id}{rcpt_relay}[$i] =~ /\b$_$/i, @{$CONFIG{LOCAL_DOMAIN}})) {
|
||||
$direction .= 'Int';
|
||||
} else {
|
||||
$direction .= 'Ext';
|
||||
}
|
||||
# Finally his only way is to go outside
|
||||
} else {
|
||||
$direction .= 'Ext';
|
||||
}
|
||||
} elsif (exists $CONFIG{LOCAL_DOMAIN} && ($#{$CONFIG{LOCAL_DOMAIN}} > -1)) {
|
||||
if (grep($STATS->{$id}{rcpt_relay}[$i] =~ /\b$_$/i, @{$CONFIG{LOCAL_DOMAIN}})) {
|
||||
$direction .= 'Int';
|
||||
} else {
|
||||
$direction .= 'Ext';
|
||||
}
|
||||
# Finally his only way is to go outside
|
||||
} else {
|
||||
$direction .= 'Ext';
|
||||
$direction .= 'Unk';
|
||||
}
|
||||
|
||||
return $direction;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue