Re: Heads up for users of spamhaus

2006-10-06 Thread Waitman Gobble
The order was to ICANN regarding the domain name. It is a curious
situation though.



Waitman


James Turnbull wrote:
 Matt Sergeant wrote:
 http://wordtothewise.com/Spamhaus_ICANN_order.html

 If you're using sbl-xbl, consider temporarily switching to cbl until
 this blows over.
 
 The order is essentially meaningless though isn't it?  The associated
 judgement is unenforceable because Spamhaus isn't under the jurisdiction
 of US law - it's a UK entity.  If Linhardt wants to stop them he is
 going to have to file the same case in a UK court and the laws regarding
 spam in the UK are considerably different.
 
 Regards
 
 James Turnbull
 


Re: [Waitman] Re: my plugin - comments requested

2004-06-03 Thread Waitman Gobble


Peter J. Holzer wrote:
There are quite a few people who rent a server in a different country
(bandwidth is still a lot cheaper in the US or Germany than in Austria,
for example) or who have registered domains in different countries
because they look cooler (e.g. the .to top level domain).
 

Good point. But I do like the SPF idea - that should fix this. 
Whitelist if you have SPF set up for your domain, and if your mail is 
coming from where you say it is supposed to be coming from.

The country match thingy is just an attempt to seperate the bogus bs 
mail. I don't mind getting email that is genuine, even if it is trying 
to sell something - or otherwise commercial. I really hate email that 
forged, or otherwise deceptive. I personally don't see alot of this 
coming out of the better part of europe, and this issue hadn't occured 
to me. I honestly don't want to get to whitelisting/blacklisting 
specific geographic locations, that isn't my intention. And 500 before 
data is essential. Sticking the scrap mail in a separate folder isn't 
very exciting. Will have to think about it.

2.  Keep track of ips that send multiple from domains. And black-list 
those.
   

This is true for just about any ISP. Even my private server (which has
only one user) sends mail with 3 or 4 different from domains.
hp
 

Exactly. I am in the same boat. I don't necessarily block everything 
that has multiple domains. And automating this would be difficult. But I 
do look at multiple domains per IP and the ones that are obviously _not_ 
legitimate I add to the list. This currently accounts for less than 1% 
of my spam.

Waitman



Re: [Waitman] Re: dnsbl lists Was: my plugin - comments requested

2004-06-03 Thread Waitman Gobble
James Craig Burley wrote:
Isn't SPF dependent on DNS?  If so, it's not really decentralized, is it?
 

Hmmm, well I suppose the root nameservers are centralized. These are the 
master phone books that tell clients where to go to lookup the number, 
etc. However, the DNS record for each domain itself is manageable by 
anyone who has a domain. There are large records spread out over 
multiple networks via delegation, and small records that are handled by 
a primary and secondary host. If one chooses to allow their ISP or some 
other service to manage their DNS record, that is an option.

Before I got my hands dirty with DNS it seemed large and complicated and 
difficult. But it really isn't all that complicated. Especially for just 
a single domain that might have a few records. Absolutely there are 
larger more complicated setups, especially when you have several 
networks under one domain, and perhaps even dislocated subnets on 
non-octet boundaries, and you want to delegate forward and reverse 
authority to various departments, customers, etc.

For SPF: As long as you identify potential mx hosts and publish this 
information in the TXT record then life will be swell. If you have a web 
site on a domain that is not used for email, then you can specify that 
NO hosts are allowed to send email from that domain.

Having mail that relies on DNS isn't worrysome. The thing has to figure 
out where to route it anyhow - it is already dependent on DNS. There are 
already multiple queries performed per processed email. If speed is an 
issue then it is usually wise to run a cacheing server on the mail host. 
IMHO. One potential bottleneck using DNS has to do with the fact that 
DNS uses UDP. If you stuff a lot of TXT info in your record this can 
cause an issue. But that issue is as old as the hills, perhaps may never 
change.

It is true that SPF use isn't widespread. But ISPs with large consumer 
bases such as AOL and Earthlink have set it up. And thousands of other 
domains have it. Soon they will actually use it to determine if mail 
will pass through. They _may_ be using it now to (partially?) assign a 
spam score, that is not documented anywhere that I currently know about.

To date, I have not seen a more elegant solution to curb domain 
hijacking. - a form of identity theft IMHO. It really doesn't reduce 
SPAM, but it does reduce SPAM from bogus addresses sent from 
unauthorized hosts.

I am not sure how false-positives would be an issue, but I am not 
discounting the potential. When a message comes in, the source ip and 
the from address are known. Or perhaps there is no from address at all 
(ie bounce), and the helo domain (would/could) be used. SPF either 
doesn't exist, it exists and the host is valid, or it exists and the 
host is invalid. There are a few other possibilities for status. It is 
up to the receiving mail server to decide whether or not to process the 
mail - or perhaps handle it differently - based on this information.

