Non è possibile modificare il socket OpenDKIM in estensione Debian in / etc / default / opendkim


18

Sto cercando di installare opendkim su Debian stretch ma non riesco a cambiare socket. Voglio cambiare il socket in /var/spool/postfix/opendkim/opendkim.sockmodo da poterlo utilizzare con Postfix.

Ho aggiunto Socket local:/var/spool/postfix/opendkim/opendkim.socka/etc/opendkim.conf

e ho anche provato ad aggiungere SOCKET="local:/var/spool/postfix/opendkim/opendkim.socka /etc/default/opendkim(che dovevo creare).

Indipendentemente da ciò che cambio o dalla frequenza con cui riavvio opendkim, utilizza sempre /var/run/opendkim/opendkim.sockcome 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)

Che cosa sto facendo di sbagliato? (Immagino sia un mio errore dato che non riesco a trovare nessun altro con lo stesso problema)

AGGIORNARE:

Cambiando /etc/default/opendkimper SOCKET="inet:8891@localhost"e cambiare la configurazione suffisso di utilizzare questa presa risultati ininet:localhost:8891: Connection refused

UPDATE2:

Ora ho sostituito con il file in bundle nel pacchetto stretch 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=   

Include le seguenti righe in cui viene deciso il socket:

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

"così posso usarlo con Postfix" Sei sicuro di averne bisogno per farlo funzionare con Postfix?
Miloš Đakonović,

@Miloshio L'ho pensato così mentre Postfix corre in un chroot. (Secondo il tutorial che sto seguendo )
lw1.at

@Miloshio afferma che Postfix ha connect to Milter service local:/var/run/opendkim/opendkim.sock: No such file or directorypersino pensato che esistesse mentre è chrootato in/var/spool/postfix/
lw1.at

Sembra che non sia chroot. Per favore, puoi controllare di nuovo? I tuoi percorsi dovrebbero apparire come /var/spool/postfix/var/run...se fosse
Miloš Đakonović

In qualsiasi scenario, userei inetinvece di local. Forse, se non stai eseguendo il
Miloš Đakonović

Risposte:


31

Finalmente ho trovato la soluzione.

Il /etc/init.d/opendkimnon sembra di fare nulla. Invece /lib/systemd/system/opendkim.serviceviene utilizzato il file di servizio che aveva il socket errato codificato.

Ma il pacchetto debian sembra includere anche un bash che genera il servizio systemd corretto.

Quindi dopo aver corso

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

e riavviando opendkim il file socket appare nella posizione prevista, che può essere verificato chiamando:

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

Aggiornamento: sembra che ci sia un rapporto debian su questo problema: # 861169


2

Non ho abbastanza reputazione per commentare e volevo riconoscere che dopo ore di ricerca di una soluzione al messaggio di errore "connessione rifiutata" di OpenDKim-Postfix, la /lib/systemd/system/opendkim.servicemodifica fornita da LocutusBE ha funzionato con Ubuntu 17.04:

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

modificare /lib/systemd/system/opendkim.service

modificare:

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

per:

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

systemctl daemon-reload

e

systemctl opendkim restart

Prima di tentare la modifica ho aggiunto l'utente postfix al gruppo opendkim e ho cercato /lib/opendkim/opendkim.service.generateper di Lukas Winkler soluzione. L'errore di connessione rifiutato è persistito fino a quando non è stato aggiunto il numero di porta /lib/systemd/system/opendkim.service.

Per l'aggiornamento /lib/systemd/system/opendkim.service, ho usato la porta 8891 per Ubuntu e ho commentato la linea ExecStart originale a scopo di test, quindi ho aggiunto una nuova linea con la porta #:

/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

Il numero di porta corrispondente è stato inoltre specificato in /etc/opendkim.conf:

Socket                  inet:8891@localhost

E /etc/postfix/main.cf:

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

