我们有一个后缀服务器,需要通过它进行SMTP中继validation。 我们在MySQL数据库中使用虚拟邮箱。
通过我们的系统传递了一条消息,我们需要确定使用哪一个用户帐户来发送它。
消息标题包含:
Received: from User (c-76-109-241-139.hsd1.fl.comcast.net [xx.109.xxx.139]) by ourserver.com (Postfix) with ESMTPA id 7BA184B4AD4; Tue, 3 Jul 2012 05:42:59 -0400 (EDT)
我们没有一个叫“用户”的用户,而且这个IP地址不是我们要发送邮件的那个用户。 我想知道发件人在发送邮件时authentication了哪些用户帐户。
有没有办法跟踪这个?
如果您在/var/log/mail.log grepfind消息ID(在您的情况下是7BA184B4AD4),您应该find一个指示sasl_username的日志行。 例如:
% zgrep 07A1753F /var/log/mail.log* Jul 4 19:47:58 mammon postfix/smtpd[4936]: 07A1753F: client=c-69-181-123-456.hsd1.ca.comcast.net[69.181.123.456], sasl_method=PLAIN, sasl_username=mgorven
编辑:如果您在/etc/postfix/main.cf设置了smtpd_sasl_authenticated_header选项,Postfix会将SASL用户名添加到邮件中的Received头中。 请注意,这个头可以被篡改,所以上述是唯一可靠的方式来确定哪个用户提交的消息。
smtpd_sasl_authenticated_header = yes