/** @see org.apache.james.jspf.core.SPFChecker#checkSPF(org.apache.james.jspf.core.SPFSession) */
  public DNSLookupContinuation checkSPF(SPFSession spfData)
      throws PermErrorException, TempErrorException, NoneException, NeutralException {
    // update currentDepth
    spfData.increaseCurrentDepth();

    SPFChecker cleanupAndResultHandler = new CleanupAndResultChecker().init(spfData);
    spfData.pushChecker(cleanupAndResultHandler);

    spfData.pushChecker(new ExpandedChecker());
    return macroExpand.checkExpand(getHost(), spfData, MacroExpand.DOMAIN);
  }
    /**
     * @see org.apache.james.jspf.core.SPFChecker#checkSPF(org.apache.james.jspf.core.SPFSession)
     */
    public DNSLookupContinuation checkSPF(SPFSession spfData)
        throws PermErrorException, TempErrorException {

      // throws a PermErrorException that we can pass through
      String host = macroExpand.expand(getHost(), spfData, MacroExpand.DOMAIN);

      spfData.setCurrentDomain(host);

      // On includes we should not use the explanation of the included domain
      spfData.setIgnoreExplanation(true);
      // set a null current result
      spfData.setCurrentResult(null);
      spfData.setCurrentResultExpanded(null);

      spfData.pushChecker(spfChecker);

      return null;
    }