postfix / smtpd: warning: connect to Milter service unix: /var/run/opendkim/opendkim.sock: Tidak ada file atau direktori seperti itu

36

Saya memiliki masalah dengan postfix pada debian setelah melakukan upgrade dari squeeze ke wheezy. Postfix dikonfigurasikan untuk menandatangani pesan menggunakan dkim-filter. Sebelum pembaruan, semuanya berfungsi dengan sempurna, sekarang gagal pada koneksi dengan layanan (tcp atau unix soket). Saya pikir mungkin itu karena debian beralih ke opendkim, jadi saya menghapus dkim-filter dan menginstal opendkim - masalah yang sama. Saya bahkan mencoba mengatur koneksi soket file unix daripada opsi tcp - masalah yang sama:

postfix/smtpd: warning: connect to Milter service unix:/var/run/opendkim/opendkim.sock: No such file or directory

atau (dengan tcp / ip):

postfix/cleanup: warning: connect to Milter service inet:localhost:8891: Connection refused

Saya memeriksa dua kali - file soket ada dan layanan mendengarkan pada port 8891.

Apa yang bisa saya lakukan untuk memperbaikinya?

rogers
sumber

Jawaban:

58
  1. Periksa apakah opendkim sedang berjalan. (Saya menganggap itu seperti yang Anda lihat file socket.)
  2. Apakah Anda mengonfigurasi opendkim? File konfigurasi adalah /etc/opendkim.conf.

    Anda perlu memperbarui file agar sesuai dengan jalur situs / domain dan dkim.key Anda .

  3. Tambahkan postfix ke grup opendkim

    Jika izin opendkim.sock adalah sebagai berikut

    $ ls -l / var / run / opendkim
    
    -rw-rw-r-- 1 opendkim opendkim 6 Mei 2 14:56 opendkim.pid
    srwxrwxr-x 1 opendkim opendkim 0 Mei 2 14:56 opendkim.sock
    

    Jika Tidak, pastikan UMaskdiatur ke 0002dalam /etc/opendkim.conf.

    Kemudian lakukan hal berikut

    sudo adduser postfix opendkim
  4. Postfix berjalan dalam chroot

    Ubah /etc/default/opendkim, ubah opsi SOCKET ke postfix chroot location

    SOCKET = "local: /var/spool/postfix/var/run/opendkim/opendkim.sock"

    Anda harus membuat direktori /var/spool/postfix/var/run/opendkimdan mengubah izinnya

    sudo mkdir -p / var / spool / postfix / var / run / opendkim
    sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim
    
  5. Mulai ulang opendkim

    layanan sudo opendkim restart
    
John Siu
sumber
4
Saya menemukan masalah serupa yang disebabkan oleh izin yang terlalu ketat pada direktori opendkim.
Darrell Duane
1
Saya yakin saya memiliki opendkim yang bekerja sebelumnya, tetapi memperhatikan bahwa opendkim tidak berfungsi setelah memutakhirkan dari Ubuntu 15.04 ke 15.10. Memperbarui jalur soket /etc/default/opendkimke yang sama dengan yang telah saya tentukan di /etc/opendkim.confmemperbaikinya. Terima kasih!
Haprog
masalah saya adalah saya menjalankan postfix di chroot dan saya menggunakan socket unix. Jika Anda melihat No such file or directorypostfix rata-rata tidak dapat menemukan jalan, tetapi mencari soket di dalam / var / spool / postfix / var / run / opendkim /, bukan / var / run / opendkim
HVNSweeting
@HVNSweeting Bukankah itu tercakup dalam (4)?
John Siu
itu sebabnya saya berkomentar dan di-upgrade bukannya membuat jawaban baru. Pertanyaannya mengandung begitu banyak masalah, karena jika opendkim dikonfigurasi dengan benar, maka TCP socket seharusnya berfungsi. Terima kasih
HVNSweeting
11

Ringkasan cepat yang membantu saya memperbaiki peringatan ini di Ubuntu 16.04 LTS: Postfix versi 3.1.0-3ubuntu0.2 Opendkim versi 2.10.3-3build1

  • (Saya berasumsi bahwa Postfix dan Opendkim sudah diinstal, terintegrasi satu sama lain dan satu-satunya peringatan yang Anda dapatkan adalah 'terhubung ke layanan Milter lokal: /var/spool/postfix/opendkim/opendkim.sock: Tidak ada file atau direktori')

  • Tambahkan postfix pengguna ke grup opendkim (lewati jika sudah selesai)

