/** * Gets the domain host associated with the address. * @return The host associated with the address. */ public String getHost() { String retVal = ""; // remove any extra information such as < and > String address = this.getAddress(); int index; if ((index = address.indexOf('<')) > -1) address = address.substring(index + 1); if ((index = address.indexOf('>')) > -1) address = address.substring(0, index); index = address.indexOf("@"); if (index >= 0) retVal = address.substring(index + 1); return retVal; }
/** * * Determine if the recipient has been rejected * * @param rctpAdd * @param rejectedRecips * @return */ public static boolean isRcptRejected(InternetAddress rctpAdd, NHINDAddressCollection rejectedRecips) { for (NHINDAddress rejectedRecip : rejectedRecips) if (rejectedRecip.getAddress().equals(rctpAdd.toString())) return true; return false; }
private void preProcessMessage(MimeMessage message, NHINDAddress sender) { LOGGER.debug("Message Recieved from: " + sender.getAddress()); copyMessage(message, settings.getRawMessageSettings()); }
/** * {@inheritDoc}} */ public void enforce(OutgoingMessage message) { if (message == null) { throw new IllegalArgumentException(); } NHINDAddress sender = message.getSender(); NHINDAddressCollection recipients = message.getRecipients(); for (NHINDAddress recipient : recipients) { recipient.setStatus(TrustEnforcementStatus.Failed); Collection<X509Certificate> certs = recipient.getCertificates(); if (certs == null || certs.size() == 0) LOGGER.warn("enforce(OutgoingMessage message) - recipient " + recipient.getAddress() + " has no bound certificates"); recipient.setCertificates(findTrustedCerts(certs, sender.getTrustAnchors())); if (recipient.hasCertificates()) recipient.setStatus(TrustEnforcementStatus.Success); else LOGGER.warn("enforce(OutgoingMessage message) - could not trust any certificates for recipient " + recipient.getAddress()); } }
details.put(TxDetailType.FROM.getType(), new TxDetail(TxDetailType.FROM, sender.getAddress().toLowerCase(Locale.getDefault()))); if (recipients != null && !recipients.isEmpty()) details.put(TxDetailType.RECIPIENTS.getType(), new TxDetail(TxDetailType.RECIPIENTS, recipients.toString().toLowerCase(Locale.getDefault())));
recipAddresses.add(addr.getAddress());
theHeader = env.getSender().getAddress(); else if (header.equals(MDNStandard.Headers.Disposition) || header.equals(MDNStandard.Headers.OriginalMessageID) ||
protected void findSenderSignatures(IncomingMessage message) { message.setSenderSignatures(null); NHINDAddress sender = message.getSender(); Collection<DefaultMessageSignatureImpl> senderSignatures = new ArrayList<DefaultMessageSignatureImpl>(); // check for signatures at an individual level Collection<SignerCertPair> individualSenders = CryptoExtensions.findSignersByName(message.getSignature(), sender.getAddress(), null); // check for signatures at an org level Collection<SignerCertPair> orgSenders = CryptoExtensions.findSignersByName(message.getSignature(), sender.getHost(), Arrays.asList(new String[] {sender.getAddress()})); for (SignerCertPair pair : individualSenders) senderSignatures.add(new DefaultMessageSignatureImpl(pair.getSigner(), false, pair.getCertificate())); for (SignerCertPair pair : orgSenders) senderSignatures.add(new DefaultMessageSignatureImpl(pair.getSigner(), true, pair.getCertificate())); message.setSenderSignatures(senderSignatures); }
LOGGER.warn("bindAddresses(OutgoingMessage message) - Could not resolve a private certificate for sender " + message.getSender().getAddress()); message.getSender().setCertificates(privateCerts); LOGGER.warn("bindAddresses(OutgoingMessage message) - Could not obtain outgoing trust anchors for sender " + message.getSender().getAddress()); message.getSender().setTrustAnchors(anchors); LOGGER.warn("bindAddresses(OutgoingMessage message) - Could not resolve a public certificate for recipient " + recipient.getAddress()); recipient.setCertificates(publicCerts);
if (!(authRecips.contains(envRecips.getAddress().toLowerCase()))) final String exceptionMessage = "Recipient " + envRecips.getAddress() + " was not found in the authoritative headers"; if (rejectOnRoutingTamper)
LOGGER.warn("enforce(IncomingMessage message) - could not find a trusted certificate for recipient " + recipient.getAddress()); LOGGER.warn("enforce(IncomingMessage message) - recipient " + recipient.getAddress() + " does not have a bound certificate");
private void postProcessMessage(MessageProcessResult result) { boolean isOutgoing = (result.getProcessedMessage() instanceof OutgoingMessage); // check for rejected recipients if (auditor != null && result.getProcessedMessage().getRejectedRecipients() != null && result.getProcessedMessage().getRejectedRecipients().size() > 0) { Collection<AuditContext> contexts = createContextCollectionFromMessage(result.getProcessedMessage(), Arrays.asList(AuditEvents.DEFAULT_HEADER_CONTEXT)); StringBuffer rejectedRecips = new StringBuffer(); int cnt = 0; for (NHINDAddress address : result.getProcessedMessage().getRejectedRecipients()) { rejectedRecips.append(address.getAddress()); if (++cnt < result.getProcessedMessage().getRejectedRecipients().size()) rejectedRecips.append(", "); } contexts.add(new DefaultAuditContext(AuditEvents.REJECTED_RECIPIENTS_CONTEXT, rejectedRecips.toString())); auditor.audit(PRINICPAL, new AuditEvent(AuditEvents.REJECTED_RECIP_NAME, AuditEvents.EVENT_TYPE), contexts); } if (isOutgoing) postProcessOutgoingMessage(result); else postProcessIncomingMessage(result); }
recipAddresses.add(addr.getAddress());
for (NHINDAddress address : originalRecipList) rejectedRecips.append(address.getAddress());
LOGGER.warn("bindAddresses(IncomingMessage message) - Could not resolve a private certificate for recipient " + recipient.getAddress()); LOGGER.warn("Exception getting incoming anchors for recipient " + recipient.getAddress()); LOGGER.warn("bindAddresses(IncomingMessage message) - Could not obtain incoming trust anchors for recipient " + recipient.getAddress()); recipient.setTrustAnchors(anchors);