1 |
diff -Nur smeserver-qpsmtpd-2.4.0/root/etc/e-smith/templates/var/service/qpsmtpd/config/relayclients/60myAppliances smeserver-qpsmtpd-2.4.0.bz8704/root/etc/e-smith/templates/var/service/qpsmtpd/config/relayclients/60myAppliances |
2 |
--- smeserver-qpsmtpd-2.4.0/root/etc/e-smith/templates/var/service/qpsmtpd/config/relayclients/60myAppliances 1970-01-01 01:00:00.000000000 +0100 |
3 |
+++ smeserver-qpsmtpd-2.4.0.bz8704/root/etc/e-smith/templates/var/service/qpsmtpd/config/relayclients/60myAppliances 2014-12-03 00:42:56.346024376 +0100 |
4 |
@@ -0,0 +1,37 @@ |
5 |
+{ |
6 |
+ use esmith::util::network qw( isValidIP ); |
7 |
+ use Net::IPv4Addr qw( ipv4_in_network ); |
8 |
+ |
9 |
+ my @relayclients = split /[,:]/, ${qpsmtpd}{UnauthenticatedRelayClients} || ''; |
10 |
+ return "# No relay clients are defined" unless (scalar @relayclients); |
11 |
+ |
12 |
+ foreach my $relayclients (@relayclients) |
13 |
+ { |
14 |
+ #start to find the local network range |
15 |
+ my $ndb = esmith::NetworksDB->open_ro(); |
16 |
+ my @localAccess; |
17 |
+ |
18 |
+ foreach ($ndb->local_access_spec()) |
19 |
+ { |
20 |
+ # If there's a / in the network string |
21 |
+ # then convert to CIDR notation |
22 |
+ if (m!/!) |
23 |
+ { |
24 |
+ my ($ip,$bits) = Net::IPv4Addr::ipv4_parse($_); |
25 |
+ push (@localAccess,"$ip/$bits"); |
26 |
+ } |
27 |
+ } |
28 |
+ |
29 |
+ foreach my $localAccess (@localAccess) |
30 |
+ { |
31 |
+ if (isValidIP($relayclients) && ipv4_in_network ("$localAccess",$relayclients)) |
32 |
+ { |
33 |
+ $OUT .= "$relayclients\n"; |
34 |
+ } |
35 |
+ else |
36 |
+ { |
37 |
+ $OUT .= "## $relayclients is not an IP or not in the localnetwork\n"; |
38 |
+ } |
39 |
+ } |
40 |
+ } |
41 |
+} |