我们最近在我们的DMZ中添加了一个基于Exim的(MailCleaner)MTA,它发送和接收来自我们的LAN电子邮件服务器的电子邮件。 它工作的很好,但我有点警惕它发送给外部收件人的传出邮件中的标题之一。
具体来说,它是从我们的LAN电子邮件服务器到DMZ中的MTA的“接收”标题,它看起来像:
Received: from [192.168.XX.XX] (helo=mailserver.localdomain.local) by mail.senderdomain.com stage1 with esmtp with id SomeMessageID for <[email protected]> from sendername <[email protected]>; Tue, 24 Nov 2009 13:06:58
其中,192.168.XX.XX是LAN邮件服务器的DMZ接口,localdomain.local是我们的局域网域名,而senderdomain.com是我们组织的外部可parsing的域名。
是否有可能修改这个头,所以它不会泄漏我们的本地域名和DMZ地址范围在每个传出消息? 我假设我们不能简单地将其删除,因为在已发送邮件中的几个“已收到”标题中,我已经能够检查它是唯一包含“发件人名称”部分的行,用于标识组织中发件人的电子邮件地址。
任何提示如何修改或掩盖这将不胜感激。
Received:头部的内容在Exim中由configuration选项received_header_text定义。 默认设置,您可以从中看到您的示例是如何构build的:
received_header_text = Received: \ ${if def:sender_rcvhost {from $sender_rcvhost\n\t}\ {${if def:sender_ident \ {from ${quote_local_part:$sender_ident} }}\ ${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}\ by $primary_hostname \ ${if def:received_protocol {with $received_protocol}} \ ${if def:tls_cipher {($tls_cipher)\n\t}}\ (Exim $version_number)\n\t\ ${if def:sender_address \ {(envelope-from <$sender_address>)\n\t}}\ id $message_exim_id\ ${if def:received_for {\n\tfor $received_for}}
至于更改或删除标题。 谨防一些最佳实践的build议在前面。
你确定要删除这些信息吗? 它的存在使您可以更轻松地跟踪滥用报告。 内部IP地址的暴露实际上风险相当有限。
从技术上讲,你可以使用headers_remove删除第一个接收到的头文件,但是它肯定不是RFC友好的,并且有可能创build邮件循环。
如果你必须掩盖信息,那么你最好通过修改received_header_text 。 为了可维护性和最less惊喜的原则,即使MTA没有执行任何其他function,您可能也希望尽可能使您的更改具体化。 这将涉及在这些陈述中添加一些附加条件,以说明您知道的事实总是如此,例如发件人是否已经authentication了自己。