Java tutorial
/**************************************************************** * Licensed to the Apache Software Foundation (ASF) under one * * or more contributor license agreements. See the NOTICE file * * distributed with this work for additional information * * regarding copyright ownership. The ASF licenses this file * * to you under the Apache License, Version 2.0 (the * * "License"); you may not use this file except in compliance * * with the License. You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, * * software distributed under the License is distributed on an * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * * KIND, either express or implied. See the License for the * * specific language governing permissions and limitations * * under the License. * ****************************************************************/ package org.apache.james.smtpserver; import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.james.smtpserver.fastfail.*; @SuppressWarnings("serial") public class SMTPTestConfiguration extends DefaultConfigurationBuilder { private final int m_smtpListenerPort; private int m_maxMessageSizeKB = 0; private String m_authorizedAddresses = "127.0.0.0/8"; private String m_authorizingMode = "false"; private boolean m_verifyIdentity = false; private Integer m_connectionLimit = null; private Integer m_connectionBacklog = null; private boolean m_heloResolv = false; private boolean m_ehloResolv = false; private boolean m_senderDomainResolv = false; private boolean m_checkAuthNetworks = false; private boolean m_heloEhloEnforcement = true; private boolean m_reverseEqualsHelo = false; private boolean m_reverseEqualsEhlo = false; private int m_maxRcpt = 0; private boolean m_useRBL = false; private boolean m_addressBracketsEnforcement = true; private boolean m_startTLS = false; public SMTPTestConfiguration(int smtpListenerPort) { m_smtpListenerPort = smtpListenerPort; } public void setCheckAuthNetworks(boolean checkAuth) { m_checkAuthNetworks = checkAuth; } public void setMaxMessageSize(int kilobytes) { m_maxMessageSizeKB = kilobytes; } public int getMaxMessageSize() { return m_maxMessageSizeKB; } public String getAuthorizedAddresses() { return m_authorizedAddresses; } public void setAuthorizedAddresses(String authorizedAddresses) { m_authorizedAddresses = authorizedAddresses; } public void setAuthorizingNotRequired() { m_authorizingMode = "false"; m_verifyIdentity = false; } public void setAuthorizingRequired() { m_authorizingMode = "true"; m_verifyIdentity = true; } public void setAuthorizingAnnounce() { m_authorizingMode = "announce"; m_verifyIdentity = true; } public void setConnectionLimit(int iConnectionLimit) { m_connectionLimit = iConnectionLimit; } public void setConnectionBacklog(int iConnectionBacklog) { m_connectionBacklog = iConnectionBacklog; } public void setHeloResolv() { m_heloResolv = true; } public void setEhloResolv() { m_ehloResolv = true; } public void setReverseEqualsHelo() { m_reverseEqualsHelo = true; } public void setReverseEqualsEhlo() { m_reverseEqualsEhlo = true; } public void setSenderDomainResolv() { m_senderDomainResolv = true; } public void setMaxRcpt(int maxRcpt) { m_maxRcpt = maxRcpt; } public void setHeloEhloEnforcement(boolean heloEhloEnforcement) { m_heloEhloEnforcement = heloEhloEnforcement; } public void useRBL(boolean useRBL) { m_useRBL = useRBL; } public void setAddressBracketsEnforcement(boolean addressBracketsEnforcement) { this.m_addressBracketsEnforcement = addressBracketsEnforcement; } public void setStartTLS() { m_startTLS = true; } public void init() { addProperty("[@enabled]", true); addProperty("bind", "127.0.0.1:" + m_smtpListenerPort); if (m_connectionLimit != null) addProperty("connectionLimit", "" + m_connectionLimit); if (m_connectionBacklog != null) addProperty("connectionBacklog", "" + m_connectionBacklog); addProperty("helloName", "myMailServer"); addProperty("connectiontimeout", 360000); addProperty("authorizedAddresses", m_authorizedAddresses); addProperty("maxmessagesize", m_maxMessageSizeKB); addProperty("authRequired", m_authorizingMode); addProperty("heloEhloEnforcement", m_heloEhloEnforcement); addProperty("addressBracketsEnforcement", m_addressBracketsEnforcement); addProperty("tls.[@startTLS]", m_startTLS); addProperty("tls.keystore", "file://conf/test_keystore"); addProperty("tls.secret", "jamestest"); if (m_verifyIdentity) addProperty("verifyIdentity", m_verifyIdentity); // add the rbl handler if (m_useRBL) { addProperty("handlerchain.handler.[@class]", DNSRBLHandler.class.getName()); addProperty("handlerchain.handler.rblservers.blacklist", "bl.spamcop.net."); } if (m_heloResolv || m_ehloResolv) { addProperty("handlerchain.handler.[@class]", ResolvableEhloHeloHandler.class.getName()); addProperty("handlerchain.handler.checkAuthNetworks", m_checkAuthNetworks); } if (m_reverseEqualsHelo || m_reverseEqualsEhlo) { addProperty("handlerchain.handler.[@class]", ReverseEqualsEhloHeloHandler.class.getName()); addProperty("handlerchain.handler.checkAuthNetworks", m_checkAuthNetworks); } if (m_senderDomainResolv) { addProperty("handlerchain.handler.[@class]", ValidSenderDomainHandler.class.getName()); addProperty("handlerchain.handler.checkAuthNetworks", m_checkAuthNetworks); } if (m_maxRcpt > 0) { addProperty("handlerchain.handler.[@class]", MaxRcptHandler.class.getName()); addProperty("handlerchain.handler.maxRcpt", m_maxRcpt); } addProperty("handlerchain.[@coreHandlersPackage]", CoreCmdHandlerLoader.class.getName()); } }