]> code.citadel.org Git - citadel.git/commitdiff
Attempt to learn signing domain from sender address
authorArt Cancro <ajc@citadel.org>
Mon, 13 May 2024 22:12:50 +0000 (22:12 +0000)
committerArt Cancro <ajc@citadel.org>
Mon, 13 May 2024 22:12:50 +0000 (22:12 +0000)
citadel/server/modules/smtp/serv_smtpclient.c

index 556eea687ea569b78a47b31a11c6ecc04de000ea..ac5f3883eedee39879fba2c8b8e40d3810a72419 100644 (file)
@@ -236,7 +236,8 @@ int smtp_attempt_delivery(long msgid, char *recp, char *envelope_from, char *sou
        // If we have a DKIM key, try to sign the message.
        char *dkim_private_key = CtdlGetConfigStr("dkim_private_key");
        char *dkim_selector = CtdlGetConfigStr("dkim_selector");
-       if (!IsEmptyStr(dkim_private_key) && !IsEmptyStr(dkim_selector)) {
+       char *dkim_from_domain = (strchr(fromaddr, '@') ? strchr(fromaddr, '@')+1 : NULL);
+       if (!IsEmptyStr(dkim_private_key) && !IsEmptyStr(dkim_selector) && !IsEmptyStr(dkim_from_domain)) {
                char *pkey = strdup(dkim_private_key);
                if (pkey) {
                        char *sp;
@@ -244,7 +245,7 @@ int smtp_attempt_delivery(long msgid, char *recp, char *envelope_from, char *sou
                                *sp = '\n';
                        }
                        syslog(LOG_DEBUG, "private key: <%s>\n", pkey);
-                       dkim_sign(s.TheMessage, pkey, "dev.citadel.org", dkim_selector);        // FIXME use the right hostname
+                       dkim_sign(s.TheMessage, pkey, dkim_from_domain, dkim_selector);
                        free(pkey);
                }
        }