log.debug("accept? " + sFrom + " - " +sRecipient);
if( sFrom == null || sFrom.length() == 0 ) {
log.error("Cannot accept email with no from address. Recipient is: " + sRecipient);
return false;
}
final AcceptEvent event = new AcceptEvent(sFrom, sRecipient);
Filter terminal = new Filter() {
public void doEvent(FilterChain chain, Event e) {
MailboxAddress from = MailboxAddress.parse(event.getFrom());
Mailbox fromMailbox = resourceFactory.getMailbox(from);
if (fromMailbox != null && !fromMailbox.isEmailDisabled() ) {
event.setAccept(true);
return ;
}
MailboxAddress recip = MailboxAddress.parse(event.getRecipient());
Mailbox recipMailbox = resourceFactory.getMailbox(recip);
boolean b = (recipMailbox != null && !recipMailbox.isEmailDisabled());
log.debug("accept email from: " + event.getFrom() + " to: " + event.getRecipient() + "?" + b);
event.setAccept(b);
}
};
FilterChain chain = new FilterChain(filters, terminal);
chain.doEvent(event);
return event.isAccept();
}