On 2013-05-02 11:08:13 -0500, Noel Jones wrote:
> If the DNS lookup fails with a temporary error, the mail will be
> deferred.
>
> It's important to note that not all clients labeled as "unknown"
> will be rejected by reject_unknown_reverse_client_hostname.
>
> For enlightenment, compare the docs on
> reject_unknown_client_hostname (a strict test not widely used), with
> the docs on reject_unknown_reverse_client_hostname (a generally safe
> check).
[...]
In order to be sure, I decided to check against my mail archive.
I've written a small Perl script for that (attached). Some clients
don't seem to have a reverse hostname. Both IPv4 and IPv6 are
concerned. For instance:
Received: from carotte.tilapin.org (unknown [95.138.72.61])
by ioooi.vinc17.net (Postfix) with ESMTPS id EFA4959
for <[email protected]>; Tue, 2 Oct 2012 03:15:23 +0200 (CEST)
$ host 95.138.72.61
Host 61.72.138.95.in-addr.arpa. not found: 3(NXDOMAIN)
and this is from a Debian developer.
There's something that is quite strange with one of the mail I've
sent from my machine at work (ypig):
Received: from ypig.lip.ens-lyon.fr (unknown
[IPv6:2002:8c4d:d7f:1:21f:29ff:fe04:3efb])
by ioooi.vinc17.net (Postfix) with ESMTPS id A053EA4
for <[email protected]>; Tue, 12 Feb 2013 14:12:33 +0100 (CET)
An IPv6 address is listed while it was an IPv4 connection (IPv6
doesn't work at ens-lyon.fr as shown by "ping6" and "ssh -6" from
ypig to ioooi, which give a "Network is unreachable" error). It
seems to be the only exception for this machine (the IPv4 address
with the associated reverse hostname is normally given). Is there
any explanation?
Note: for this date, I no longer have any logs.
--
Vincent Lefèvre <[email protected]> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
#!/usr/bin/env perl
# List messages of a maildir folder which have been received from
# a client without a reverse hostname.
#
# 1st argument: name of the mail server receiving the messages.
# 2nd argument: directory (e.g. maildir folder).
use strict;
use AnyEvent::DNS;
use File::Find;
my ($proc) = '$Id: smtp-unknown-reverse 60197 2013-05-06 00:16:56Z vinc17/xvii
$'
=~ /^.Id: (\S+) / or die;
@ARGV == 2 or $! = 1, die "Usage: $proc <server> <maildir>\n";
my ($server,$dir) = @ARGV;
find(\&wanted, $dir);
sub check ($)
{
my ($ip) = $_[0] =~
/^Received:.*\(unknown\s+\[(.+)\]\)\s+by \Q$server\E\s/si
or return;
$ip =~ s/IPv6://;
my $cv = AnyEvent->condvar;
AnyEvent::DNS::reverse_lookup $ip, $cv;
defined $cv->recv or print "$File::Find::name [$ip]\n";
}
sub wanted
{
-f $_ or return;
open FILE, '<', $_
or die "$proc: can't open file $File::Find::name";
my $header;
while ((my $line = <FILE>) !~ /^$/)
{
if (defined $header)
{
$line =~ /^\s/ and $header .= $line, next;
check $header;
undef $header;
}
$line =~ /^Received:/i and $header = $line;
}
check $header if defined $header;
close FILE
or die "$proc: can't close file $File::Find::name";
}
# $Id: smtp-unknown-reverse 60197 2013-05-06 00:16:56Z vinc17/xvii $