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:[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
lw1.at
la source
"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

lw1.at
la source
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.

1keown
la source
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

Miloš Đakonović
la source
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
LocutusBE
la source
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
lallepot
la source
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

Aslam Sayyed
la source
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é :-)

Andy Velychkovskyi
la source