So, from my point of view, this is a system that gives domain owners a 
choice to publish and what to publish, and people with mail servers a 
choice whether or not (and how to) use the information.

Best regards
Waitman


Re: [Waitman] Re: dnsbl lists Was: my plugin - comments requested

2004-06-03 Thread Waitman Gobble
Waitman Gobble wrote:
SRS doesn't appear to me to be that exciting at the moment. It is an 
attempt to
encrypt the return path so that legit bounce-backs get passed through. 
The
problem is that it appears to me that the encrypted return path 
doesn't change.
So if you know the SRS header is
[EMAIL PROTECTED]

you can send me a whole bunch of pretend bounce backs. And basically 
this
header will definitely be available on every newsgroup and message board.

From what I understand, they realize this issue and are working it out.
I was wrong about that. I just read over the document regarding SRS. It 
includes the timestamp in the encrypted part, so bounces would only come 
in within a configured time frame. If you set you limit to 8 days, and a 
spammer gets ahold of you SRS address, they could send you fake 
bounce-backs for a maximum of 8 days.

I had mistakenly thought that only the source address was used to 
generate the encrypted part, and further misunderstood a reply I 
received this morning about it.

Waitman



Re: [Waitman] Re: my plugin - comments requested

2004-06-02 Thread Waitman Gobble

Hello,
It isn't perfect. And it is just tinkering. I make sure to put my name 
and phone number on the error messages. When I ran the test earlier this 
year, one person called. He said he was trying to send me an 
advertisement ;-) and that the company was located in New Zealand or 
Australia however he was working out of San Diego.

The biggest flaw right now is that it uses the host name (from the email 
address) to determine the IP. It really needs to look up the MX record 
and use that for the domain check. I am pretty sure I had it set that 
way when I built the first version. However it seems I overlooked that 
on this go-around. One example where it doesn't work is prodigy.net - 
they don't have an A record for prodigy.net.

Somebody pointed me to SPF. http://spf.pobox.com - This really looks 
good. I hope people start using it, would be a good solution. I am 
adding SPF check to the plugin, right now it will just collect data. To 
see what kind of results I get.

