December 31, 20223 yr Moin, ich hab mich die letzten Tage durch die Signierung der Mails via DKIM gekämpft. Ich hab es jetzt mit rspamd am laufen - allerdings nicht in Verbindung mit Froxlor. Ich erstelle die Keys händisch für jede Domain und nutze einen externen Nameserver in welchen ich die Keys pro Domain eintrage. Mage jetzt nicht die beste Konfiguration sein, aber es sind auch nicht so viele Domains. Ich bräuchte von Froxlor zwei Dinge: einen in einem Verzeichnis geschriebenen privaten Schlüssel der via rspamd genutzt werden kann. Momentan währe dies in meinem Fall: $domain.$selector.key und dann bräuchte ich irgendwo den öffentlichen Schlüssel welche ich dann händisch in die externen Nameserver eintragen kann. Bei ISPconfig ist das relativ einfach gelöst. Dort werden die Keys im Frontend ausgegeben. Ich kenne auch einige Hoster welche es Endkunden exakt so anbieten: den Public key zum kopieren. Mir ist klar das der Anspruch ist DKIM in Verbindung mit Naemeserver laufen zu lassen aber das geht an einem Use-Case vorbei: eigener E-Mail Sever, keine eigener Nameserver. Ich frage mich ob es nicht einfacher wäre DKIM unabhängig vom DNS bereitzustellen? Würde das nicht vieles vereinfachen und eine gute Lösung bieten? Einen guten Rutsch!
December 31, 20223 yr gerne als feature request (oder auch mal schauen was es da schon bzgl dkim gibt) auf github eintragen.
January 10, 20233 yr Froxlor schreibt doch auf Wunsch (Einstellungen) eine Datei voller Domains, Separatoren und Keydateinamen sowie die privaten Keys in ein Verzeichnis. Ich habe dazu einen dirty hack, der das in eine rspmad-Konfiguration übersetzt #!/bin/bash chown root._rspamd /etc/postfix/dkim/* SIGNFILE=/tmp/dkim_signing.conf echo "# If false, messages with empty envelope from are not signed" >$SIGNFILE echo "allow_envfrom_empty = true;" >>$SIGNFILE echo "# If true, envelope/header domain mismatch is ignored" >>$SIGNFILE echo "allow_hdrfrom_mismatch = true;" >>$SIGNFILE echo "# If true, multiple from headers are allowed (but only first is used)" >>$SIGNFILE echo "allow_hdrfrom_multiple = false;" >>$SIGNFILE echo "# If true, username does not need to contain matching domain" >>$SIGNFILE echo "allow_username_mismatch = true;" >>$SIGNFILE echo "# If false, messages from local networks are not selected for signing" >>$SIGNFILE echo "sign_local = true;" >>$SIGNFILE echo "# If false, messages from domains not defined here will not be signed" >>$SIGNFILE echo "try_fallback = false;" >>$SIGNFILE echo "symbol = "DKIM_SIGNED";" >>$SIGNFILE echo "use_domain = "envelope";" >>$SIGNFILE echo "domain {" >>$SIGNFILE cat /etc/postfix/dkim/dkim-keys.conf | while read LINE; do DOMAIN=`echo $LINE | awk -F: '{ print $2 }'` echo " $DOMAIN {" >>$SIGNFILE ED_ENABLED="no" if [ -f /etc/postfix/dkim/$DOMAIN.pubkey ]; then ED_ENABLED="yes" ED_SELECTOR=`head -n 1 /etc/postfix/dkim/$DOMAIN.pubkey | awk -F. '{print $1}'` echo " selectors [" >>$SIGNFILE echo " {" >>$SIGNFILE echo " path = \"/etc/postfix/dkim/$DOMAIN.privkey\";" >>$SIGNFILE echo " selector = \"$ED_SELECTOR\";" >>$SIGNFILE echo " }," >>$SIGNFILE echo " {" >>$SIGNFILE fi KEY=`echo $LINE | awk -F: '{ print $3 }'` echo " path = \"$KEY\";" >>$SIGNFILE SELECTOR=`echo $KEY | awk -F/ '{ print $5 }' | awk -F. '{ print $1 }'` echo " selector = \"$SELECTOR\";" >>$SIGNFILE if [ $ED_ENABLED = "yes" ]; then echo " }" >>$SIGNFILE echo " ]" >>$SIGNFILE fi echo " }" >>$SIGNFILE done echo "}" >>$SIGNFILE cp $SIGNFILE /etc/rspamd/local.d/dkim_signing.conf systemctl reload rspamd rm $SIGNFILE Das Skript kannst Du auch durch Froxlor triggern lassen, siehe DKIM-Einstellungen.
January 15, 20233 yr Author Danke! super! Das wäre genau das was Froxlor von Haus aus bereitstellen sollte. Ich bring das dann als Feature Request nach Github.
January 15, 20233 yr Denk bitte daran, dass für alle unterstützten distro's in lib/configfiles da "setup und config files" bereitgetellt werden muss (bzw. z.B. bei postfix noch als ergängung den rspamd einfügen oder so)
January 15, 20233 yr Ich hatte hier eine Version die Mails doppelt signiert mit SHA und ellyptischen Kurven - da letzteres noch nicht viel Support hat, jetzt die abgespeckte Version #!/bin/bash chown root._rspamd /etc/postfix/dkim/* SIGNFILE=/tmp/dkim_signing.conf echo "# If false, messages with empty envelope from are not signed" >$SIGNFILE echo "allow_envfrom_empty = true;" >>$SIGNFILE echo "# If true, envelope/header domain mismatch is ignored" >>$SIGNFILE echo "allow_hdrfrom_mismatch = true;" >>$SIGNFILE echo "# If true, multiple from headers are allowed (but only first is used)" >>$SIGNFILE echo "allow_hdrfrom_multiple = false;" >>$SIGNFILE echo "# If true, username does not need to contain matching domain" >>$SIGNFILE echo "allow_username_mismatch = true;" >>$SIGNFILE echo "# If false, messages from local networks are not selected for signing" >>$SIGNFILE echo "sign_local = true;" >>$SIGNFILE echo "# If false, messages from domains not defined here will not be signed" >>$SIGNFILE echo "try_fallback = false;" >>$SIGNFILE echo "symbol = "DKIM_SIGNED";" >>$SIGNFILE echo "use_domain = "envelope";" >>$SIGNFILE echo "domain {" >>$SIGNFILE cat /etc/postfix/dkim/dkim-keys.conf | while read LINE; do DOMAIN=`echo $LINE | awk -F: '{ print $2 }'` echo " $DOMAIN {" >>$SIGNFILE KEY=`echo $LINE | awk -F: '{ print $3 }'` echo " path = \"$KEY\";" >>$SIGNFILE SELECTOR=`echo $KEY | awk -F/ '{ print $5 }' | awk -F. '{ print $1 }'` echo " selector = \"$SELECTOR\";" >>$SIGNFILE echo " }" >>$SIGNFILE done echo "}" >>$SIGNFILE cp $SIGNFILE /etc/rspamd/local.d/dkim_signing.conf systemctl reload rspamd rm $SIGNFILE
Create an account or sign in to comment