MSA enhancement for access rules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I do a lot of email submission from my laptop on the road to our corporate email server.

Problem was that rate-control was based on IP addresses, which didn't give me the control that I wanted.

For instance, having the same ClientRate and ClientConn for myself using the submission port (587) as someone else using the smtp port (25) just because we both happened to be on an AT&T wifi hotspot made no sense.

So after an hour or so of investigation, I came up with the following ruleset changes.  It rocks.

The default config for sendmail.mc contains either:

DAEMON_OPTIONS(`Name=MTA-v4, Family=inet')dnl

or:

DAEMON_OPTIONS(`Port=smtp, Name=MTA')

if you're running an internet accessible relay, but if you also uncomment (via the 'dnl') from:

dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

you've also enabled the submission port.

This patch lets you search the access database for "ClientRate", "ClientConn", and "GreetPause" entries not just based on the IP address, but also on the name of the service ("MSA" versus "MTA" or "MTA-v4").

Hence if I add:

ClientConn:MSA			10
ClientRate:MSA			 0
GreetPause:MSA			 0

I've specified that for connections on the submission port (which are authenticated), I can have up to 10 simultaneous connections with no incoming connection rate limit and no initial greet-pause.

Which is a good thing, because my defaults are meant to be constraining:


ClientConn:                      1
ClientRate:                      2

and my sendmail.mc contains:

FEATURE(`greet_pause', `5000')dnl

which are very effective at throttling the Internet in general when someone tries to exploit our server as an open relay or even attempts a DoS attack on it.

(Note the last line could also have been done as: "GreetPause:    5" in my access file).

Now I can connect from wherever I like, and have the same defaults I get on the corporate network:

ClientConn:192.168.1		10
ClientRate:192.168.1		 0
GreetPause:192.168.1		 0

be applied on the road as well.

I hope you all find this patch useful. I've submitted it as a suggestion to the sendmail maintainers, but they tend to be conservative in accepting 'enhancements', so it might not be integrated.

-Philip
--- sendmail-cf/feature/greet_pause.m4.orig	2004-07-06 14:49:51.000000000 -0600
+++ sendmail-cf/feature/greet_pause.m4	2011-12-19 18:32:18.036025424 -0700
@@ -36,6 +36,7 @@ ifdef(`_ACCESS_TABLE_', `dnl
 R$+ $| $+		$: $>D < $1 > <?> <! GreetPause> < $2 >
 R   $| $+		$: $>A < $1 > <?> <! GreetPause> <>	empty client_name
 R<?> <$+>		$: $>A < $1 > <?> <! GreetPause> <>	no: another lookup
+R<?> <$*>		$: $>D < $&{daemon_name} > <?> <! GreetPause> < $1 >
 ifelse(len(X`'_ARG_),`1',
 `R<?> <$*>		$@',
 `R<?> <$*>		$# _ARG_')
--- sendmail-cf/m4/proto.m4.orig	2011-10-24 06:25:58.000000000 -0600
+++ sendmail-cf/m4/proto.m4	2011-12-19 18:34:58.113969993 -0700
@@ -2965,7 +2965,7 @@ ifdef(`_RATE_CONTROL_',`dnl
 ######################################################################
 SRateControl
 ifdef(`_ACCESS_TABLE_', `dnl
-R$*		$: <A:$&{client_addr}> <E:>
+R$*		$: <A:$&{client_addr}> <E:$&{daemon_name}> <E:>
 dnl also look up a default value via E:
 R$+		$: $>SearchList <! ClientRate> $| $1 <>
 dnl found nothing: stop here
@@ -2987,7 +2987,7 @@ ifdef(`_CONN_CONTROL_',`dnl
 ######################################################################
 SConnControl
 ifdef(`_ACCESS_TABLE_', `dnl
-R$*		$: <A:$&{client_addr}> <E:>
+R$*		$: <A:$&{client_addr}> <E:$&{daemon_name}> <E:>
 dnl also look up a default value via E:
 R$+		$: $>SearchList <! ClientConn> $| $1 <>
 dnl found nothing: stop here
-- 
users mailing list
users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
Have a question? Ask away: http://ask.fedoraproject.org
[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux