Tidak dapat mengganti soket OpenDKIM di Debian di / etc / default / opendkim


18

Saya mencoba mengatur opendkim pada regangan Debian tetapi saya gagal mengganti soketnya. Saya ingin mengganti soket /var/spool/postfix/opendkim/opendkim.sockagar saya dapat menggunakannya dengan postfix.

Saya telah menambahkan Socket local:/var/spool/postfix/opendkim/opendkim.sockuntuk/etc/opendkim.conf

dan juga mencoba menambahkan SOCKET="local:/var/spool/postfix/opendkim/opendkim.sockke /etc/default/opendkim(yang saya harus membuat).

Tidak peduli apa yang saya ubah atau seberapa sering saya me-restart opendkim, selalu digunakan /var/run/opendkim/opendkim.socksebagai soketnya.

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

Apa yang saya lakukan salah? (Saya kira itu kesalahan saya karena saya tidak dapat menemukan orang lain dengan masalah yang sama)

MEMPERBARUI:

Mengubah /etc/default/opendkimke SOCKET="inet:8891@localhost"dan mengubah konfigurasi postfix untuk menggunakan hasil socket ini diinet:localhost:8891: Connection refused

UPDATE2:

Saya sekarang telah mengganti dengan file yang dibundel dalam paket debian stretch:

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

Termasuk baris berikut di mana soket diputuskan:

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

"jadi saya bisa menggunakannya dengan postfix" Apakah Anda yakin Anda perlu ini untuk membuatnya bekerja dengan Postfix?
Miloš Đakonović

@ Miloshio saya pikir begitu postfix berjalan dalam chroot. (Menurut tutorial saya ikuti )
lw1.at

@Miloshio mengklaim postfix connect to Milter service local:/var/run/opendkim/opendkim.sock: No such file or directorybahkan berpikir itu ada karena chroot ke/var/spool/postfix/
lw1.at

Sepertinya tidak chroot. Bisakah Anda memeriksanya lagi? Jalur Anda akan terlihat seperti /var/spool/postfix/var/run...itu
Miloš Đakonović

Dalam skenario apa pun, saya akan menggunakan inetsebagai gantinya local. Mungkin, jika Anda tidak men
Miloš Đakonović

Jawaban:


31

Saya akhirnya menemukan solusinya.

The /etc/init.d/opendkimtampaknya tidak melakukan apa-apa. Tetapi sebaliknya servicefile /lib/systemd/system/opendkim.servicedigunakan yang memiliki hardcod yang salah.

Tetapi paket debian juga tampaknya menyertakan bash yang menghasilkan layanan systemd yang benar.

Jadi setelah berlari

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

dan mulai ulang opendkim file socket muncul di tempat yang diharapkan, yang dapat diverifikasi dengan menelepon:

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

Pembaruan: Tampaknya ada debian bugreport tentang masalah ini: # 861169


3

Saya tidak memiliki reputasi yang cukup untuk berkomentar dan ingin mengakui bahwa setelah berjam-jam mencari solusi untuk pesan kesalahan 'koneksi menolak' OpenDKim-Postfix, /lib/systemd/system/opendkim.servicesuntingan yang disediakan oleh LocutusBE bekerja dengan Ubuntu 17.04:

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

sunting /lib/systemd/system/opendkim.service

perubahan:

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

untuk:

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

systemctl daemon-reload

dan

systemctl opendkim restart

Sebelum mencoba edit saya menambahkan pengguna postfix ke grup opendkim dan mencoba /lib/opendkim/opendkim.service.generateper solusi Lukas Winkler . Sambungan yang ditolak kesalahan tetap ada hingga nomor port ditambahkan /lib/systemd/system/opendkim.service.

Untuk memperbarui /lib/systemd/system/opendkim.service, saya menggunakan port 8891 untuk Ubuntu dan berkomentar keluar garis ExecStart asli untuk tujuan pengujian, kemudian menambahkan baris baru dengan 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

Nomor port yang cocok juga ditentukan dalam /etc/opendkim.conf:

Socket                  inet:8891@localhost

Dan /etc/postfix/main.cf:

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

