OpenDKIM-Socket in Debian kann in / etc / default / opendkim nicht geändert werden


18

Ich versuche, opendkim auf Debian stretch einzurichten, aber ich kann den Socket nicht ändern. Ich möchte den Socket auf ändern, /var/spool/postfix/opendkim/opendkim.sockdamit ich ihn mit Postfix verwenden kann.

Ich habe hinzugefügt Socket local:/var/spool/postfix/opendkim/opendkim.sockzu/etc/opendkim.conf

und auch versucht , das Hinzufügen SOCKET="local:/var/spool/postfix/opendkim/opendkim.sockzu /etc/default/opendkim(was ich schaffen musste).

Egal was ich ändere oder wie oft ich opendkim neu starte, es wird immer /var/run/opendkim/opendkim.sockals Socket verwendet.

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

Was mache ich falsch? (Ich denke, es ist mein Fehler, da ich niemanden mit dem gleichen Problem finden kann.)

AKTUALISIEREN:

Ändern /etc/default/opendkimauf SOCKET="inet:8891@localhost"und das Ändern der Postfix - Config diese Buchse Ergebnisse zu verwenden , ininet:localhost:8891: Connection refused

UPDATE2:

Ich habe jetzt die Datei ersetzt, die im Debian-Stretch-Paket enthalten ist:

# 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=   

Dazu gehören die folgenden Zeilen, in denen der Socket festgelegt wird:

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

"damit ich es mit postfix verwenden kann" Sind Sie sicher, dass Sie dies benötigen, damit es mit Postfix funktioniert?
Miloš Đakonović