Here are the latest stats from my this test:
Total 	3,187 	 
Country Mismatch (#1)
	1,658 	52.02 %
Well Known Mismatch (#3)
	590 	18.51 %
Blacklisted (#2)
	18 	0.56 %
Total Blocked 	2,266 	71.10 %


Take care
Waitman
Skaag Argonius wrote:
While I like number 2 and 3, I know for sure that number 1 is absolutely
flawed. You can't run a production mail server with this method without
losing customers for loss of important emails.
   Skaag

 




Re: [Waitman] Re: my plugin - comments requested

2004-06-02 Thread Waitman Gobble
exactly. my next tinker toy with qpsmtpd will be an smtp based 
accounting (money) system.

Waitman

Ask Bjørn Hansen wrote:
On Jun 1, 2004, at 12:46 PM, Waitman Gobble wrote:
Yesterday I ran across QPSMTPD and decided that it would be much 
better to implement my ideas in a plugin. The best thing is that I 
don't need three servers to do the work, like my original server.

That's great!  That it makes it easy to experiment with new things is 
exactly what's the most fun about qpsmtpd.

(That all the plugins people have made makes a really good spamkilller 
is merely a useful sideeffect ;-) )

 - ask



Re: [Waitman] Re: dnsbl lists Was: my plugin - comments requested

2004-06-02 Thread Waitman Gobble
[EMAIL PROTECTED] wrote:
I pretty much agree with you. But please don't discount the importance 
of a thing such as SPF. This thing is a decentralized, self-configured 
way to protect yourself from those nasty f's that blow out a bunch of 
spam using your domain. Every time I get a litterbox full of ndr bounces 
I feel like making my first trip outside north america for some 
heavy-action baseball bat educating. Of course, I always convince myself 
otherwise - but I have from time to time used babelfish to translate 
every foul language word I can think of and email it to the responsible 
sys admins.

Waitman

	My personal philosophy is that spam control should not be
dependent on anyone else. That means no dnsbl lists at all. It also means
that whatever I do, I have to guarantee that legit email can get through.
On top of that, it also means that I don't approve of SPF, DCC,
greylisting, Domain Keys, and everything else that penalizes legitimate
users.
 




my plugin - comments requested

2004-06-01 Thread Waitman Gobble
Hello
Back in February 2004 I had some ideas of blocking SPAM. Not sure if 
other people have had the same ideas, but it seems to work pretty good.

I originally hacked together my own SMTP server in C++, however it 
wasn't exactly production quality. I pointed some domains at it and ran 
a test with about 70,000 emails. It blocked about 70% of the crap 
before allowing DATA.

Yesterday I ran across QPSMTPD and decided that it would be much better 
to implement my ideas in a plugin. The best thing is that I don't need 
three servers to do the work, like my original server.

I am not a super expert at PERL, and QPSMTPD is new stuff for me. So 
please let me know if I have done something terribly wrong. After 1400 
emails it appears to be working properly.

Here are my ideas
1. Compare the country of the originating IP address to the country of 
the domain in the from address. Basically want to dump email that 
claims to be from a US company/domain but originates out of China, 
etc. and vice-versa.

2.  Keep track of ips that send multiple from domains. And black-list 
those.

3.  If the from address is a well-known mail service such as yahoo, 
hotmail, msn, aol, etc. Then the connecting IP has to be on their network.

Right now the black list thingy is somewhat manual, I made a simple PHP 
script that shows me ips that have sent messages with from  addresses 
of multiple domains in the past 24 hours. Then I decide whether or not 
to block the ip. But this could be automated down the road I suppose.

My plugin uses MySQL / DBI and GeoIP from maxmind.com
Below is my code, etc.
Best Regards
Waitman Gobble
EMK Design
http://emkdesign.com/
714 522 2528
 SQL table structure
# 
#
# Table structure for table `blocker`
#
CREATE TABLE `blocker` (
 `idx` int(10) unsigned NOT NULL auto_increment,
 `ip` char(32) NOT NULL default '',
 `sequence` datetime NOT NULL default '-00-00 00:00:00',
 PRIMARY KEY  (`idx`)
) TYPE=MyISAM;
# 
#
# Table structure for table `checks`
#
CREATE TABLE `checks` (
 `idx` int(10) unsigned NOT NULL auto_increment,
 `mail_from` char(128) NOT NULL default '',
 `ip` char(32) NOT NULL default '',
 `reverse_dns` char(128) NOT NULL default '',
 `country_from` char(2) NOT NULL default '',
 `country_ip` char(2) NOT NULL default '',
 `approval` tinyint(3) unsigned NOT NULL default '0',
 `bulk_check` tinyint(3) unsigned NOT NULL default '0',
 `blist` tinyint(3) unsigned NOT NULL default '0',
 `sequence` datetime NOT NULL default '-00-00 00:00:00',
 PRIMARY KEY  (`idx`)
) TYPE=MyISAM;

 the plugin plugins/check_country
use DBI;
use Geo::IP;

sub register {
 my ($self, $qp) = @_;
 $self-register_hook(mail, check_country);
}
sub check_country {
 my ($self, $transaction, $sender) = @_;
 my $host = lc $sender-host;
 my $client_ip = $self-qp-connection-remote_ip;
my @numbers = split(/\./, $client_ip);
my $ip_number = pack(C4, @numbers);
my ($hostname) = (gethostbyaddr($ip_number, 2))[0];
if ($hostname eq ) { $hostname=unknown;}
#check to see if from large email provider (msn, aol, yahoo, hotmail)
my $allowed=1;
if ($host =~ /aol.com/)
{
   if ($hostname =~ /aol.com/)
   {
   #
   } else {
   $allowed=0;
   }
}
if ($host =~ /msn.com/)
{
   if ($hostname =~ /msn.com/)
   {
   #
   } else {
   $allowed=0;
   }
   }
if ($host =~ /yahoo.com/)
{
   if ($hostname =~ /yahoo.com/)
   {
   #
   } else {
   $allowed=0;
   }
}
if ($host =~ /hotmail.com/)
{
   if ($hostname =~ /hotmail.com/)
   {
   #
   } else {
   $allowed=0;
   }
}
my $gi = Geo::IP-open(/usr/local/share/GeoIP/GeoIP.dat, GEOIP_STANDARD);
my $country = $gi-country_code_by_name($client_ip);
my $checkcountry = $gi-country_code_by_name($host);
if ($country eq ) { $country='UN'; }
if ($checkcountry eq ) { $checkcountry='XX'; }
my $compare= ($country eq $checkcountry);
   my $dbh = DBI-connect(dbi:mysql:mailer:localhost, username, 
password);

my $sth= $dbh-prepare (qq/
   SELECT idx FROM blocker WHERE ip=?
/);
$sth-execute($client_ip);
my $rv = $sth-rows;
   $sth= $dbh-prepare(qq/
   INSERT INTO checks 
(mail_from,ip,reverse_dns,country_from,country_ip,approval,bulk_check,blist,sequence) 
VALUES (?,?,?,?,?,?,?,?,NOW())
/);

$sth-execute($host,$client_ip,$hostname,$checkcountry,$country,$compare,$allowed,$rv);
   $dbh-disconnect();
   if ($compare!=0  $allowed==1  $rv1)
{
 return (OK) ;
} else {
 return (DENY);
}
}

 NOTE add check_country to config/plugins after check_earlytalker 
and before count_unrecognized_commands

 mailstats.php
table border=1 cellspacing=0 cellpadding=3
?php
$conn=mysql_connect('localhost','username','password');
$db=mysql_select_db('mailer');
if (strlen($_REQUEST['bl'])0)
{
   $sql = INSERT INTO blocker (idx,ip,sequence) VALUES