1 /*****************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one *
3 * or more contributor license agreements. See the NOTICE file *
4 * distributed with this work for additional information *
5 * regarding copyright ownership. The ASF licenses this file *
6 * to you under the Apache License, Version 2.0 (the *
7 * "License"); you may not use this file except in compliance *
8 * with the License. You may obtain a copy of the License at *
9 * *
10 * http://www.apache.org/licenses/LICENSE-2.0 *
11 * *
12 * Unless required by applicable law or agreed to in writing, *
13 * software distributed under the License is distributed on an *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15 * KIND, either express or implied. See the License for the *
16 * specific language governing permissions and limitations *
17 * under the License. *
18 ****************************************************************/
19
20 package org.apache.james.transport.matchers;
21
22 import org.apache.mailet.GenericMatcher;
23 import org.apache.mailet.Mail;
24
25 import java.util.Collection;
26
27 /***
28 * Does a DNS lookup (MX and A/CNAME records) on the sender's domain. If
29 * there are no entries, the domain is considered fake and the match is
30 * successful.
31 *
32 */
33 public class SenderInFakeDomain extends AbstractNetworkMatcher {
34
35 public Collection match(Mail mail) {
36 if (mail.getSender() == null) {
37 return null;
38 }
39 String domain = mail.getSender().getHost();
40
41 Collection servers = getMailetContext().getMailServers(domain);
42 if (servers.size() == 0) {
43
44 log("No MX, A, or CNAME record found for domain: " + domain);
45 return mail.getRecipients();
46 } else if (matchNetwork(servers.iterator().next().toString())){
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 log("Banned IP found for domain: " + domain);
64 log(" --> :" + servers.iterator().next().toString());
65 return mail.getRecipients();
66 } else {
67
68
69 return null;
70 }
71 }
72 }