@Miloshio dachte ich mir so wie postfix in einer chroot läuft. (Nach dem Tutorial
folge

@Miloshio postfix behauptet connect to Milter service local:/var/run/opendkim/opendkim.sock: No such file or directorysogar, dass es existiert, da es an/var/spool/postfix/
lw1.at

Es hört sich so an, als wäre es nicht chrooted. Könnten Sie das bitte noch einmal überprüfen? Ihre Wege sollten aussehen, /var/spool/postfix/var/run...wenn es ist
Miloš Đakonović

In jedem Szenario würde ich inetstatt local. Wenn Sie den Service nicht debuggen, versuchen Sie möglicherweise
Folgendes

Antworten:


31

Ich habe endlich die Lösung gefunden.

Der /etc/init.d/opendkimscheint gar nichts zu tun. Stattdessen wird die Servicedatei /lib/systemd/system/opendkim.serviceverwendet, die den falschen fest codierten Socket hatte.

Das Debian-Paket scheint aber auch eine Bash zu enthalten, die den korrekten systemd-Dienst generiert.

Also nach dem Laufen

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart

Nach dem Neustart von opendkim erscheint die Socket-Datei an der erwarteten Stelle. Dies kann überprüft werden, indem Folgendes aufgerufen wird:

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

Update: Es scheint, dass es einen Debian-Fehlerbericht zu diesem Problem gibt: # 861169


3

Ich habe nicht genug Reputation, um einen Kommentar abzugeben, und wollte bestätigen, dass nach stundenlanger Suche nach einer Lösung für die OpenDKim-Postfix-Fehlermeldung "Verbindung verweigert" /lib/systemd/system/opendkim.servicedie von LocutusBE bereitgestellte Bearbeitung mit Ubuntu 17.04 funktionierte:

warning: connect to Milter service inet:localhost:8891: Connection refused

bearbeiten /lib/systemd/system/opendkim.service

Veränderung:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock

zu:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost

systemctl daemon-reload

und

systemctl opendkim restart

Bevor die Bearbeitung versucht , habe ich die Postfix - Benutzer auf die opendkim Gruppe und versuchte /lib/opendkim/opendkim.service.generatepro Lukas Winkler Lösung. Der Fehler, dass die Verbindung abgelehnt wurde, blieb bestehen, bis die Portnummer hinzugefügt wurde /lib/systemd/system/opendkim.service.

Zum Aktualisieren habe /lib/systemd/system/opendkim.serviceich Port 8891 für Ubuntu verwendet, die ursprüngliche ExecStart-Zeile zu Testzwecken auskommentiert und dann eine neue Zeile mit Port # hinzugefügt:

/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

Die passende Portnummer wurde zusätzlich angegeben in /etc/opendkim.conf:

Socket                  inet:8891@localhost

Und /etc/postfix/main.cf:

smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2

Nach dem Neustart des systemctl-Daemons, von opendkim und von postfix wurde ausgehende Mail ohne Probleme signiert und im Mail-Protokoll wurde "DKIM-Signaturfeld hinzugefügt" angezeigt.

systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart

Bei der kürzlich erfolgten Konfiguration von OpenDkim mit Centos7 gab es keine Verbindungsprobleme. Anscheinend handelte es sich in diesem Fall um ein Ubuntu-Problem. Vielen Dank an Lukas Winkler für das Posten der Frage und an diejenigen, die ihre Lösungen geteilt haben.


2

Um inetSocket zu verwenden , müssen Sie Folgendes angeben:

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

Außerdem müssen Sie die Einstellungen in Postfix folgendermaßen ändern:

in /etc/postfix/main.cf add:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

Wenn Sie localden gewünschten Pfad nicht festlegen können, empfehle ich Ihnen Folgendes:

  • greift ein Protokoll aus mail, syslogoder opendkimin /var/logund prüft

  • Überprüfen Sie das /etc/init.d/opendkimSkript und prüfen Sie, ob die SOCK-Datei fest auf einen Wert eingestellt ist

  • versuche mit default zu gehen local:/var/run/opendkim/opendkim.sock- und spezifiziere smtpd_milters = local:/var/run/opendkim/opendkim.sockund non_smtpd_milters = local:/var/run/opendkim/opendkim.sockin/etc/postfix/main.cf


Ich habe jetzt die Konfiguration so geändert, dass sie genau wie deine ist (gleicher Port), aber ich bekomme immer nochwarning: connect to Milter service inet:localhost:12301: Connection refused
lw1.at

Haben Sie versucht, beide Dienste nach der Bearbeitung neu zu starten?
Miloš Đakonović

Ich habe und jetzt habe ich auch neu gestartet. Bei mail.log sehe ich immer folgende ZeileOpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
lw1.at 30.04.17

Sie sehen diese Zeile auch mit SOCKET="inet:12301@localhostauf opendkim conf gesetztem File?
Miloš Đakonović

danke für die ideen. Ich habe die Lösung gefunden (mit dem Debian-Paket ist etwas Seltsames)
lw1.at

1

Das hat bei mir funktioniert:

bearbeiten /lib/systemd/system/opendkim.service

Veränderung:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock

zu:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost

systemctl daemon-reload

und

systemctl opendkim restart

Dies ist genau die Änderung, die vom Skript /lib/opendkim/opendkim.service.generate vorgenommen wird.
lw1.at

Vielen Dank - das hat es auf Ubuntu 16.04.3 LTS behoben, das fehlt opendkim.service.generate.
Ivan Mir

0

OpenDKIM hat funktioniert, bis ich meinen Server aktualisiert habe. OpenDKIM konnte nicht gestartet werden und es gab keinen Socket, zu dem der Milter eine Verbindung herstellen konnte. In /var/log/syslogkonnte ich sehen, dass opendkim nicht versuchte, einen Socket an einer anderen Stelle als vor dem Upgrade zu erstellen. Ich versuchte , die Socket - Einstellungen in bearbeiten /etc/opendkim.conf, /etc/default/opendkimund /lib/systemd/system/opendkim.serviceaber es hat nicht geholfen. Es stellte sich heraus, dass die Information die ganze Zeit vor mir war:

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

Mir ist aufgefallen, dass die Einstellungen durch die Datei "override.conf" überschrieben und so bearbeitet wurden, dass sie mit meiner /etc/postfix/main.cfübereinstimmen (wird als chroot ausgeführt):

smtpd_milters = local:/opendkim/opendkim.sock
non_smtpd_milters = local:/opendkim/opendkim.sock

Bearbeiten /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

Und schließlich den Daemon und opendkim neu starten:

systemctl daemon-reload && systemctl restart opendkim

0

Ich habe gerade /etc/systemd/system/opendkim.service.d/override.conf in /etc/systemd/system/opendkim.service.d/override.conf.old umbenannt, damit die ExecStart-Parameter nicht überschrieben werden.

Alles funktioniert einwandfrei, wenn Sie config aus /etc/opendkim.conf auswählen


0

Mein opendkim-Dienst wurde nach der Installation nicht auf Port 8100 aktiviert, und vorherige Lösungen halfen nicht. Also habe ich es versucht

/lib/opendkim/opendkim.service.generate

mit gesagt

-bash: /lib/opendkim/opendkim.service.generate: No such file or directory

Also habe ich mir die Servicedatei angesehen

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

und seltsame Wege gefunden

EnvironmentFile=-/etc/default/opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim

und befehl

 /usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS

sagte

/usr/sbin/opendkim: option requires an argument -- 'p'

(siehe 2. Zeile der vorherigen Quote) Also ging ich zu

sudo nano /lib/systemd/system/opendkim.service

und "-" 3 mal gelöscht

sudo systemctl daemon-reload
sudo service opendkim restart
sudo netstat -tulpn

Das hat mir geholfen :-)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.