1 /************************************************************************
2 * Copyright (c) 2000-2006 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;
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 match(Mail mail) {
34 if (mail.getSender() == null) {
35 return null;
36 }
37 String domain = mail.getSender().getHost();
38
39 Collection servers = getMailetContext().getMailServers(domain);
40 if (servers.size() == 0) {
41
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 log("Banned IP found for domain: " + domain);
62 log(" --> :" + servers.iterator().next().toString());
63 return mail.getRecipients();
64 } else {
65
66
67 return null;
68 }
69 }
70 }