@Override public void init(Configuration config) throws ConfigurationException { String[] networks = config.getStringArray("invalidMXNetworks"); if (networks.length == 0) { Collection<String> bannedNetworks = Arrays.stream(networks) .map(String::trim) .collect(Guavate.toImmutableList()); setBannedNetworks(bannedNetworks, dnsService); LOGGER.info("Invalid MX Networks: {}", bNetwork); } else { throw new ConfigurationException("Please configure at least on invalid MX network"); } }
@Test public void testRejectLoopbackMX() throws Exception { String bannedAddress = "172.53.64.2"; DNSService dns = new InMemoryDNSService() .registerMxRecord(INVALID_HOST, bannedAddress) .registerMxRecord("255.255.255.255", "255.255.255.255") .registerMxRecord(bannedAddress, bannedAddress); MailAddress mailAddress = new MailAddress("test@" + INVALID_HOST); SMTPSession session = setupMockedSMTPSession(mailAddress); ValidRcptMX handler = new ValidRcptMX(); handler.setDNSService(dns); handler.setBannedNetworks(ImmutableList.of(bannedAddress), dns); HookReturnCode rCode = handler.doRcpt(session, null, mailAddress).getResult(); assertThat(HookReturnCode.deny()).describedAs("Reject").isEqualTo(rCode); } }
/** * @see org.apache.james.lifecycle.Configurable#configure(org.apache.commons.configuration.Configuration) */ @SuppressWarnings("unchecked") public void configure(HierarchicalConfiguration config) throws ConfigurationException { List<String> networks = config.getList("invalidMXNetworks"); if (networks.isEmpty() == false) { Collection<String> bannedNetworks = new ArrayList<String>(); for (int i = 0; i < networks.size(); i++) { String network = networks.get(i); bannedNetworks.add(network.trim()); } setBannedNetworks(bannedNetworks, dnsService); serviceLog.info("Invalid MX Networks: " + bNetwork.toString()); } else { throw new ConfigurationException( "Please configure at least on invalid MX network"); } }