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.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 } 61