On Tue, 22 Aug 2006 13:19:32 +0200 "tonix (Antonio Nati)" <[EMAIL PROTECTED]> 
wrote:

> > > > > I've noticed some spam sending hosts, which use e.g.
> > > > > localhost/ 127.0.0.1
> > > > > as their sender MX. When my mailserver tries to verify the
> > > > > sending account via bounce check (connecting to 127.0.0.1),
> > > > > the rcpt to: check is ok, because chkuser accepts "unknown"
> > > > > rcpt to's from localhost. Is there a settings to get rid of
> > > > > that?
> > > >
> > > > Better would be a patch to qmail-smtpd that only accepted
> > > > localhost and 127.0.0.1 as the HELO name on connections from
> > > > 127.0.0.1.  I don't know enough about chkuser to answer your
> > > > original question.
> > >
> > >This would be one possibility but in this case the mail is already
> > >in the local queue - what we try to prevent. I think an extended
> > >chkuser patch is the better way. While chkuser already checks for
> > >an existing MX-record it could easily test the received A-Record
> > >against 127.0.0.0/8, RFC1918 or in case of a fqdn is it resolveable
> > >at all.
> > 
> > If you send me more details on how check should be done, I could try
> > to put in in 2.0.10 version of chkuser.

My comment above was not quite correkt. I suggest to realize it this
way:

1) Test for a valid MX-RR (RFC 1035, para. 3.3.9)

   A MX-Record must contain a host name, not an IP address.

   This could be a compile time option (MX_STRICT_FQDN_CHECK ;-)
   log rejects with meaningful messages
   (e.g. "Sender MX (domain.tld MX=1.2.3.4) violates RFC1035, 3.3.9"

2) Do an A-RR lookup with the acquired fqdn and test the resolved IP
   against any of the following scopes[0] (reject on match).

   "Private Use" IP addresses:

        10.0.0.0 - 10.255.255.255
        172.16.0.0 - 172.31.255.255
        192.168.0.0 - 192.168.255.255

   "Autoconfiguration" IP Addresses:

        169.254.0.0 - 169.254.255.255

   "Loopback" IP addresses:

        127.0.0.0 - 127.255.255.255

   log rejects with meaningful messages
   (e.g. "Sender MX (fastmail.com -> MX=we-dont-accept-mail.fastmail.com -> 
A=127.0.0.1) never reachable")

   This could be compile time option(s) too or (what I prefer) a file
   loaded at runtime (e.g. $QMAIL_ROOT/control/chkuser_bad_mx_ip). The
   latter solution lets you add or remove ranges without recompiling
   (e.g. for smtpds in private LANs)

   Example for 'chkuser_bad_mx_ip' (I prefer the CIDR notation)
   ,-----
   | # do we need comments? would be really nice ;-)
   | # RFC1018
   | 10.0.0.0/8
   | 172.16.0.0/12
   | 192.168.0.0/16
   | 
   | # windows auto config range
   | 169.254.0.0/16
   | 
   | # loopback
   | 127.0.0.0/8
   | 
   | # this is my day off ;-)
   | 0.0.0.0/0
   `-----


Problem: How do we handle multiple MX records? I think we only take care
of the best prioritized record because this is the one nearly always
used.

regards
 Lars

[0] http://www.iana.org/faqs/abuse-faq.htm#SpecialUseAddresses

Reply via email to