Proper Ways to Clear Log Files in Linux (Focus on /var/log/mail.log for Postfix)


2 views

Log files in Linux systems, particularly under /var/log/, are crucial for system monitoring and troubleshooting. When working with services like Postfix, the mail.log file can grow rapidly, making it difficult to analyze recent events.

Manually deleting content from log files can lead to several problems:

  • Services writing to the log might lose their file handle position
  • Permission issues may arise if editing as a non-root user
  • Log rotation systems might behave unexpectedly

Method 1: Using truncate

The safest way to clear a log without restarting services:

sudo truncate -s 0 /var/log/mail.log

This preserves the file's metadata and permissions while setting its size to zero.

Method 2: Log Rotation

For persistent solutions, configure logrotate:

# Create or modify /etc/logrotate.d/postfix
/var/log/mail.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 syslog adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

Method 3: Systemd Journal (if applicable)

For systems using journald:

sudo journalctl --rotate
sudo journalctl --vacuum-time=1d

Instead of constantly clearing logs, consider these alternatives for analysis:

# View recent entries
sudo tail -n 50 /var/log/mail.log

# Follow new entries in real-time
sudo tail -f /var/log/mail.log

# Filter for errors
sudo grep -i error /var/log/mail.log | less

When debugging Postfix issues:

# Increase logging level temporarily
sudo postconf -e "debug_peer_level=2"
sudo systemctl reload postfix

Remember to revert debug levels after troubleshooting to prevent log flooding.


When working with system logs in Linux (particularly Ubuntu), it's crucial to understand that simply opening and deleting log file contents manually can cause issues with logging services. The /var/log/mail.log file is managed by rsyslog or syslog-ng, and processes maintain file handles to these logs.

Here are the proper ways to clear log files without disrupting logging services:

# Method 1: Using truncate (preferred)
sudo truncate -s 0 /var/log/mail.log

# Method 2: Using shell redirection
sudo bash -c '> /var/log/mail.log'

# Method 3: Using logrotate (for persistent solution)
sudo nano /etc/logrotate.d/mail

For long-term log management, configure logrotate by creating a new configuration file:

/var/log/mail.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 syslog adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

Instead of constantly clearing logs, consider these alternatives for better debugging:

# Tail the log file in real-time
sudo tail -f /var/log/mail.log

# Filter for specific patterns
sudo grep "error" /var/log/mail.log

# Use less with follow mode
sudo less +F /var/log/mail.log

For Postfix-specific troubleshooting, these commands can help isolate problems:

# Check Postfix status
sudo postfix status

# View mail queue
sudo mailq

# Test Postfix configuration
sudo postconf -n

# Increase logging verbosity temporarily
sudo postconf -e "debug_peer_level=2"
sudo systemctl restart postfix

For systems using journald, you can query mail-related logs with:

journalctl -u postfix
journalctl -u postfix --since "1 hour ago"
journalctl -u postfix -f  # Follow mode