Impossible de changer le socket OpenDKIM dans l'étirement Debian dans / etc / default / opendkim


18

J'essaie de configurer opendkim sur le tronçon Debian mais je n'arrive pas à changer le socket. Je veux changer le socket pour /var/spool/postfix/opendkim/opendkim.sockpouvoir l'utiliser avec postfix.

J'ai ajouté Socket local:/var/spool/postfix/opendkim/opendkim.sockà/etc/opendkim.conf

et aussi 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 l'utilise toujours /var/run/opendkim/opendkim.sockcomme socket.

➜  ~ 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:

Changement /etc/default/opendkimde SOCKET="inet:8891@localhost"et changer la configuration de postfix utiliser ce résultat du socketinet:localhost:8891: Connection refused

MISE À JOUR2:

J'ai maintenant remplacé 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:12345@192.0.2.1                                                                                                                                                
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

"afin que je puisse l'utiliser avec postfix" Êtes-vous sûr que vous en avez besoin pour le faire fonctionner avec Postfix?
— Miloš Đakonović

@Miloshio Je le pensais alors que le suffixe s'exécute dans un chroot. (Selon le tutoriel que je suis en
— train de

@Miloshio postfix prétend connect to Milter service local:/var/run/opendkim/opendkim.sock: No such file or directorymême qu'il existe car il est chrooté/var/spool/postfix/
— lw1.at

Il semble que ce ne soit pas chrooté. Pourriez-vous vérifier à nouveau? Vos chemins devraient ressembler /var/spool/postfix/var/run...si c'est le cas
— Miloš Đakonović

Dans tous les scénarios, j'utiliserais inetplutôt local. Peut-être que si vous ne déboguez pas le service, essayez d'implémenter: digitalocean.com/community/tutorials/…
— Miloš Đakonović

Réponses:


31

J'ai finalement trouvé la solution.

Le /etc/init.d/opendkimne semble rien faire. Mais à la place, le fichier de service /lib/systemd/system/opendkim.serviceest utilisé et contient 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'emplacement attendu, ce qui peut être vérifié en appelant:

tail /var/log/mail.log | grep OpenDKIM

Mise à jour: Il semble qu'il existe un rapport de bogue Debian sur ce problème: # 861169


2

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, la /lib/systemd/system/opendkim.servicemodification fournie par LocutusBE a fonctionné 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 l'édition j'ai ajouté l'utilisateur postfix au groupe opendkim et essayé /lib/opendkim/opendkim.service.generatepar Lukas Winkler solution. L'erreur de connexion refusée a persisté jusqu'à ce que le numéro de port soit ajouté /lib/systemd/system/opendkim.service.

Pour 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.


1

Pour utiliser inetsocket, vous devez spécifier:

SOCKET="inet:12301@localhost" à /etc/default/opendkim

vous devez également modifier les paramètres dans Postfix en conséquence:

en /etc/postfix/main.cf plus:

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 localle chemin souhaité, je vous suggère de:

  • prenez un journal à partir mail, syslogou opendkimdans /var/loget vérifier

  • vérifier le /etc/init.d/opendkimscript et inspecter si le fichier de chaussette est défini sur une valeur

  • essayez d'aller avec défaut local:/var/run/opendkim/opendkim.sock- et spécifiez smtpd_milters = local:/var/run/opendkim/opendkim.socket non_smtpd_milters = local:/var/run/opendkim/opendkim.sockdans/etc/postfix/main.cf


J'ai maintenant changé la configuration pour qu'elle soit exactement comme la vôtre (même port) mais je reçois toujourswarning: connect to Milter service inet:localhost:12301: Connection refused
— lw1.at

avez-vous essayé de redémarrer les deux services après la modification?
— Miloš Đakonović

Je l'ai fait et maintenant j'ai aussi redémarré. Lorsque je regarde mail.log, je vois toujours la ligne suivanteOpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
— lw1.at

Vous voyez cette ligne même avec SOCKET="inet:12301@localhostset to opendkim conf file?
— Miloš Đakonović

1
opendkim ignore le paramètre de socket / etc / default / opendkim - pour l'instant, nous devons changer /etc/opendkim.conf
— SledgehammerPL

1

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

C'est exactement le changement qui est effectué par le script /lib/opendkim/opendkim.service.generate.
— lw1.at

Merci beaucoup - cela l'a corrigé sur Ubuntu 16.04.3 LTS qui manque opendkim.service.generate.
— Ivan Mir

0

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/syslogje pouvais voir que opendkim n'a pas réussi à créer une socket à un endroit différent qu'avant la mise à niveau. J'ai essayé de modifier les paramètres de prise en /etc/opendkim.conf, /etc/default/opendkimet , /lib/systemd/system/opendkim.servicemais il 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 de façon à ce qu'ils soient alignés avec mon /etc/postfix/main.cf(s'exécute en tant que 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

0

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 avec la config picking de /etc/opendkim.conf


0

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é :-)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.