Linux

強制 Dovecot 不記錄連接/斷開連接消息

  • November 25, 2014

/var/log/mail.log經常被 Dovecot 連接/斷開連接消息淹沒,如下所示:

Mar 29 18:15:48 summit dovecot: IMAP(foo@bar.baz): Disconnected: Logged out bytes=63/2126          
Mar 29 18:15:50 summit dovecot: imap-login: Login: user=<baz@bar.foo>, method=PLAIN, rip=4.3.2.1, lip=1.2.3.4, TLS

這些是無限重複的(每天大約 11MB 的日誌),它們掩蓋了更重要的身份驗證失敗和 Postfix 傳遞/接收。我已經檢查了Dovecot 的 wiki 頁面的日誌記錄,但沒有選項可以阻止這些消息。我可以在其中設置任何配置變數dovecot.conf來阻止將這些消息發送到mail.log嗎?

*澄清:*我仍然希望 Dovecot 登錄到mail.log; 我只是不希望它記錄這些無聊的連接/斷開連接消息。

如果您使用 rsyslog 或 syslog-ng,您可以過濾 syslog 消息。這是 rsyslog 幫助中的一個範例:

用一個簡單的語句:

:msg, contains, "imap-login" ~

或使用 if-else 腳本語言:

if $programname == 'dovecot' then {
  action(type="omfile" file="/var/log/dovecot.log")
  if $msg contains 'imap-login' then
    action(type="omfile" file="/var/log/dovecot-login.log")
  else
    action(type="omfile" file="/var/log/dovecot.log")
}

http://www.rsyslog.com/doc/rsyslog_conf_filter.html

使用 log_path 和/或 info_log_path 啟用對文件的日誌記錄,然後註釋掉 syslog_facility。

或者

更改 syslog_facility 並使用 /etc/syslog.conf 控制輸出。

:/etc/dovecot.conf

##
## 日誌記錄
##

# 用於錯誤消息的日誌文件,而不是將它們發送到 syslog。
# /dev/stderr 可用於登錄 stderr。
#log_path = /var/log/dovecot.log

# 用於資訊和調試消息的日誌文件。
# 預設與 log_path 相同。
#info_log_path = /var/log/dovecot-info.log

...

# 登錄到 syslog 時使用的 Syslog 工具。通常如果你不
# 要使用“郵件”,您將使用 local0..local7。還有其他標準
支持 # 個設施。
syslog_facility = 郵件

引用自:https://serverfault.com/questions/253418