如何在 Exim 中获取 SMTP 会话日志?

Gry*_*ius 5 smtp exim

有时在调试 SMTP 问题时,标准邮件日志是不够的,我需要查看完整的 SMTP 会话。在 postfix 中,我将有问题的 IP 添加到“debug_peer_list”,这将仅启用该 IP 的会话日志和其他调试信息。

exim中有类似的东西吗?我只找到了对“在调试模式下运行 exim”的引用,这显然会导致记录所有会话,我担心这会很快写入大量不必要的日志,导致大量磁盘 I/O,并难以找到有问题的事务

TL;DR: 从特定 IP(或发件人地址)获取完整 SMTP 事务日志的最佳方法是什么?

我正在运行 exim 4.80(一个 cpanel 服务器)。

Tod*_*ons 7

您可以通过添加一些 ACL 轻松查看从远程系统接收的命令:

# Global hosts setting, list of IP addresses you want to see SMTP commands
hostlist debug_hosts = xxx.xxx.xxx.xxx : yyy.yyy.yyy.yyy

# early in acl_smtp_helo
warn hosts     = +debug_hosts
     log_write = DEBUG: $smtp_command

# early in acl_smtp_mail
warn hosts     = +debug_hosts
     log_write = DEBUG: $smtp_command

# early in acl_smtp_rcpt
warn hosts     = +debug_hosts
     log_write = DEBUG: $smtp_command
Run Code Online (Sandbox Code Playgroud)

但是,如果您也想在日志中查看您那边的内容,那在 exim 中是不可能的。然后,您的选项仅限于任何系统提供的网络调试工具,例如 tcpdump、tshark 或(我最喜欢的)ngrep。

例如,如果您的客户抱怨他们无法通过您的服务器发送邮件。这是一个简单的条目,显示了他们无法发送的原因:

# ngrep -q port 25 host 208.54.85.254
<snip>
T 208.54.85.254:15084 -> 208.89.138.22:25 [AP]
  AUTH PLAIN kkvdsoirDSAasdfrASDF4swSD23DAGAG6893Mgss==..                            

T 208.89.138.22:25 -> 208.54.85.254:15084 [AP]
  535 Incorrect authentication data..
Run Code Online (Sandbox Code Playgroud)

我希望其中之一对您有用。