我在 Debian Stretch 上成功运行了 Dovecot 2.2.27。我的服务器上有一些可疑活动,我想记录我的服务器发送/接收的所有原始 IMAP 通信。这是 /etc/dovecot/conf.d/ 中的一个 .conf 文件
service imap-login {
executable = imap-login -R rawlogs
}
(来源:https://wiki.dovecot.org/Debugging/Rawlog)
当用户登录我的 IMAP 服务器时,Rawlog 会进行记录(登录前 Rawlog)。但那时它就停止了。此后它不会记录任何通信。我希望所有 IMAP 通信都接收/发送以进行连接(登录、检查邮箱、下载新邮件等)。
以下是 .in 文件的示例:
1523905191.015557 1 LOGIN ***EMAIL ADDRESS HERE*** ***PASSWORD HERE***
.out 文件如下:
1523905190.806295 * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
我在上述 .conf 文件中添加了以下代码,用于登录后日志记录:
service imap {
# tell imap to do post-login lookup using a socket called "imap-postlogin"
executable = imap imap-postlogin
}
# The service name below doesn't actually matter.
service imap-postlogin {
# all post-login scripts are executed via script-login binary
executable = script-login /usr/lib/dovecot/rawlog
# the script process runs as the user specified here (v2.0.14+):
# user = $default_internal_user
user = pksml
# this UNIX socket listener must use the same name as given to imap executable
unix_listener imap-postlogin {
}
}
(来源:https://wiki.dovecot.org/PostLoginScripting)
没什么区别。即使我在检查邮件帐户时,日志仍然只用于身份验证,没有其他用途。是我做错了什么,还是这不是 Dovecot 的功能?谢谢。
PS:我在更改.conf 文件后重新加载了 Dovecot 服务。
PS #2:邮件用户是虚拟用户,而不是真正的 Linux 系统用户
编辑-当前.conf
文件:
import_environment = $import_environment DEBUG=1
service imap-login {
executable = imap-login -R rawlogs
}
protocol imap {
rawlog_dir = /var/run/dovecot/login/rawlogs
}
service imap {
executable = imap imap-postlogin
}
service imap-postlogin {
executable = script-login -d /usr/lib/dovecot/rawlog -I
unix_listener imap-postlogin {
}
}
答案1
我最终完成了 IMAP 命令的记录。
顺便说一句,我最初使用以下教程设置了我的服务器https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql/
以下是 rawlog 相关的 dovecot 配置命令:
mail_location = maildir:/var/mail/vhosts/%d/%n
userdb {
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
driver = static
}
service imap-login {
executable = imap-login -R rawlogs
inet_listener imaps {
port = 993
ssl = yes
}
}
service imap-postlogin {
executable = script-login -d rawlog
}
service imap {
executable = imap imap-postlogin
}
protocol imap {
rawlog_dir = /var/run/dovecot/login/rawlogs
}
您将获得.in
和存储在( ).out
中的用于身份验证的文件。/var/run/dovecot/login/rawlogs
rawlog_dir
目前该rawlog_dir
目录有777
权限。
身份验证完成后,特定用户与服务器之间传输的 IMAP 通信位于用户主文件夹中名为 的子文件夹中dovecot.rawlog
(您必须创建)。例如,在我的设置中,我创建了 文件夹/var/mail/vhosts/domain.com/user/dovecot.rawlog
。此文件夹具有777
权限,归 拥有root:vmail
。
注意:在这些.in
文件中.out
,您将看到传输的所有 IMAP 信息,包括电子邮件纯文本格式。另请注意,此文件夹将迅速地填满文件。密切关注。
总结:原始日志最有可能的用途是调试或了解 IMAP 协议。连续几个月保持开启状态并不是一个好主意!
答案2
doveadm 日志错误
或者和实时日志过滤的旧解决方案:
尾部-f / var / log / syslog | grep 鸽舍