KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > james > transport > matchers > SenderInFakeDomain


1 /***********************************************************************
2  * Copyright (c) 2000-2004 The Apache Software Foundation. *
3  * All rights reserved. *
4  * ------------------------------------------------------------------- *
5  * Licensed under the Apache License, Version 2.0 (the "License"); you *
6  * may not use this file except in compliance with the License. You *
7  * may obtain a copy of the License at: *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or *
14  * implied. See the License for the specific language governing *
15  * permissions and limitations under the License. *
16  ***********************************************************************/

17
18 package org.apache.james.transport.matchers;
19
20 import org.apache.mailet.GenericMatcher;
21 import org.apache.mailet.Mail;
22
23 import java.util.Collection JavaDoc;
24
25 /**
26  * Does a DNS lookup (MX and A/CNAME records) on the sender's domain. If
27  * there are no entries, the domain is considered fake and the match is
28  * successful.
29  *
30  */

31 public class SenderInFakeDomain extends AbstractNetworkMatcher {
32
33     public Collection JavaDoc match(Mail mail) {
34         if (mail.getSender() == null) {
35             return null;
36         }
37         String JavaDoc domain = mail.getSender().getHost();
38         //DNS Lookup for this domain
39
Collection JavaDoc servers = getMailetContext().getMailServers(domain);
40         if (servers.size() == 0) {
41             //No records...could not deliver to this domain, so matches criteria.
42
log("No MX, A, or CNAME record found for domain: " + domain);
43             return mail.getRecipients();
44         } else if (matchNetwork(servers.iterator().next().toString())){
45             /*
46              * It could be a wildcard address like these:
47              *
48              * 64.55.105.9/32 # Allegiance Telecom Companies Worldwide (.nu)
49              * 64.94.110.11/32 # VeriSign (.com .net)
50              * 194.205.62.122/32 # Network Information Center - Ascension Island (.ac)
51              * 194.205.62.62/32 # Internet Computer Bureau (.sh)
52              * 195.7.77.20/32 # Fredrik Reutersward Data (.museum)
53              * 206.253.214.102/32 # Internap Network Services (.cc)
54              * 212.181.91.6/32 # .NU Domain Ltd. (.nu)
55              * 219.88.106.80/32 # Telecom Online Solutions (.cx)
56              * 194.205.62.42/32 # Internet Computer Bureau (.tm)
57              * 216.35.187.246/32 # Cable & Wireless (.ws)
58              * 203.119.4.6/32 # .PH TLD (.ph)
59              *
60              */

61             log("Banned IP found for domain: " + domain);
62             log(" --> :" + servers.iterator().next().toString());
63             return mail.getRecipients();
64         } else {
65             // Some servers were found... the domain is not fake.
66

67             return null;
68         }
69     }
70 }
71
Popular Tags