我最近为我们公司编写了一个应用程序,用于通过使用WebDAV发送到Exchange 2003服务器上的收件箱的注册电子邮件来处理简报注册请求。一切正常。
现在我们已经意识到,出于审计目的,我们需要捕获注册请求源自的位置的IP地址。我的问题是,有没有办法用我的WebDAV请求请求电子邮件发件人的原始IP地址?
我浏览了urn:schemas:mailheader:和urn:schemas:httpmail:文档,除了urn:schemas:mailheader:path之外,我们没有看到您可以请求此字段的字段。但是当我在请求中使用path
向我们的Exchange服务器发出请求时,该属性的状态将返回404找不到。
看起来http://schemas.microsoft.com/cdo/smtpenvelope有clientipaddress
属性可以包含此信息,但这仅适用于仍在传输中的邮件。
以前是否有人必须这样做并想出一种方法来阻止发起电子邮件的用户的IP地址?它可能对这个问题没有帮助,但我的WebDAV请求的格式如下:
string webdav =
@"
<?xml version=""1.0""?>
<D:searchrequest xmlns:D = ""DAV:"">
<D:sql>
SELECT
""DAV:displayname"",
""urn:schemas:httpmail:fromemail"",
""urn:schemas:mailheader:subject"",
""urn:schemas:httpmail:textdescription"",
""urn:schemas:mailheader:date""
FROM
SCOPE('shallow traversal of ""{0}""')
WHERE
""DAV:isfolder"" = false AND
""urn:schemas:httpmail:read"" = false
</D:sql>
</D:searchrequest>
";
答案 0 :(得分:0)
这回归到SMTP而不是Exchange / WebDAV。这实际上取决于最终用户使用的电子邮件服务。 SMTP可以在最终到达目的地之前多次传递电子邮件。通常,每个跃点都会添加一个Received: from
标头,以及一些其他信息,如IP地址。
但是,像Google这样的某些服务并不能指望发送电子邮件的用户有一跳,而原始IP地址是Google SMTP服务器。因此,您永远不会知道电子邮件中的最终用户IP地址。然后,其他服务可以将最终用户的公共IP地址计为第一跳。其他一些服务可能会在邮件中添加X-Sender-IP
或X-Originating-IP
等特殊标头。
因此,没有一种保证获取该信息的方法。其中一部分与SMTP的分布式特性,网络邮件的流行和一些隐私问题有关。如果此信息对您的审核至关重要,您可能需要设置一个简单的网络表单,该表单可以向此收件箱发送电子邮件,然后您可以将其他信息(如IP地址)添加到电子邮件正文中。