Hello Jean,

Multi-hosted DKIM is a common need I have seen poping several time and support 
an initiative to improve this.

Your diagnostic is correct. Today this can only be achieved by writing a 
complex mailetcontainer.xml file with one DKIMSign mailet per domain.

I would see a generic loading mechanism, where:
 - We create a DKIMConfigurationLoader interface
 - Implement a DefaultDKIMConfiguration loader defaulting to todays behaviour
 - Have a DKIMConfigurationLoaderClass property within DKIMSign configuration
 - Use a guice loader to instanciate configured configuration loader, 
potentially reading user supplied value from external-jars
 - We *could* then supply storage based solutions (jpa, cassandra, postgres, 
etc...) that can be relied upon as extensions (present on the classpath but 
needing explicit configuration to be "activated") and administered via a 
dedicated webadmin interface.

(This is a ticket I have on the Linagora backlog for quite some time)

I am interested in taking part in such an effort.

(Hopefully in the coming month I should have the infrastructure to host a Lyon 
based code camp on the topic!)

> Shouldn't dkim information be configured/provided in the same place as the 
> domains are configured ?

My point of view:
This would make sense for a *static* list of domains explicitly configured.
In the above proposal this *could* be a possible DKIMConfigurationLoader 
implementation.However, eventhough this is an improvment over the current 
situation, this behaviour is not dynamic: adding a new domain requires 
re-configuration and reboot.
Best regards,

Benoit

On Aug 28, 2024 9:01 AM, from Jean Helou Hello,

I'm not sure how to configure the DKIM mailet in a multi hosting scenario.

The documentation at james.apache.org/howTo/dkim.html offers the
following snippet

<processors>
  <processor state="relay" enableJmx="true">
    <mailet match="All" class="org.apache.james.jdkim.mailets.DKIMSign">
      <signatureTemplate>v=1; s=james3; d=domain.example.com ; h=from
: reply-to : subject : date : to : cc : resent-date : resent-from :
resent-sender : resent-to : resent-cc : in-reply-to : references :
list-id : list-help : list-unsubscribe : list-subscribe : list-post :
list-owner : list-archive; a=rsa-sha256; bh=; b=;</signatureTemplate>
      <privateKey>
      -----BEGIN RSA PRIVATE KEY-----
      [Your Private Key]
      -----END RSA PRIVATE KEY-----
      </privateKey>
    </mailet>
  </processor>
</processors>

However this means that the domain is hard coded and works only in a single
domain hosting scenario.
Am I supposed to configure a dkim processor for each domain I'm hosting
even if the rest of the configuration is the same ?

This doesn't seem to align well with configuring the hosted domains through
the REST API and even when using the domainlist.xml file it means duplicate
declarations ...

(maybe I misunderstand the use of the api for administering domains in
james.apache.org/server/manage-webadmin.html#Administrating_domains)

Shouldn't dkim information be configured/provided in the same place as the
domains are configured ?


Thanks !
jean

Reply via email to