Uploaded image for project: 'James Server'
  1. James Server
  2. JAMES-2279

Write a WithPriority mailet and HasPriority matchers

    Details

      Description

      James mail queues is handling mail priorities. See the MailPrioritySupport interface.

      This is done using the MAIL_PRIORITY mail attribute. It is an integer property ranging from 0 (low) to 9 (high) and mail queue component will default to 5.

      Today, the mail processing unit akka mailetContainer can not change the priority set by the SMTP layer (using MailPriorityHandler). This is a problem as we can not re-prioritise outgoing emails, for instance in remote delivery queues.

      I would thus propose the following mailet:

      <mailet matcher="All" class="WithPriority">
          <value>8</value>
      </mailet>
      

      Furthermore, we might want to customize processing logic depending on the priority (might it just be for debugging purpose).

      To do so, I propose to introduce the following matchers:

      <mailet matcher="HasPriority=8" class="Any"/>
      <mailet matcher="AtLeastPriority=8" class="Any"/>
      <mailet matcher="AtMostPriority=8" class="Any"/>
      

      How to do this?

      In the `server/mailet/mailets` project, in the mailet package create the WithPriority mailet which sets the MAIL_PRIORITY attribute.

      Create the matchers in `server/mailet/mailets` in the matcher package.

      Write unit tests for these mailets / matchers.

      Use MailetUtil content to parse the integer conditions/value. You can reuse https://github.com/linagora/james-project/pull/1215 to ease your work.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                BTellier Tellier Benoit
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated: