RE: [Exim] relaying problems - URGENT

Top Page
Delete this message
Reply to this message
Author: Gatenby, Damon
Date:  
To: exim-users, 'Elliot Finley'
Subject: RE: [Exim] relaying problems - URGENT
Elliot,

This is awesome

Thank you very much for all of your help.

Damon Gatenby

> ----------
> From:     Elliot Finley
> Reply To:     Elliot Finley
> Sent:     Wednesday, October 16, 2002 2:57 PM
> To:     Gatenby, Damon; exim-users@???
> Subject:     Re: [Exim] relaying problems - URGENT

>
> Here is a general configuration for POP-B4-SMTP:
>
> change your host_accept_relay to something that includes a file.
>
> host_accept_relay = \
>                         127.0.0.1 : \
>                         A.B.C.0/24 : \
>                         E.F.G.0/23 : \
>                         /path/to/pop_b4_smtp

>
>
> The format for the pop_b4_smtp file will just have one IP per line as
> follows:
>
> 65.163.61.43
> 65.163.61.5
> 65.163.61.56
> 65.163.61.95
> 66.1.184.254
> 68.104.172.107
>
> So the last step is to generate the pop_b4_smtp file. Currently, my POP3
> daemon (which I wrote myself) generates this file for me. However, here
> is
> a Perl script that I wrote several years ago that will do the same thing
> by
> tailing a cucipop log file. You will need to hack it to work for whatever
> POP3 daemon you use. Just start the script running in the background when
> the system starts.
>
> #!/usr/bin/perl -w
> use strict;
> use File::Tail;
>
> #pop log
> my $poplog = "/var/log/maillog";
>
> #timeout in seconds
> my $timeout = 900;
>
> #output file
> my $outfile = '/path/to/pop_b4_smtp';
>
> #don't change anything below this
> #-------------------------------------------
> my $LOCK_SH = 1;
> my $LOCK_EX = 2;
> my $LOCK_NB = 4;
> my $LOCK_UN = 8;
> my (%ipList, $line, $ip, $seconds);
> my $logfile = File::Tail->new(name => $poplog,
>                               tail => -1);

>
> while(defined($line = $logfile->read)) {
>     #set the current time
>     $seconds = time();

>
>     if(($line !~ m/failure/) && ($line =~ m|\d+\.\d+\.\d+\.\d+|)) {
>         ($ip) = ($line =~ m|(\d+\.\d+\.\d+\.\d+)|);
>         $ipList{$ip} = $seconds;
>     }

>
>     #now go through and delete all timed out ip's
>     foreach $ip (keys(%ipList)) {
>         if($seconds - $ipList{$ip} > $timeout) {
>             delete $ipList{$ip};
>         }
>     }

>
>     #now print the ip's out to the $outfile
>     open(OUT, ">$outfile");
>     flock(OUT, $LOCK_EX);
>     seek(OUT, 0, 0); #just in case

>
>     while(($ip) = each(%ipList)) {
>         print OUT "$ip\n";
>     }
>     flock(OUT, $LOCK_UN);
>     close(OUT);
> }

>
>
>
>