@Override public Message filter(Message message) { // by default store in Inbox if(message.getLabels().isEmpty()) { message.addLabel(ReservedLabels.INBOX.getId()); // add to POP3 if enabled if (Configurator.isLmtpPop3Enabled()) { logger.debug("Adding message received via LMTP to POP3"); message.addLabel(ReservedLabels.POP3.getId()); } } return message; } }
if (m.getSize() != null) { columns.put(CN_SIZE, m.getSize()); if (m.getDate() != null) { columns.put(CN_DATE, m.getDate()); if (m.getFrom() != null) { columns.put(CN_FROM, serializeAddress(m.getFrom())); if (m.getTo() != null) { columns.put(CN_TO, serializeAddress(m.getTo())); if (m.getCc() != null) { columns.put(CN_CC, serializeAddress(m.getCc())); if (m.getBcc() != null) { columns.put(CN_BCC, serializeAddress(m.getBcc())); if (m.getReplyTo() != null) { columns.put(CN_REPLY_TO, serializeAddress(m.getReplyTo())); if (m.getMessageId() != null) { columns.put(CN_MESSAGE_ID, m.getMessageId()); if (m.getSubject() != null) { columns.put(CN_SUBJECT, m.getSubject()); if (m.getLocation() != null) { columns.put(CN_BRI, m.getLocation().toString());
/** * Returns binary content for the given MIME Content-ID. * * @param contentId * @return */ @JsonIgnore public MimePart getPartByContentId(String contentId) { if (!this.partsByContentId.containsKey(contentId)) throw new IllegalArgumentException( "Message does not contain part with Content-ID " + contentId); return getPart(this.partsByContentId.get(contentId)); }
@Override public Message filter(Message message) { if (message.getMinorHeader(MimeParser.MIME_HEADER_SPAM) != null && message.getMinorHeader(MimeParser.MIME_HEADER_SPAM).equalsIgnoreCase(MIME_HEADER_SPAM_VALUE)) { logger.debug("Applying filter for SPAM"); message.addLabel(ReservedLabels.SPAM.getId()); } return message; } }
private void logEnvelope(final MailEnvelope env, final Message message, final String deliveryId) { logger.info("DID{}: size={}, nrcpts={}, from=<{}>, msgid={}", new Object[] { deliveryId, message.getSize(), env.getRecipients().size(), env.getSender(), message.getMessageId() == null ? "" : message.getMessageId() }); }
Message message = new Message(); message.setDate(dateSe.fromBytes(c.getValue())); } else if (c.getName().equals(CN_SIZE)) { message.setSize(longSe.fromBytes(c.getValue())); } else if (c.getName().equals(CN_SUBJECT)) { message.setSubject(strSe.fromBytes(c.getValue())); } else if (c.getName().equals(CN_MESSAGE_ID)) { message.setMessageId(strSe.fromBytes(c.getValue())); } else if (c.getName().equals(CN_FROM)) { message.setFrom(unserializeAddress(c.getValue())); } else if (c.getName().equals(CN_TO)) { message.setTo(unserializeAddress(c.getValue())); } else if (c.getName().equals(CN_CC)) { message.setCc(unserializeAddress(c.getValue())); } else if (c.getName().equals(CN_BCC)) { message.setBcc(unserializeAddress(c.getValue())); } else if (c.getName().equals(CN_REPLY_TO)) { message.setReplyTo(unserializeAddress(c.getValue())); } else if (c.getName().equals(CN_BRI)) { message.setLocation(URI.create( strSe.fromBytes(c.getValue()))); } else if (c.getName().startsWith(CN_LABEL_PREFIX)) { Integer labelId = Integer .parseInt(c.getName().split("\\:")[1]); message.addLabel(labelId); } else if (c.getName().startsWith(CN_MARKER_PREFIX)) { Integer markerId = Integer .parseInt(c.getName().split("\\:")[1]);
newMessage.setSize(file.length()); // update message size in.close(); for(Integer label : oldMessage.getLabels()) { newMessage.addLabel(label); for(Marker marker : oldMessage.getMarkers()) { newMessage.addMarker(marker);
mailbox.getId(), ReservedLabels.ALL_MAILS.getId()); long requiredBytes = mailboxCounters.getTotalBytes() + message.getSize(); long requiredCount = mailboxCounters.getTotalMessages() + 1; Configurator.getBlobStoreWriteProfileName(), in, message.getSize()) .buildURI(); message.setLocation(uri); } catch (Exception e) { throw new IOException("Failed to store blob: ", e); message.addLabel(ReservedLabels.ALL_MAILS.getId()); LabelIndexPersistence.add(m, mailbox.getId(), messageId, message.getLabels()); LabelCounterPersistence.add(m, mailbox.getId(), message.getLabels(), message.getLabelCounters());
if (!message.getLabels().contains(labelId)) { LabelCounterPersistence.add(mutator, mailbox.getId(), labelId, message.getLabelCounters()); if (message.getLabels().contains(labelId)) { LabelCounterPersistence.subtract(mutator, mailbox.getId(), labelId, message.getLabelCounters()); if (mod.getMarkersToAdd().contains(Marker.SEEN) && !message.getMarkers().contains(Marker.SEEN)) LabelCounterPersistence.subtract(mutator, mailbox.getId(), message.getLabels(), labelCounters); if (mod.getMarkersToRemove().contains(Marker.SEEN) && message.getMarkers().contains(Marker.SEEN)) LabelCounterPersistence.add(mutator, mailbox.getId(), message.getLabels(), labelCounters);
/** * Get aggregated {@link LabelCounter} stats for each label in the list of * messages. Results aggregated by label ID. * * @return */ public LabelMap aggregateCountersByLabel() { LabelMap labels = new LabelMap(); // get all labels of all messages, including label "all" for (UUID messageId : this.messages.keySet()) { Set<Integer> messageLabels = this.messages.get(messageId).getLabels(); for (int labelId : messageLabels) { if (!labels.containsId(labelId)) { Label label = new Label(labelId). setCounters(this.messages.get(messageId).getLabelCounters()); labels.put(label); } else { labels.get(labelId).getCounters().add( this.messages.get(messageId).getLabelCounters()); } } } return labels; }
/** * Redirect to original message blob URI * * @param account * @param messageId * @return */ @GET @Path("url") public Response getMessageUrl( @PathParam("user") final String user, @PathParam("domain") final String domain, @PathParam("messageid") final UUID messageId) { Mailbox mailbox = new Mailbox(user, domain); URI uri = null; try { Message message = messageDAO.getParsed(mailbox, messageId); uri = message.getLocation(); Assert.notNull(uri, "No source message"); } catch (IllegalArgumentException iae) { throw new BadRequestException(iae.getMessage()); } catch (Exception e) { logger.warn("Internal Server Error: ", e); throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } return Response.temporaryRedirect(uri).build(); }
/** * Initialise a list of messages visible for the current session * * @return List of messages */ private List<MessageMetaData> getPOP3MessageList() { // get list of messages Map<UUID, Message> messages = dao.getMessageIdsWithMetadata( mailbox, ReservedLabels.POP3.getId(), null, MAX_POP3_SESSION_MESSAGES, true, false); // convert to James Protocols list List<MessageMetaData> list = new ArrayList<MessageMetaData>(messages.size()); for (Map.Entry<UUID, Message> entry : messages.entrySet()) { MessageMetaData md = new MessageMetaData( Base64UUIDUtils.encode(entry.getKey()), entry.getValue().getSize()); list.add(md); } return list; }
message.setSize((long) env.getSize()); // update message size
if (markAsSeen && !message.getMarkers().contains(Marker.SEEN))
for (int labelId : message.getLabels()) Label label = new Label(labelId).setCounters(message.getLabelCounters()); labels.put(label); } else { labels.get(labelId).incrementCounters(message.getLabelCounters());
@Override public BlobDataSource getRaw(final Mailbox mailbox, final UUID messageId) throws IOException { Message metadata = MessagePersistence.fetch(mailbox.getId(), messageId, false); return blobStorage.read(metadata.getLocation()); }
blobStorage.delete(messages.get(messageId).getLocation());
MimeParser mimeParser = new MimeParser(); mimeParser.parse(rawIn); part = mimeParser.getMessage().getPart(partId); partIn = mimeParser.getInputStreamByPartId(partId); rawIn.close();