[GH-ISSUE #2027] DKIM signature for domain aliases #1505

Closed
opened 2026-02-27 11:17:26 +03:00 by kerem · 4 comments
Owner

Originally created by @dirtyhillbilly on GitHub (Oct 5, 2020).
Original GitHub issue: https://github.com/modoboa/modoboa/issues/2027

Impacted versions

  • Modoboa: 1.15.0
  • installer used: Yes

Steps to reproduce

Create a domain and an alias of it.
Send a mail using that aliased domain -> opendkim can't find the key

I had to change the dkim view to achieve this :

CREATE OR REPLACE VIEW dkim AS (
SELECT id, name as domain_name, dkim_private_key_path AS private_key_path, dkim_key_selector AS selector
FROM admin_domain WHERE enable_dkim
UNION
SELECT admin_domainalias.id, admin_domainalias.name as domain_name, admin_domain.dkim_private_key_path AS private_key_path, admin_domain.dkim_key_selector AS selector from admin_domainalias 
JOIN admin_domain ON admin_domainalias.target_id=admin_domain.id);
Originally created by @dirtyhillbilly on GitHub (Oct 5, 2020). Original GitHub issue: https://github.com/modoboa/modoboa/issues/2027 # Impacted versions * Modoboa: 1.15.0 * installer used: Yes # Steps to reproduce Create a domain and an alias of it. Send a mail using that aliased domain -> opendkim can't find the key I had to change the dkim view to achieve this : ``` CREATE OR REPLACE VIEW dkim AS ( SELECT id, name as domain_name, dkim_private_key_path AS private_key_path, dkim_key_selector AS selector FROM admin_domain WHERE enable_dkim UNION SELECT admin_domainalias.id, admin_domainalias.name as domain_name, admin_domain.dkim_private_key_path AS private_key_path, admin_domain.dkim_key_selector AS selector from admin_domainalias JOIN admin_domain ON admin_domainalias.target_id=admin_domain.id); ```
kerem 2026-02-27 11:17:26 +03:00
Author
Owner

@tonioo commented on GitHub (Oct 5, 2020):

@dirtyhillbilly Thank you for this contribution but I see 2 problems with your query:

  1. You're using admin_domainalias.id which is a different sequence than domain.id, so it will create duplicates in the view (I don't know if it's a problem or not)
  2. You're including every domain alias in the result without checking if DKIM signing is enabled or not for the related domain
<!-- gh-comment-id:703444061 --> @tonioo commented on GitHub (Oct 5, 2020): @dirtyhillbilly Thank you for this contribution but I see 2 problems with your query: 1. You're using ``admin_domainalias.id`` which is a different sequence than ``domain.id``, so it will create duplicates in the view (I don't know if it's a problem or not) 2. You're including every domain alias in the result without checking if DKIM signing is enabled or not for the related domain
Author
Owner

@dirtyhillbilly commented on GitHub (Oct 6, 2020):

I think 1. is a problem, collisions will happen.

This one works better, then. I'm quite new to SQL, as you can see ;) :

SELECT id, name as domain_name, dkim_private_key_path AS private_key_path, dkim_key_selector AS selector
FROM admin_domain WHERE enable_dkim
UNION
SELECT -admin_domainalias.id, admin_domainalias.name as domain_name, admin_domain.dkim_private_key_path AS private_key_path, admin_domain.dkim_key_selector AS selector from admin_domainalias 
JOIN admin_domain ON admin_domainalias.target_id=admin_domain.id where enable_dkim;
<!-- gh-comment-id:704093132 --> @dirtyhillbilly commented on GitHub (Oct 6, 2020): I think 1. is a problem, collisions will happen. This one works better, then. I'm quite new to SQL, as you can see ;) : ``` SELECT id, name as domain_name, dkim_private_key_path AS private_key_path, dkim_key_selector AS selector FROM admin_domain WHERE enable_dkim UNION SELECT -admin_domainalias.id, admin_domainalias.name as domain_name, admin_domain.dkim_private_key_path AS private_key_path, admin_domain.dkim_key_selector AS selector from admin_domainalias JOIN admin_domain ON admin_domainalias.target_id=admin_domain.id where enable_dkim; ```
Author
Owner

@dirtyhillbilly commented on GitHub (Oct 7, 2020):

clone of #1882

<!-- gh-comment-id:704874999 --> @dirtyhillbilly commented on GitHub (Oct 7, 2020): clone of #1882
Author
Owner

@dirtyhillbilly commented on GitHub (Dec 30, 2022):

Some years and upgrades later, i still use :
CREATE OR REPLACE VIEW dkim AS ( SELECT ROW_NUMBER() OVER(order by domain_name, selector) as id, domain_name, private_key_path, selector FROM (SELECT admin_domainalias.name as domain_name, admin_domain.dkim_private_key_path AS private_key_path, admin_domain.dkim_key_selector AS selector from admin_domainalias JOIN admin_domain ON admin_domainalias.target_id=admin_domain.id where enable_dkim UNION SELECT name as domain_name, dkim_private_key_path AS private_key_path, dkim_key_selector AS selector FROM admin_domain WHERE enable_dkim) as aliases );

<!-- gh-comment-id:1368033997 --> @dirtyhillbilly commented on GitHub (Dec 30, 2022): Some years and upgrades later, i still use : `CREATE OR REPLACE VIEW dkim AS ( SELECT ROW_NUMBER() OVER(order by domain_name, selector) as id, domain_name, private_key_path, selector FROM (SELECT admin_domainalias.name as domain_name, admin_domain.dkim_private_key_path AS private_key_path, admin_domain.dkim_key_selector AS selector from admin_domainalias JOIN admin_domain ON admin_domainalias.target_id=admin_domain.id where enable_dkim UNION SELECT name as domain_name, dkim_private_key_path AS private_key_path, dkim_key_selector AS selector FROM admin_domain WHERE enable_dkim) as aliases );`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/modoboa-modoboa#1505
No description provided.