Setelah memulai ulang daemon systemctl, opendkim, dan postfix, surat keluar ditandatangani tanpa masalah dan log surat menunjukkan "bidang Tanda Tangan DKIM ditambahkan".

systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart

Tidak ada masalah koneksi saat mengkonfigurasi OpenDkim dengan Centos7 baru-baru ini, jadi tampaknya dalam hal ini terkait dengan Ubuntu. Terima kasih kepada Lukas Winkler karena memposting pertanyaan dan mereka yang membagikan solusi mereka.


2

Untuk menggunakan inetsoket, Anda harus menentukan:

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

akibatnya, Anda perlu mengubah pengaturan di Postfix secara konsekuen:

di /etc/postfix/main.cf tambahkan:

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

jika Anda tidak dapat mengatur localjalur yang diinginkan, saya sarankan Anda untuk:

  • ambil log dari mail, syslogatau opendkimmasuk /var/logdan periksa

  • periksa /etc/init.d/opendkimskrip dan periksa apakah file sock sulit diatur ke suatu nilai

  • mencoba untuk pergi dengan default local:/var/run/opendkim/opendkim.sock- dan tentukan smtpd_milters = local:/var/run/opendkim/opendkim.sockdan non_smtpd_milters = local:/var/run/opendkim/opendkim.sockmasuk/etc/postfix/main.cf


Saya sekarang telah mengubah konfigurasi menjadi persis seperti milik Anda (port yang sama) tapi saya masih mendapatkanwarning: connect to Milter service inet:localhost:12301: Connection refused
lw1.at

apakah Anda mencoba me-restart kedua layanan setelah mengedit?
Miloš Đakonović

Saya lakukan dan sekarang saya juga reboot. Saat melihat mail.log saya selalu melihat baris berikutOpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
lw1.at

Anda melihat baris itu bahkan dengan SOCKET="inet:12301@localhostmengatur ke file conf opendkim?
Miloš Đakonović

terima kasih atas idenya. Saya menemukan solusinya (ada yang aneh dengan paket debian)
lw1.at

1

Ini bekerja untuk saya:

sunting /lib/systemd/system/opendkim.service

perubahan:

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

untuk:

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

systemctl daemon-reload

dan

systemctl opendkim restart

Ini persis perubahan yang dilakukan oleh skrip /lib/opendkim/opendkim.service.generate.
lw1.at

Terima kasih banyak - ini memperbaikinya pada Ubuntu 16.04.3 LTS yang kurang opendkim.service.generate.
Ivan Mir

0

OpenDKIM berfungsi sampai saya meningkatkan server saya. OpenDKIM tidak akan memulai dan tidak ada soket yang bisa digunakan oleh Milter. Dalam /var/log/syslogaku bisa melihat bahwa opendkim gagal mencoba membuat socket tempat yang berbeda daripada sebelum upgrade. Saya mencoba untuk mengedit pengaturan soket di /etc/opendkim.conf, /etc/default/opendkimdan /lib/systemd/system/opendkim.servicetapi itu tidak membantu. Ternyata info itu ada di depan saya sepanjang waktu:

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

Saya perhatikan pengaturan ditimpa oleh file "override.conf" dan diedit sehingga diselaraskan dengan /etc/postfix/main.cf(berjalan sebagai chroot) saya:

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

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

Dan akhirnya me-restart daemon dan opendkim:

systemctl daemon-reload && systemctl restart opendkim

0

Saya baru saja mengganti nama /etc/systemd/system/opendkim.service.d/override.conf ke /etc/systemd/system/opendkim.service.d/override.conf.old sehingga tidak akan mengabaikan parameter ExecStart.

Semuanya berfungsi dengan baik memilih config dari /etc/opendkim.conf


0

Layanan opendkim saya tidak bangun di port 8100 setelah instalasi dan solusi sebelumnya tidak membantu. Jadi saya mencoba

/lib/opendkim/opendkim.service.generate

dengan kata

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

jadi saya melihat file layanan

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

dan menemukan jalan aneh

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

dan perintah

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

kata

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

(lihat baris 2 pada kuota sebelumnya) jadi saya pergi ke

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

dan dihapus "-" 3 kali Lalu

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

Itu membantu saya :-)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.