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.