public MailAddress(org.apache.james.core.MailAddress address) throws AddressException { super(address.asString()); } }
private void addForward(MappingSource source, MailAddress destinationAddress) throws RecipientRewriteTableException { try { recipientRewriteTable.addForwardMapping(source, destinationAddress.asString()); } catch (MappingAlreadyExistsException e) { // ignore } }
private String getContext(SMTPSession session, MailAddress recipientAddress, String recipient) { StringBuilder sb = new StringBuilder(128); if (null != recipientAddress) { sb.append(" [to:").append(recipientAddress.asString()).append(']'); } else if (null != recipient) { sb.append(" [to:").append(recipient).append(']'); } MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction); if (null != sender && !sender.isNullSender()) { sb.append(" [from:").append(sender.asString()).append(']'); } return sb.toString(); }
@Override public Result run() { maybeSender.ifPresent(Throwing.consumer( (MailAddress sender) -> queue.remove(ManageableMailQueue.Type.Sender, sender.asString()))); maybeName.ifPresent(Throwing.consumer( (String name) -> queue.remove(ManageableMailQueue.Type.Name, name))); maybeRecipient.ifPresent(Throwing.consumer( (MailAddress recipient) -> queue.remove(ManageableMailQueue.Type.Recipient, recipient.asString()))); return Result.COMPLETED; }
@Override public String getUser(MailAddress mailAddress) throws UsersRepositoryException { if (supportVirtualHosting()) { return mailAddress.asString(); } else { return mailAddress.getLocalPart(); } }
private void assertUserIsSender(MailboxSession session, Optional<MailAddress> sender) throws MailboxSendingNotAllowedException { boolean userIsSender = sender.map(address -> session.getUser().isSameUser(address.asString())) .orElse(false); if (!userIsSender) { String allowedSender = session.getUser().getUserName(); throw new MailboxSendingNotAllowedException(allowedSender); } }
private void sendNotice(QuotaThresholdNotice notice, User user) throws UsersRepositoryException, MessagingException, IOException { MailAddress sender = mailetContext.getPostmaster(); MailAddress recipient = usersRepository.getMailAddressFor(user); mailetContext.sendMail(sender, ImmutableList.of(recipient), notice.generateMimeMessage(fileSystem) .addToRecipient(recipient.asString()) .addFrom(sender.asString()) .build()); }
@Test public void convertShouldWorkWithTwoAddress() throws Exception { assertThat(InternetAddressConverter.convert(ImmutableList.of(MailAddressFixture.ANY_AT_JAMES, MailAddressFixture.OTHER_AT_JAMES))) .containsOnly(new InternetAddress(MailAddressFixture.ANY_AT_JAMES.asString()), new InternetAddress(MailAddressFixture.OTHER_AT_JAMES.asString())); } }
@Test public void convertShouldWorkWithOneAddress() throws Exception { assertThat(InternetAddressConverter.convert(ImmutableList.of(MailAddressFixture.ANY_AT_JAMES))) .containsOnly(new InternetAddress(MailAddressFixture.ANY_AT_JAMES.asString())); }
public HookResult reject(MailAddress rcpt) { LOGGER.info("Rejected message. Unknown user: {}", rcpt); return HookResult.builder() .hookReturnCode(HookReturnCode.deny()) .smtpReturnCode(SMTPRetCode.MAILBOX_PERM_UNAVAILABLE) .smtpDescription(DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.asString()) .build(); }
@Test public void storeMailShouldUseFullMailAddressWhenSupportsVirtualHosting() throws Exception { MailAddress recipient = MailAddressFixture.OTHER_AT_JAMES; when(usersRepository.getUser(recipient)).thenReturn(recipient.asString()); FakeMail mail = FakeMail.builder() .mimeMessage(mimeMessage) .build(); testee.storeMail(recipient, mail); verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.asString()), eq(FOLDER)); }
@Test public void sendMailForMessageShouldEnqueueEmailWithRootState() throws Exception { MimeMessage message = MimeMessageBuilder.mimeMessageBuilder() .addFrom(mailAddress.asString()) .addToRecipient(mailAddress.asString()) .setText("Simple text") .build(); testee.sendMail(message); ArgumentCaptor<Mail> mailArgumentCaptor = ArgumentCaptor.forClass(Mail.class); verify(spoolMailQueue).enQueue(mailArgumentCaptor.capture()); verifyNoMoreInteractions(spoolMailQueue); assertThat(mailArgumentCaptor.getValue().getState()).isEqualTo(Mail.DEFAULT); }
private void ensureNotShadowingAnotherAddress(MailAddress groupAddress) throws UsersRepositoryException { if (usersRepository.contains(groupAddress.asString())) { throw ErrorResponder.builder() .statusCode(HttpStatus.CONFLICT_409) .type(ErrorType.INVALID_ARGUMENT) .message("Requested group address is already used for another purpose") .haltError(); } }
@Test public void replaceInternetAddressesShouldReturnToWhenAddressesMatchRecipients() throws Exception { MailAddress to = MailAddressFixture.ANY_AT_JAMES; MailAddress to2 = MailAddressFixture.OTHER_AT_JAMES; FakeMail mail = FakeMail.from(MimeMessageBuilder.mimeMessageBuilder() .addToRecipient(to.asString(), to2.asString())); List<MailAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.RECIPIENTS.toInternetAddress())); assertThat(addresses).containsOnly(to, to2); }
@Test public void replaceInternetAddressesShouldReturnToWhenAddressesMatchTo() throws Exception { MailAddress to = MailAddressFixture.ANY_AT_JAMES; MailAddress to2 = MailAddressFixture.OTHER_AT_JAMES; FakeMail mail = FakeMail.from(MimeMessageBuilder.mimeMessageBuilder() .addToRecipient(to.asString(), to2.asString())); List<MailAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.TO.toInternetAddress())); assertThat(addresses).containsOnly(to, to2); }
@Test public void matchShouldReturnEmptyWhenLoopButNoRecipient() throws Exception { recipientRewriteTable.addAddressMapping(MappingSource.fromUser(SENDER.getLocalPart(), SENDER.getDomain()), RECIPIENT1.asString()); recipientRewriteTable.addAddressMapping(MappingSource.fromUser(RECIPIENT1.getLocalPart(), RECIPIENT1.getDomain()), SENDER.asString()); Collection<MailAddress> result = testee.match(FakeMail.builder() .sender(SENDER) .build()); assertThat(result).isEmpty(); }
@Test public void matchShouldReturnRecipientsWhenLoop() throws Exception { recipientRewriteTable.addAddressMapping(MappingSource.fromUser(SENDER.getLocalPart(), SENDER.getDomain()), RECIPIENT1.asString()); recipientRewriteTable.addAddressMapping(MappingSource.fromUser(RECIPIENT1.getLocalPart(), RECIPIENT1.getDomain()), SENDER.asString()); Collection<MailAddress> result = testee.match(FakeMail.builder() .sender(SENDER) .recipient(RECIPIENT2) .build()); assertThat(result).containsOnly(RECIPIENT2); }
@Test void matchSenderShouldReturnRecipientsWhenEnvelopSenderMatches() throws Exception { Dlp dlp = new Dlp( asRulesLoaderFor( JAMES_APACHE_ORG_DOMAIN, DlpDomainRules.builder().senderRule(Id.of("match sender"), Pattern.compile(ANY_AT_JAMES.asString())).build())); FakeMail mail = FakeMail.builder().sender(ANY_AT_JAMES).recipient(RECIPIENT1).build(); assertThat(dlp.match(mail)).contains(RECIPIENT1); }
@Test public void matchShouldReturnEmptyWhenNoRRTLoop() throws Exception { recipientRewriteTable.addAddressMapping(MappingSource.fromUser(SENDER.getLocalPart(), SENDER.getDomain()), RECIPIENT1.asString()); Collection<MailAddress> result = testee.match(FakeMail.builder() .sender(SENDER) .recipient(RECIPIENT1) .build()); assertThat(result).isEmpty(); }
@Test void matchShouldReturnRecipientsWhenEnvelopRecipientsMatches() throws Exception { Dlp dlp = new Dlp( asRulesLoaderFor( JAMES_APACHE_ORG_DOMAIN, DlpDomainRules.builder().recipientRule(Id.of("match recipient"), Pattern.compile(RECIPIENT1.asString())).build())); FakeMail mail = FakeMail.builder() .sender(ANY_AT_JAMES) .recipient(RECIPIENT1) .recipient(RECIPIENT2) .build(); assertThat(dlp.match(mail)).contains(RECIPIENT1, RECIPIENT2); }