* (non-Javadoc)
* @see org.jasen.interfaces.JasenPlugin#test(org.jasen.core.Jasen, javax.mail.internet.MimeMessage, org.jasen.interfaces.JasenMessage, org.jasen.interfaces.ParserData, org.jasen.interfaces.ReceivedHeaderParser)
*/
public JasenTestResult test(Jasen engine, MimeMessage rawMessage, JasenMessage parsedMessage, ParserData data, ReceivedHeaderParser parser) throws JasenException {
ProbabilityTestResult result = new ProbabilityTestResult();
try
{
// Get the From address
String address = null;
try
{
address = MimeUtils.toInternetAddress(rawMessage.getFrom()[0], false).getAddress();
}
catch (AddressException e)
{
// Ignore, this will be handled below
}
if(address == null || !MimeUtils.isValidAddress(address)) {
// Use the actual sender
address = parsedMessage.getEnvelopeSender();
}
// Get the first header line
String header = rawMessage.getHeader("Received")[0];
try
{
if(MimeUtils.verifySenderAddress(engine.getDnsResolver(), engine.getInetAddressResolver(), parser, header, address)) {
result.setProbability(lowProb);
}
else
{
result.setProbability(highProb);
}
}
catch (UnknownHostException e)
{
// No host... set to high
result.setProbability(highProb);
}
catch (DNSException e)
{
// Error during DNS lookup?
result.setProbability(medProb);
}
}
catch (AddressException e)
{
throw new JasenException(e);