summaryrefslogtreecommitdiffabout
path: root/etc/mailfromd.rc
Side-by-side diff
Diffstat (limited to 'etc/mailfromd.rc') (more/less context) (ignore whitespace changes)
-rw-r--r--etc/mailfromd.rc25
1 files changed, 12 insertions, 13 deletions
diff --git a/etc/mailfromd.rc b/etc/mailfromd.rc
index f25cfb3..e19cac4 100644
--- a/etc/mailfromd.rc
+++ b/etc/mailfromd.rc
@@ -1,6 +1,6 @@
/* This is a sample filter for Mailfromd. -*- mfl -*-
Site administrators are urged to write nicer versions.
- Copyright (C) 2005, 2006, 2007, 2008 Sergey Poznyakoff
+ Copyright (C) 2005, 2006, 2007, 2008, 2009 Sergey Poznyakoff
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -24,14 +24,13 @@
#include_once <status.mfh>
#require dns
+#require rateok
set mailfrom_address "<>"
set ehlo_domain "your.domain"
-number gltime
-set gltime interval("1 hour")
-number need_greylist
-set need_greylist 0
+number gltime interval("1 hour")
+number need_greylist 0
func cachestr() returns string
do
@@ -45,10 +44,12 @@ done
prog envfrom
do
if $f = ""
- pass
- elif hostname ${client_addr} matches ".*(adsl|sdsl|hdsl|ldsl|dialin|dialup|ppp|dhcp|dynamic).*"
+ pass
+ elif dbmap("/etc/mail/whitelist.db", $client_addr)
+ accept
+ elif hostname($client_addr) matches ".*(adsl|sdsl|hdsl|ldsl|dialin|dialup|ppp|dhcp|dynamic).*"
reject 550 5.7.1 "Use your SMTP relay"
- elif hostname ${client_addr} matches ".*-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}.*"
+ elif hostname($client_addr) matches ".*-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}.*"
on poll host ${client_addr} for $f
do
when success:
@@ -58,7 +59,7 @@ do
when temp_failure:
tempfail 450 4.1.0 "Try again later"
done
- elif relayed hostname ${client_addr}
+ elif relayed(hostname($client_addr))
pass
elif $f mx fnmatches "*.yahoo.com"
or $f mx fnmatches "*.namaeserver.com"
@@ -74,7 +75,7 @@ do
done
fi
- if rate($f "-" ${client_addr}, interval("1 hour 30 minutes")) > 100
+ if not rateok($f "-" $client_addr, interval("1 hour 30 minutes"), 100)
tempfail 450 4.7.0 "Mail sending rate exceeded. Try again later"
fi
done
@@ -82,15 +83,13 @@ done
prog envrcpt
do
if %need_greylist
- and not dbmap("/var/run/whitelist.db", $client_addr)
if greylist($client_addr "-" $f "-" $rcpt_addr, %gltime)
if %greylist_seconds_left = %gltime
tempfail 450 4.7.0
"You are greylisted for " %gltime " seconds"
else
tempfail 450 4.7.0
- "Still greylisted for "
- %greylist_seconds_left " seconds"
+ "Still greylisted for " %greylist_seconds_left " seconds"
fi
fi
fi

Return to:

Send suggestions and report system problems to the System administrator.