sudo adduser postfix opendkim

  • Buat direktori dan atur pemilik (lewati jika sudah dilakukan)

sudo mkdir -p / var / spool / postfix / var / run / opendkim

sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim

  • Periksa izin:

ls-l / var / spool / postfix / var / run / opendkim

srwxrwxr-x 1 opendkim opendkim 0 Nov 12 14:34 opendkim.sock
  • Edit file konfigurasi opendkim: /etc/opendkim.conf, tambahkan baris

Socket lokal: /var/spool/postfix/var/run/opendkim/opendkim.sock

/ etc / defaults / opendkim, tambahkan

SOCKET = "local: /var/spool/postfix/var/run/opendkim/opendkim.sock"

  • Edit konfigurasi postfix: /etc/postfix/main.cf
# Milter configuration
# Postfix ≥ 2.6 milter_protocol = 6, Postfix ≤ 2.5 milter_protocol = 2
milter_protocol = 6
milter_default_action = accept
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock
  • Mulai ulang layanan (atau reboot)

systemctl restart opendkim

systemctl restart postfix

Itu dia. Saya tidak tahu mengapa perlu menulis

smtpd_milters = unix: var / run / opendkim / opendkim.sock

dari pada

smtpd_milters = local: /var/spool/postfix/var/run/opendkim/opendkim.sock

. Jika ada yang tahu, penjelasan dipersilahkan.

Fedorov7890
sumber
2
Jika postfix berjalan dengan CHROOT, maka path config relatif terhadap itu. Anda akan berakhir dengan postfix yang mencoba menyelesaikan /var/spool/postfix/var/spool/postfix/var/run/opendkim/opendkim.sock
gelap
5

Saya menghadapi masalah yang sama pada bentangan Debian, yang ternyata disebabkan oleh file layanan systemd yang rusak untuk opendkim. Lihat jawaban ini untuk solusinya: https://serverfault.com/a/847442/84962

Perbaikan ini bermuara ke:

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
Serrano
sumber
1
Saya memiliki sistem Ubuntu, di mana hanya saran ini yang membantu, sementara yang lainnya tidak berfungsi.
silpol
Saya menjalankan 16.04 dan /lib/opendkim/opendkim.service.generate tidak ada
Laurent
Bekerja dengan baik di Ubuntu 18.04. Terima kasih.
Duque
Ini menyelesaikan masalah saya pada Debian 9.
jchook
2
smtpd_milters = unix:var/run/opendkim/opendkim.sock, unix:var/run/opendmarc/opendmarc.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock, unix:var/run/opendmarc/opendmarc.sock

usermod -G opendkim,opendmarc
Олег Гинзбург
sumber
5
Ini akan menjadi jawaban yang jauh lebih baik jika menyertakan beberapa penjelasan tentang Bagaimana dan Mengapa ini menjawab pertanyaan.
Stephen Rauch
3
Selamat datang di Unix & Linux! Sementara potongan kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, bukan hanya orang yang bertanya sekarang! Harap edit jawaban Anda untuk menambahkan penjelasan, dan berikan indikasi batasan dan asumsi apa yang berlaku.
Toby Speight
1

Alternatifnya adalah dengan menonaktifkan chroot , ini memiliki implikasi keamanan:

vi /etc/postfix/master.cf

# service type  private unpriv  chroot  wakeup  maxproc command + args
cleanup   unix  n       -       n       -       0       cleanup

Peringatan itu mengatakan postfix/cleanup, sehingga Anda dapat menonaktifkan chroot untuk layanan ini.

Plup
sumber
0

terhubung ke Milter service unix: /clamav/clamav-milter.ctl: Izin ditolak

ls-l / var / spool / postfix / clamav srw-rw ---- 1 clamav clamav 0 Apr 4 17:59 clamav-milter.ctl

clamav-milter.conf

pengguna clamav MilterSocketGroup postfix MilterSocketMode 660

izin pengguna untuk milter

chown postfix: postfix /var/spool/postfix/clamav/clamav-milter.ctl

Bekerja untukku

gjerich
sumber
0

Saya punya masalah karena OpenDKIM dan Postfix berfungsi dengan hak pengguna yang berbeda dan menulis serta membaca dari soket yang sama.

Saya menambahkan pengguna postfix ke grup opendkim:

sudo usermod -a -G opendkim postfix
Alex Gvar
sumber