Possible aid in filtering spam

Ulf Zimmermann ulf at Alameda.net
Mon Oct 31 13:13:26 PST 2005


On Mon, Oct 31, 2005 at 12:57:26PM -0800, David Wolfskill wrote:
> On Mon, Oct 31, 2005 at 12:22:01PM -0800, Ulf Zimmermann wrote:
> > ...
> 
> > I have started rejecting HELO using my IP a longer time ago. Then I went
> > actually a step further and rejecting any HELO with an IP. Much spam software
> > which are using comprised hosts, don't look up their hostname but just use
> > the IP number.
> 
> That makes a certain amount of sense.....
> 
> > As I interpret the RFC 821, HELO is to follow by the hostname
> > and a hostname is not an IP address.
> 
> Well, RFC 821 is venerable, but it was superceded by RFC 2821 April
> 2001.
> 
> And on that topic, RFC 2821, in section 4.1.1.1  Extended HELLO (EHLO)
> or HELLO (HELO), has:
> 
>    These commands are used to identify the SMTP client to the SMTP
>    server.  The argument field contains the fully-qualified domain name
>    of the SMTP client if one is available.  In situations in which the
>    SMTP client system does not have a meaningful domain name (e.g., when
>    its address is dynamically allocated and no reverse mapping record is
> 
> Klensin                     Standards Track                    [Page 29]
> ^L
> RFC 2821             Simple Mail Transfer Protocol            April 2001
> 
>    available), the client SHOULD send an address literal (see section
>    4.1.3), optionally followed by information that will help to identify
>    the client system.  y The SMTP server identifies itself to the SMTP
>    client in the connection greeting reply and in the response to this
>    command.
>    ....
> 
> [The last-quoted sentence is not a transcription error on my part.]
> 
> And here's the part in section 4.1.3 Address Literals:
> 
>    Sometimes a host is not known to the domain name system and
>    communication (and, in particular, communication to report and repair
>    the error) is blocked.  To bypass this barrier a special literal form
>    of the address is allowed as an alternative to a domain name.  For
>    IPv4 addresses, this form uses four small decimal integers separated
>    by dots and enclosed by brackets such as [123.255.37.2], which
>    indicates an (IPv4) Internet Address in sequence-of-octets form.  For 
>    ....
> 
> Based on that, perhaps a plausible course of action would be (in response
> to HELO or EHLO):
> 
> * See if SMTP client is claiming the server's identity.  If so, reject.
> 
> * See if the identity claimed is an IPv4 dotted-quad.  If so:
>   * See if there's a PTR record for the IP address.  If so, reject.
>     [This is a bit enthusiastic, because we don't really know that
>     there's an A record that resolves to the IP address specified.]
> 
> A variant that is used for the (Postfix) MTA on mx1.freebsd.org is:
> * Examine the IP address that the SMTP client is using.
>   * Use gethostbyaddr() to obtain the canonical hostname for the address.
>     * Use gethostbyname() to resolve the hostname to a set of IP addresses.
>       * If the IP address that the SMTP client is currently using is not
>          among the IP addresses obtained, reject the mail (unless it's
>          for postmaster or one of the other "special" recipients).
> 
> * Examine the identity claimed in the HELO/EHLO command.
>   * If it's a hostname, use gethostbyname() to resolve it to a set of
>     IP addresses.
>     * If the IP address that the SMTP client is currently using is not
>        among the IP addresses obtained, reject the mail (unless it's
>        for postmaster or one of the other "special" recipients).
>   * If it's an IP address, use gethostbyaddr() to obtain the canonical
>     hostname for the address.
>     * Use gethostbyname() to resolve the hostname to a set of IP addresses.
>       * If the IP address that the SMTP client is currently using is not
>          among the IP addresses obtained, reject the mail (unless it's
>          for postmaster or one of the other "special" recipients).
> 
> At least that's my recollection at the moment.
> 
> > Yesterday my mail server rejected 6205
> > emails, 308 of those were based on HELO <IP>.
> 
> I'm not dealing with numbers quite that big -- ignoring the "did
> not issue MAIL/EXPN/VRFY/ETRN during connection to MTA" (which
> appears to be about 30% of the total for me), I usuaully have about
> 2K messages/day hit my SMTP server, and about 75% of those are
> rejected and 15% are silently discarded.  Since midnight, about 22% of
> today's rejects have been for trying to claim my SMTP server's identity
> during HELO.
> 
> [Maybe I should change the rejection message to read "I refuse to
> talk to myself." :-) ]
> 
> (I try to merely discard unwanted mail that was already accepted by a
> system that I consider "friendly" but for which I cannot cause the
> unwanted mail to be rejected when it hits that SMTP server.  Chief
> among these for me in mx1.freebsd.org.)
> 
> Peace,
> david

You just refreshed my memory, I did this based on RFC2821, rejecting
things like:

HELO xxx.xxx.xxx.xxx (where xxx can be any IP)
HELO [yyy.yyy.yyy.yyy] (if yyyy is my IP)

-- 
Regards, Ulf.

---------------------------------------------------------------------
Ulf Zimmermann, 1525 Pacific Ave., Alameda, CA-94501, #: 510-865-0204
You can find my resume at: http://seven.Alameda.net/~ulf/resume.html



More information about the Baylisa mailing list