[Greylist-users] network-enabled milter?

Deke Clinger dclinger at qualcomm.com
Fri Jul 11 20:26:22 PDT 2003


Greetings,

I'm trying out greylisting here starting today and wanted to offer a
suggestion that might be helpful at some sites. Currently relaydelay.pl uses
the Sendmail::Milter auto_setconn call to configure the milter listener.
Unfortunately this method doesn't support remote milters that are accessed
over the network.

http://search.cpan.org/author/CYING/Sendmail-Milter-0.18/Milter.pm says:


auto_setconn NAME [, SENDMAIL_CF_FILENAME]

This function automatically sets the connection information by parsing the
sendmail .cf file for the appropriate X line containing the connection
information for the NAME mail filter and calling setconn if it was
successful. It is provided as a helper function and does not exist in the
current Milter library.

Note: This connection information isn't useful for implementing a Milter that
resides on a machine that is remote to the machine running sendmail. In those
cases, you will want to set the connection information manually with setconn.


I've defined the $conn variable at the top of relaydelay.pl, commented the
call to auto_setconn and changed the usage accordingly (diff at the end of
this message). This change allows relaydelay to run configured for network use
(inet:3005 at warlock.qualcomm.com). It shouldn't break local sockets, either. Is
anyone else doing something like this?

So far (5-odd hours in, 47k+ rows in relaytofrom) everything appears to be
working properly. I've tested a single message (same triplet) against two mail
servers talking to the one milter and got the results I expected. I'm going to
post another message with some errors I'm seeing (with $verbose and -w on) but
so far everything looks pretty solid.

Thanks for reading.

Deke Clinger
Postmaster
Qualcomm Incorporated
San Diego, CA


------------------------------diff starts here------------------------------

1c1
< #!/usr/bin/perl
---
> #!/prj/postmaster/greylist/ActivePerl-5.8/bin/perl -w
48d47
< my $config_file = "/etc/mail/relaydelay.conf";
49a49
> my $config_file = "/prj/postmaster/greylist/relaydelay.conf";
50a51
>
57c58
< my $verbose = 1;
---
> my $verbose = 0;
58a60,62
> # Connection information
> my $conn="inet:3005\@warlock.qualcomm.com";
>
844,847c848,851
<   if (scalar(@ARGV) < 2) {
<     print "Usage: perl $0 <name_of_filter> <path_to_sendmail.cf>\n";
<     exit;
<   }
---
>     if (scalar(@ARGV) < 1) {
> 	print "Usage: perl $0 <name_of_filter>\n";
> 	exit;
>     }
849c853
<   my $conn = Sendmail::Milter::auto_getconn($ARGV[0], $ARGV[1]);
---
>     print "Connection: $conn\n";
851,852d854
<   print "Found connection info for '$ARGV[0]': $conn\n";
<
867,869c869,891
<   if (not Sendmail::Milter::auto_setconn($ARGV[0], $ARGV[1])) {
<     print "Failed to detect connection information.\n";
<     exit;
---
> ## from http://search.cpan.org/author/CYING/Sendmail-Milter-0.18/Milter.pm:
> ##
> ## auto_setconn NAME [, SENDMAIL_CF_FILENAME]
> ##
> ## This function automatically sets the connection information by parsing
> ## the sendmail .cf file for the appropriate X line containing the
> ## connection information for the NAME mail filter and calling setconn if
> ## it was successful. It is provided as a helper function and does not
> ## exist in the current Milter library.
> ##
> ## Note: This connection information isn't useful for implementing a
> ## Milter that resides on a machine that is remote to the machine running
> ## sendmail. In those cases, you will want to set the connection
> ## information manually with setconn.
>
> #   if (not Sendmail::Milter::auto_setconn($ARGV[0], $ARGV[1])) {
> #     print "Failed to detect connection information.\n";
> #     exit;
> #   }
>
>   if (not Sendmail::Milter::setconn("$conn")) {
>       print "Failed to set up connection: $?\n";
>       exit;



More information about the Greylist-users mailing list