有时在debuggingSMTP问题时,标准的maillog是不够的,我需要看到完整的SMTP会话。 在后缀中,我添加有问题的IP到“debug_peer_list”,这将启用会话日志和其他debugging信息,只有该IP。
有没有类似的东西呢? 我只find了“在debugging模式下运行exim”的引用,这显然会导致所有会话被logging,我担心会很快写入大量不必要的日志,导致繁重的磁盘I / O,并且很难find有问题的事务
TL; DR: 从特定IP(或发件人地址)获取完整SMTP事务日志的最佳方法是什么?
我正在运行exim 4.80(一个cPanel服务器)。
只需添加一些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
但是如果你想在日志中看到你的方面也在说什么,这是不可能的。 然后,您的选项受限于任何系统提供的networkingdebugging工具,如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..
我希望其中一个certificate对你有用。
可能不是你以后的事情,但wireshark / tshark是伟大的。 在命令行上:
tshark -w exim.pcap -i <interface> host <target IP>
然后在Wireshark中打开文件,您可以在闲暇时细读整个SMTP对话:右键单击一个匹配的数据包,然后select“查看TCP对话”。
如果你想看看它,只要省略上面的-w参数,虽然这可能是很大的电子邮件垃圾邮件。