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.services;
19
20 import java.util.Collection;
21 import java.util.Iterator;
22
23 /***
24 * Provides abstraction for DNS resolutions. The interface is Mail specific.
25 * It may be a good idea to make the interface more generic or expose
26 * commonly needed DNS methods.
27 *
28 */
29 public interface DNSServer {
30
31 /***
32 * The component role used by components implementing this service
33 */
34 String ROLE = "org.apache.james.services.DNSServer";
35
36 /***
37 * <p>Get a priority-sorted collection of DNS MX records for a given hostname</p>
38 *
39 * <p>TODO: Change this to a list, as not all collections are sortable</p>
40 *
41 * @param hostname the hostname to check
42 * @return collection of strings representing MX record values.
43 */
44 Collection findMXRecords(String hostname);
45
46
47 /***
48 * Performs DNS lookups as needed to find servers which should or might
49 * support SMTP. Returns one SMTPHostAddresses for each such host
50 * discovered by DNS. If no host is found for domainName, the Iterator
51 * returned will be empty and the first call to hasNext() will return
52 * false.
53 * @param domainName the String domain for which SMTP host addresses are
54 * sought.
55 * @return an Enumeration in which the Objects returned by next()
56 * are instances of SMTPHostAddresses.
57 */
58 Iterator getSMTPHostAddresses(String domainName);
59
60 }