Postfix จะไม่บันทึกลงใน / var / log / mail อีกต่อไปหลังจากถูกลบและสร้างขึ้นใหม่หรือไม่


10

ฉันลบ/var/log/mailไฟล์โดยไม่ตั้งใจ จนถึงจุดที่ฉันสามารถตรวจสอบได้โดยใช้สิ่ง postfix ตอนนี้ดูเหมือนว่า Postfix จะไม่ส่งบันทึกไปที่/var/log/mailเนื่องจากไฟล์ไม่ได้รับการปรับปรุงด้วยข้อความบันทึกใหม่

คำตอบ:


9

เมื่อคุณลบไฟล์ mail.log, rsyslog (บนอูบุนตู) หมายเลขอ้างอิงหลวมไปยังไฟล์ เพื่อให้มันทำงานบน Ubuntu ได้โปรดให้:

sudo service rsyslog restart

สิ่งนี้จะไม่เพียงสร้างไฟล์ใหม่ แต่เริ่มเขียนบันทึก


1
แทนที่จะพูดในสิ่งที่คุณทำให้ตอบโดยทั่วไป (ในลักษณะที่ให้คำแนะนำ) บอกเราว่าทำไม
Julie Pelletier

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 สำหรับ postfix

syslog_name = postfix

1
ฉันใช้เวลาสามชั่วโมงในการพยายามซ่อมแซมระบบที่การบันทึกหายไป ฉันไม่พบโพสต์นี้ฉันจะใช้เวลาอีก 3 ชั่วโมง บันทึกประจำวันของฉันมี 10,000 บรรทัดดังนั้นคำสั่งนี้ก็ช่วยฉันได้มากjournalctl --vacuum-time=1d
Eugene van der Merwe

2

fwiw รุ่นที่ใหม่กว่าของบันทึก postfix ไปยัง/var/log/mail.logและฉันยังต้องทำงานsudo chmod a+w /var/log/mail*และservice postfix restartเพื่อรับบันทึก postfix ของฉันกลับมาหลังจากลบมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.