Postfix більше не входить у / var / log / mail після його видалення та відновлення?


10

Я випадково видалив /var/log/mailфайл. До цього моменту я міг відстежувати це за допомогою реквізитів Postfix. Тепер, схоже, Postfix не надсилає свої журнали /var/log/mail, оскільки файл не оновлюється новими повідомленнями журналу.

Відповіді:


9

Коли ви видаляєте файл mail.log, rsyslog (в ubuntu) вільно обробляє файл. Щоб повернути його на Ubuntu, будь ласка, дайте:

sudo service rsyslog restart

Це не тільки створить новий файл, але і почне писати журнали.


1
Замість того, щоб говорити, що ви зробили, зробіть відповідь більш загальною (повчально), пояснивши нам, чому.
Джулі Пелтьє

4

Навіть після створення порожнього файлу

touch /var/log/mail

вам доведеться перезапустити syslog

service syslog restart

а потім це посилення реєстрації :)


4

Це помилка в syslog, але ілюструє поширену проблему, коли ви видаляєте файл, поки він відкритий програмою. Коли ви робите "rm", ви видаляєте запис каталогу, але ви НЕ видаляєте базовий файл. Операційна система зберігає кількість посилань на файл і фактично не видаляє базові дані файлу, доки кількість посилань не перейде до нуля. У випадку середнього файлу, посилання на кількість невідкритих файлів - один (запис у каталозі). Коли файл відкривається, кількість збільшується до двох. Якщо друга програма відкриє той самий файл, кількість буде збільшуватися до трьох. Якщо запис каталогів тепер видалено, кількість зменшується до двох - це означає, що файл анонімний (не має імені),

Коли ви видаляєте / var / log / mail, системний реєстратор все ще відкриває файл для запису. Якщо ви створюєте новий / var / log / mail, він вказуватиме на файл, відмінний від того, який записує системний реєстратор. Єдиний спосіб зробити все послідовним - це перезапустити системний реєстратор. Коли оригінальний системний реєстратор закінчується, всі пов'язані з ним файли закриваються, включаючи анонімний журнал пошти, запис якого ви видалили. Коли ви перезапустите системний реєстратор, він знову відкриє / var / log / mail, коли йому потрібно буде написати повідомлення журналу, і надалі буде відкритим.

Інший спосіб цього часто виявляється, коли запущена програма заповнює весь диск файловими даними; користувач видаляє дуже великий файл, але дисковий простір не звільняється, тому що файл все ще існує і займає місце на диску, але запис каталогу було видалено. Коли програма закінчиться (або тому, що користувач її вбив, або вона сама закінчилася), дисковий простір буде відновлений, оскільки кількість посилань на файл піде до нуля.

Що реєстратор може зробити для запобігання цього, це спочатку написати повідомлення журналу, перевірте, чи існує запис каталогу файлів журналу, а якщо його не існує, закрийте оригінальний файл журналу, відкрийте новий, а потім перепишіть повідомлення - щоб повідомлення не загубилося. Але для того, щоб зробити все це, знадобиться набагато більше складності, ніж повинен мати системний реєстратор - для кожного повідомлення, яке він пише, буде потрібно трохи більше часу, щоб записати через додаткову перевірку каталогів - що буде успішно кожного разу, коли файл має НЕ видалено.

Щоб зрозуміти все вищесказане більш чітко, наступна команда є повчальною, оскільки вона описує системний виклик, який виконує видалення запису каталогу та декремент посилання: "man 3 unlink"


4

Це не проблема в CentOS 7. Хтось подумав, що було б чудовою ідеєю мати журнали пошти Postfix, щоб пройти через подорож. Якщо ви хочете побачити журнали Postfix:

journalctl -u postfix

(щоб побачити весь журнал)

journalctl -u postfix -f

(для хвоста колоди)

Також вам може знадобитися в main.cf для постфіксу

syslog_name = postfix

1
Я провів три години, намагаючись відремонтувати систему, де зник лісозаготівля. Якби я не знайшов цю посаду, я витратив би ще 3 години. У моєму журналі було 10000 рядків, тому ця команда також мені дуже допомоглаjournalctl --vacuum-time=1d
Євген ван дер Мерве

2

fwiw новіші версії журналу postfix для, /var/log/mail.logі я також повинен був запустити sudo chmod a+w /var/log/mail*і service postfix restartповернути свої журнали postfix після видалення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.