Dopo aver riavviato il demone systemctl, opendkim e postfix, la posta in uscita è stata firmata senza problemi e il registro di posta mostrava "Campo DKIM-Firma aggiunto".

systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart

Non ci sono stati problemi di connessione durante la configurazione di OpenDkim con Centos7 di recente, quindi apparentemente in questo caso era relativo a Ubuntu. Grazie a Lukas Winkler per aver pubblicato la domanda e coloro che hanno condiviso le loro soluzioni.


1

Per utilizzare il inetsocket devi specificare:

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

inoltre, è necessario modificare le impostazioni in Postfix di conseguenza:

in /etc/postfix/main.cf aggiunta:

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

se non riesci a impostare il localpercorso desiderato, ti suggerirei di:

  • prendere un registro da mail, syslogo opendkimdentro /var/loge controllare

  • controlla lo /etc/init.d/opendkimscript e controlla se il file calzino è impostato su un valore

  • prova ad andare con impostazione predefinita local:/var/run/opendkim/opendkim.sock- e specifica smtpd_milters = local:/var/run/opendkim/opendkim.socke non_smtpd_milters = local:/var/run/opendkim/opendkim.sockdentro/etc/postfix/main.cf


Ora ho cambiato la configurazione per essere esattamente come la tua (stessa porta) ma ottengo ancorawarning: connect to Milter service inet:localhost:12301: Connection refused
lw1.at

hai provato a riavviare entrambi i servizi dopo la modifica?
Miloš Đakonović,

L'ho fatto e ora ho anche riavviato. Quando guardo mail.log vedo sempre la seguente rigaOpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
lw1.at

Vedi quella linea anche con SOCKET="inet:12301@localhostset su file conf opendkim?
Miloš Đakonović,

1
opendkim ignora le impostazioni del socket / etc / default / opendkim - per ora dobbiamo cambiare /etc/opendkim.conf
SledgehammerPL

1

Questo ha funzionato per me:

modificare /lib/systemd/system/opendkim.service

modificare:

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

per:

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

systemctl daemon-reload

e

systemctl opendkim restart

Questa è esattamente la modifica che viene fatta dallo script /lib/opendkim/opendkim.service.generate.
lw1.at

Grazie mille: questo è stato risolto su Ubuntu 16.04.3 LTS che manca opendkim.service.generate.
Ivan Mir,

0

OpenDKIM ha funzionato fino a quando non ho aggiornato il mio server. OpenDKIM non si avviava e non vi era alcun socket in esecuzione per il Milter a cui rivolgersi. In /var/log/syslogho visto che opendkim non è riuscito a creare un socket in un posto diverso rispetto a prima dell'aggiornamento. Ho cercato di modificare le impostazioni di socket a /etc/opendkim.conf, /etc/default/opendkime /lib/systemd/system/opendkim.service, ma non ha aiutato. Si scopre che le informazioni erano sempre davanti a me:

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

Ho notato che le impostazioni sono state sovrascritte dal file "override.conf" e modificate in modo che fossero allineate con il mio /etc/postfix/main.cf(funziona come chroot):

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

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

E infine riavviare il demone e opendkim:

systemctl daemon-reload && systemctl restart opendkim

0

Ho appena rinominato /etc/systemd/system/opendkim.service.d/override.conf in /etc/systemd/system/opendkim.service.d/override.conf.old in modo che non sovrascriva i parametri ExecStart.

Tutto funziona bene selezionando config da /etc/opendkim.conf


0

Il mio servizio opendkim non si è attivato sulla porta 8100 dopo l'installazione e le soluzioni precedenti non hanno aiutato. Quindi ci ho provato

/lib/opendkim/opendkim.service.generate

con detto

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

così ho guardato il file di servizio

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

e ho trovato strani percorsi

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

e comando

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

disse

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

(guarda alla seconda riga sulla quota precedente) quindi sono andato a

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

e cancellato "-" 3 volte Quindi

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

Questo mi ha aiutato :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.