NDR strategy
Jan-Peter Koopmann
Jan-Peter.Koopmann at SECEIDOS.DE
Tue Feb 3 12:38:40 GMT 2004
Hi Martin,
> JP
>
> have you got this script and the exim settings? I'd love to
> setup this on our exim system.
sure. On the DC we use the following vbs script:
const FILENAME= "whitelist-adresses.txt" 'File
name for exporting data from AD
const LDAPQUERY=
"LDAP://yourserver/DC=intern,DC=youractivedirectory,DC=de" 'LDAP query
to Active Directory, where
Dim con, com, rs, fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(FILENAME, 2, True) ' ForReading = 1,
ForWriting = 2, ForAppending = 8
Set con = CreateObject("ADODB.Connection")
Set com = CreateObject("ADODB.Command")
con.Provider = "ADsDSOObject"
con.Open "Active Directory Provider"
Set com.ActiveConnection = con
com.CommandText = "select proxyAddresses from '" & LDAPQUERY & "'
where objectClass= 'user' or objectClass='group' order by sn "
com.Properties("Page Size") = 1000
Set rs = com.Execute
rs.MoveFirst
While Not rs.EOF
TProxyAddresses = rs.Fields("proxyAddresses")
If Not IsNull(TProxyAddresses) Then
TProxyAddressesCount = UBound(TProxyAddresses)
For i = 0 To TProxyAddressesCount
If LCase(Left(TProxyAddresses(i),4))="smtp" Then
f.Write lcase(trim(Mid(TProxyAddresses(i),6))) &
VBLf
End If
Next
End iF
rs.MoveNext
Wend
rs.Close
f.Close
wscript.quit
This script is running every 30 minutes. You will have to adjust the
LDAPQUERY to suit your DC structure of course. If whitelist-adresses.txt
differs from the old version we scp it to our exim server in the DMZ.
On that server we check for a new version, convert the .txt into a .map
and then convert that to a cdb. The .txt file has the format
Validemail at yourdomain.com
We simply change that to
validemail at yourdomain.com 1
and then convert this to a cdb using this little script (which we use
for all kinds of cdbs...)
#! /usr/bin/perl
while(<>) {
# skip comments
next if /^\s*#/;
# skip empty lines
next if /^\s*$/;
# chop off trailing newline
chop;
# delete leading whitespace
s/^\s+//;
# retrieve key and value from the input line
($key, $value) = split(/:\s*/, $_, 2);
# emit cdbmake input line
printf "+%d,%d:%s->%s\n", length($key), length($value), $key,
$value;
}
print "\n";
After this all you need to do is run cdbmake and store the cdb to the
location you want it.
In Exims configure (the incoming one obvisously) we define a domainlist
domainlist check_rcpt_domains = yourdomain1 : yourdomain2
Only mails for domains in this list will be checked against the
whitelist. In the rcpt_acl you need to put
accept domains = +check_rcpt_domains
endpass
message = user unknown
recipients = cdb;/usr/local/etc/exim/whitelist-rcpt.cdb
And that's it. Moreover we manually maintain a blacklist for the e-mails
that exist in the company but should not be able to receive mails from
the internet.
I hope this gives you a kick start.
Regards,
JP
More information about the MailScanner
mailing list