J'essaie de configurer opendkim sur le tronçon Debian mais je n'arrive pas à changer le socket. Je veux changer le socket en /var/spool/postfix/opendkim/opendkim.sock
donc je peux l'utiliser avec postfix.
J'ai ajouté Socket local:/var/spool/postfix/opendkim/opendkim.sock
à /etc/opendkim.conf
et a également essayé d'ajouter SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock
à /etc/default/opendkim
(que je devais créer).
Peu importe ce que je change ou à quelle fréquence je redémarre opendkim, il utilise toujours /var/run/opendkim/opendkim.sock
comme prise.
➜ ~ netstat -a | fgrep LISTEN | grep open
unix 2 [ ACC ] STREAM LISTENING 5534128 /var/run/opendkim/opendkim.sock
➜ ~ Sudo systemctl status opendkim.service
● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2017-04-30 12:41:54 CEST; 5min ago
Docs: man:opendkim(8)
man:opendkim.conf(5)
man:opendkim-genkey(8)
man:opendkim-genzone(8)
man:opendkim-testadsp(8)
man:opendkim-testkey
http://www.opendkim.org/docs.html
Process: 25246 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock (code=exited, status=0/SUCCESS)
Main PID: 25248 (opendkim)
Tasks: 7 (limit: 4915)
CGroup: /system.slice/opendkim.service
├─25248 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
└─25249 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
Apr 30 12:41:54 vServer systemd[1]: Starting OpenDKIM DomainKeys Identified Mail (DKIM) Milter...
Apr 30 12:41:54 vServer systemd[1]: Started OpenDKIM DomainKeys Identified Mail (DKIM) Milter.
Apr 30 12:41:54 vServer opendkim[25249]: OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
Qu'est-ce que je fais mal? (Je suppose que c'est mon erreur car je ne trouve personne d'autre avec le même problème)
MISE À JOUR:
En changeant /etc/default/opendkim
à SOCKET="inet:8891@localhost"
et la modification de la configuration de postfix pour utiliser ce socket se traduit par inet:localhost:8891: Connection refused
PDATE2:
J'ai maintenant remplacé par le fichier fourni dans le paquet extensible debian:
# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.
#DAEMON_OPTS=""
# Change to /var/spool/postfix/var/run/opendkim to use a Unix socket with
# postfix in a chroot:
RUNDIR=/var/spool/postfix/var/run/opendkim
#RUNDIR=/var/run/opendkim
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
# default:
SOCKET=local:$RUNDIR/opendkim.sock
# listen on all interfaces on port 54321:
#SOCKET=inet:54321
# listen on loopback on port 12345:
#SOCKET=inet:12345@localhost
# listen on 192.0.2.1 on port 12345:
#SOCKET=inet:[email protected]
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=
Le inclut les lignes suivantes où le socket est décidé:
if [ -f /etc/opendkim.conf ]; then
CONFIG_SOCKET=`awk '$1 == "Socket" { print $2 }' /etc/opendkim.conf`
fi
# This can be set via Socket option in config file, so it's not required
if [ -n "$SOCKET" -a -z "$CONFIG_SOCKET" ]; then
DAEMON_OPTS="-p $SOCKET $DAEMON_OPTS"
fi
J'ai finalement trouvé la solution.
Le /etc/init.d/opendkim
ne semble rien faire. Mais à la place, le fichier de services /lib/systemd/system/opendkim.service
est utilisé avec le mauvais socket codé en dur.
Mais le paquet debian semble également inclure un bash qui génère le service systemd correct.
Donc, après avoir couru
/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
et en redémarrant opendkim, le fichier socket apparaît à l'endroit prévu, ce qui peut être vérifié en appelant:
tail /var/log/mail.log | grep OpenDKIM
Mise à jour: Il semble qu'il y ait un rapport de bogue Debian sur ce problème: # 861169
Je n'ai pas assez de réputation pour commenter et je voulais reconnaître qu'après des heures de recherche d'une solution au message d'erreur "connexion refusée" d'OpenDKim-Postfix, le /lib/systemd/system/opendkim.service
modification fournie par LocutusBE a travaillé avec Ubuntu 17.04:
warning: connect to Milter service inet:localhost:8891: Connection refused
éditer
/lib/systemd/system/opendkim.service
changement:
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
à:
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost systemctl daemon-reload
et
systemctl opendkim restart
Avant de tenter la modification, j'ai ajouté l'utilisateur postfix au groupe opendkim et essayé /lib/opendkim/opendkim.service.generate
par solution de Lukas Winkler . L'erreur de connexion refusée a persisté jusqu'à ce que le numéro de port soit ajouté à /lib/systemd/system/opendkim.service
.
Mettre à jour /lib/systemd/system/opendkim.service
, J'ai utilisé le port 8891 pour Ubuntu et commenté la ligne ExecStart d'origine à des fins de test, puis j'ai ajouté une nouvelle ligne avec le port #:
/lib/systemd/system/opendkim.service (Service category):
[Service]
Type=forking
PIDFile=/var/run/opendkim/opendkim.pid
User=opendkim
UMask=0007
#ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:8891@localhost
Restart=on-failure
ExecReload=/bin/kill -USR1 $MAINPID
Le numéro de port correspondant a également été spécifié dans /etc/opendkim.conf
:
Socket inet:8891@localhost
Et /etc/postfix/main.cf
:
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
Après avoir redémarré le démon systemctl, opendkim et postfix, le courrier sortant a été signé sans problème et le journal de messagerie a montré "Champ DKIM-Signature ajouté".
systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart
Il n'y a eu aucun problème de connexion lors de la configuration récente d'OpenDkim avec Centos7, donc apparemment dans ce cas, il était lié à Ubuntu. Merci à Lukas Winkler d'avoir posté la question et à ceux qui ont partagé leurs solutions.
Pour utiliser la prise inet
, vous devez spécifier:
SOCKET="inet:12301@localhost"
à /etc/default/opendkim
vous devez également modifier les paramètres dans Postfix en conséquence:
dans /etc/postfix/main.cf
ajouter:
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
si vous ne pouvez pas définir local
sur le chemin souhaité, je vous suggère de:
récupérer un journal de mail
, syslog
ou opendkim
dans /var/log
et vérifie
vérifier /etc/init.d/opendkim
script et inspecter si le fichier de chaussette est dur à une valeur
essayez d'aller avec par défaut local:/var/run/opendkim/opendkim.sock
- et spécifiez smtpd_milters = local:/var/run/opendkim/opendkim.sock
et non_smtpd_milters = local:/var/run/opendkim/opendkim.sock
dans /etc/postfix/main.cf
Cela a fonctionné pour moi:
éditer /lib/systemd/system/opendkim.service
changement:
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
à:
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost
systemctl daemon-reload
et
systemctl opendkim restart
Mon service opendkim ne s'est pas réveillé sur le port 8100 après l'installation et les solutions précédentes n'ont pas aidé. J'ai donc essayé
/lib/opendkim/opendkim.service.generate
avec dit
-bash: /lib/opendkim/opendkim.service.generate: No such file or directory
donc j'ai regardé le fichier de service
cat /lib/systemd/system/opendkim.service
# If you are using OpenDKIM with SQL datasets it might be necessary to start OpenDKIM after the database servers.
# For example, if using both MariaDB and PostgreSQL, change "After=" in the "[Unit]" section to:
# After=network.target nss-lookup.target syslog.target mariadb.service postgresql.service
[Unit]
Description=DomainKeys Identified Mail (DKIM) Milter
Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html
After=network.target nss-lookup.target
[Service]
Type=forking
EnvironmentFile=-/etc/default/opendkim
PIDFile=/var/run/opendkim/opendkim.pid
PermissionsStartOnly=true
User=opendkim
Group=opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim
ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS
TimeoutStartSec=10
ExecReload=/bin/kill -USR1 $MAINPID
et trouvé d'étranges chemins
EnvironmentFile=-/etc/default/opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim
et commande
/usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS
m'a dit
/usr/sbin/opendkim: option requires an argument -- 'p'
(regardez la 2e ligne sur le quota précédent) alors je suis allé à
Sudo nano /lib/systemd/system/opendkim.service
et supprimé "-" 3 fois Ensuite
Sudo systemctl daemon-reload
Sudo service opendkim restart
Sudo netstat -tulpn
Cela m'a aidé :-)
OpenDKIM a fonctionné jusqu'à ce que je mette à niveau mon serveur. OpenDKIM ne démarre pas et il n'y a pas de socket en cours d'exécution pour que le Milter puisse se connecter. Dans /var/log/syslog
J'ai pu voir qu'opendkim n'a pas réussi à créer une socket à un autre endroit qu'avant la mise à niveau. J'ai essayé de modifier les paramètres de socket dans /etc/opendkim.conf
, /etc/default/opendkim
et /lib/systemd/system/opendkim.service
mais cela n'a pas aidé. Il s'avère que l'info était devant moi tout le temps:
opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/opendkim.service.d
└─override.conf
Active: active (running) since Sat 2017-10-14 16:03:45 CEST; 4h 44min ago
J'ai remarqué que les paramètres ont été écrasés par le fichier "override.conf" et modifiés afin qu'ils soient alignés avec mon /etc/postfix/main.cf
(s'exécute en chroot):
smtpd_milters = local:/opendkim/opendkim.sock
non_smtpd_milters = local:/opendkim/opendkim.sock
Éditer /etc/systemd/system/opendkim.service.d/override.conf
[Service]
PIDFile=/var/spool/postfix/opendkim/opendkim.pid
ExecStart=
ExecStart=/usr/sbin/opendkim -P /var/spool/postfix/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock
Et enfin, redémarrer le démon et opendkim:
systemctl daemon-reload && systemctl restart opendkim
Je viens de renommer /etc/systemd/system/opendkim.service.d/override.conf en /etc/systemd/system/opendkim.service.d/override.conf.old afin qu'il ne remplace pas les paramètres ExecStart.
Tout fonctionne très bien en choisissant la configuration depuis /etc/opendkim.conf