Postfix tidak lagi log ke / var / log / mail setelah dihapus dan dibuat ulang?


10

Saya tidak sengaja menghapus /var/log/mailfile. Sampai saat itu saya bisa memantaunya menggunakan postfix. Sekarang, tampaknya Postfix tidak mengirimkan /var/log/maillognya, karena file tersebut tidak diperbarui dengan pesan log baru.

Jawaban:


9

Ketika Anda menghapus file mail.log, rsyslog (di ubuntu) lepas menangani file. Untuk membuatnya bekerja kembali di Ubuntu, berikan:

sudo service rsyslog restart

Ini tidak hanya akan membuat file baru tetapi juga mulai menulis log.


1
Alih-alih mengatakan apa yang Anda lakukan, jadikan jawabannya lebih umum (dengan cara yang instruktif) memberi tahu kami alasannya.
Julie Pelletier

4

Bahkan setelah membuat file kosong

touch /var/log/mail

Anda harus memulai ulang syslog

service syslog restart

dan kemudian mendapatkan keuntungan :)


4

Ini adalah bug di syslog, tetapi menggambarkan masalah umum ketika seseorang menghapus file saat dibuka oleh suatu program. Ketika Anda melakukan "rm", Anda menghapus entri direktori, tetapi Anda TIDAK menghapus file yang mendasarinya. Sistem operasi menyimpan hitungan referensi ke file, dan tidak akan benar-benar menghapus data file yang mendasarinya sampai jumlah referensi menjadi nol. Dalam kasus file rata-rata, jumlah referensi dari file yang belum dibuka adalah satu (entri direktori). Saat file dibuka, hitungannya bertambah menjadi dua. Jika program kedua membuka file yang sama, jumlah akan bertambah menjadi tiga. Jika entri direktori sekarang dihapus, hitungannya dikurangi menjadi dua - yang berarti bahwa file tersebut anomim (tidak memiliki nama),

Ketika Anda menghapus / var / log / mail, logger sistem masih memiliki file yang terbuka untuk ditulis. Jika Anda membuat / var / log / mail baru, itu akan mengarah ke file yang berbeda dari yang sedang ditulis logger sistem. Satu-satunya cara untuk membuat semuanya konsisten adalah me-restart logger sistem. Ketika logger sistem asli berakhir, semua file yang terkait dengannya ditutup - termasuk log surat anonim yang entri direktori Anda dihapus. Ketika Anda me-restart logger sistem, itu akan membuka kembali / var / log / mail ketika perlu menulis pesan log, dan akan tetap terbuka setelahnya.

Cara lain yang sering ditemukan adalah ketika program yang sedang berjalan mengisi semua disk dengan data file; pengguna menghapus file yang sangat besar, tetapi ruang disk tidak dibebaskan, karena file tersebut masih ada, dan mengambil ruang disk, tetapi entri direktori telah dihapus. Ketika program berakhir (baik karena pengguna membunuhnya atau berakhir sendiri), ruang disk akan dipulihkan karena jumlah referensi pada file akan menjadi nol.

Apa yang bisa dilakukan oleh logger untuk mencegah hal ini adalah pertama-tama menulis pesan log, periksa untuk melihat apakah entri direktori file log ada, dan jika tidak ada, tutup file log asli, buka yang baru, lalu tulis ulang pesan - agar pesan tidak hilang. Tetapi untuk melakukan semua itu akan membutuhkan lebih banyak kerumitan daripada yang harus dimiliki oleh sistem logger - untuk setiap pesan yang ditulisnya akan membutuhkan waktu lebih lama untuk ditulis karena pemeriksaan direktori tambahan - yang akan berhasil setiap kali file memiliki TIDAK dihapus.

Untuk memahami semua hal di atas dengan lebih jelas, perintah berikut ini bersifat instruktif, karena menjelaskan panggilan sistem yang melakukan penghapusan entri direktori dan pengurangan referensi: "man 3 unlink"


4

Itu bukan masalah pada CentOS 7. Seseorang berpikir itu akan menjadi ide bagus untuk memiliki log surat postfix untuk pergi melalui jurnalis. Jika Anda ingin melihat log postfix:

journalctl -u postfix

(untuk melihat seluruh log)

journalctl -u postfix -f

(untuk mengekor log)

Anda juga mungkin perlu di main.cf untuk postfix

syslog_name = postfix

1
Saya menghabiskan tiga jam mencoba memperbaiki sistem di mana penebangan hilang. Seandainya saya tidak menemukan posting ini saya akan menghabiskan 3 jam lagi. Jurnal saya memiliki 10.000 baris sehingga perintah ini juga banyak membantu sayajournalctl --vacuum-time=1d
Eugene van der Merwe

2

fwiw versi postfix log yang lebih baru /var/log/mail.logdan saya juga harus menjalankan sudo chmod a+w /var/log/mail*dan service postfix restartmendapatkan log postfix saya kembali setelah menghapusnya

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.