Package mireka.filter.spf

Source Code of mireka.filter.spf.SpfChecker

package mireka.filter.spf;

import org.apache.james.jspf.executor.SPFResult;
import org.apache.james.jspf.impl.DefaultSPF;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import mireka.filter.MailTransaction;

public class SpfChecker {
    private final static String SPF_RESULT_NAME = "mireka.spfResult";
    private final Logger logger = LoggerFactory.getLogger(SpfChecker.class);
    private final MailTransaction mailTransaction;

    public SpfChecker(MailTransaction mailTransaction) {
        this.mailTransaction = mailTransaction;
    }

    public SPFResult getResult() {
        SPFResult result =
                (SPFResult) mailTransaction.getAttribute(SPF_RESULT_NAME);
        if (result == null) {
            result = check();
            mailTransaction.setAttribute(SPF_RESULT_NAME, result);
        }
        return result;
    }

    private SPFResult check() {
        DefaultSPF spf = new DefaultSPF(new Slf4jToJspfLoggerAdapter());
        spf.setUseBestGuess(false);
        // null reverse path should correspond to empty string
        String fromNonNull =
                mailTransaction.getFrom() == null ? "" : mailTransaction
                        .getFrom();
        String helo = mailTransaction.getMessageContext().getHelo();
        String heloNonNull =
                helo == null ? "["
                        + mailTransaction.getRemoteInetAddress()
                                .getHostAddress() + "]" : helo;
        SPFResult result =
                spf.checkSPF(mailTransaction.getRemoteInetAddress()
                        .getHostAddress(), fromNonNull, heloNonNull);
        logger.debug("SPF check result: {} {}", result.getResult(), result
                .getExplanation());
        return result;
    }
}
TOP

Related Classes of mireka.filter.spf.SpfChecker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.