1.1 什么是垃圾邮件? 中国互联网协会在《中国互联网协会反垃圾邮件规范》中将包括下述属性的电子邮件定义为垃圾邮 件:(一)收件人事先没有提出要求或者同意接收的广告、电子刊物、各种形式的宣传品等宣传性的 电子邮件;(二)收件人无法拒收的电子邮件;(三)隐藏发件人身份、地址、标题等信息的电子邮 件;(四)含有虚假的信息源、发件人、路由等信息的电子邮件。 垃圾邮件在英文中通常称为 Spam、UCE 或 UBE。
1.2 垃圾邮件到底有哪些危害? 垃圾邮件可以说是因特网带给人类最具争议性的副产品,它的泛滥已经使整个因特网不堪重负。 1)占用网络带宽,造成邮件服务器拥塞,进而降低整个网络的运行效率。 2)严重影响ISP的服务形象。在国际上,频繁转发垃圾邮件的主机会被上级国际ISP列入国际垃圾 邮件数据库,甚至导致该IP被封锁,不能访问国外许多网络。 3)被黑客利用成为助纣为虐的工具。 4)侵犯收件人的隐私权,侵占收件人信箱空间,耗费收件人的时间、精力和金钱。有的垃圾邮件 还盗用他人的电子邮件地址做发信地址,严重损害了他人的信誉。 5)妖言惑众、骗人钱财、传播色情等内容的垃圾邮件,已经对现实社会造成了危害。
1.3 发送垃圾邮件违法吗? 在很多国家, 如美国、澳大利亚、芬兰、丹麦、德国和意大利等已建立相关法律,明确规定发送垃圾邮件是违法行为。中国目前还没有全国性的法规, 明确规定垃圾邮件违法。但一些地方机构,如北京市工商行政管理局制定了《关于对利用电子邮件发送商业信息的行为进行规范的通告》, 对此进行了规范。另外,一些ISP (网络服务提供商)如中国电信、263等也都制定了自己的制止垃圾邮件的内部规定。
2.1 如何查找邮件信头? 每封邮件都有两个部分:信头和主体。 信头是一系列的字段(Fields);主体指您发送给收件人的数据,包括文本或文件。一个空字符串将两者分开,也就是说一个空字符串标记了信头的结束。
信头部分的字段可分为两类:一类是由您的电子邮件程序产生的,另一类是邮件通过SMTP服务器时加上的。在所有被SMTP服务器加上的字段中,对我们而言最重要的是Message-Id字段。这个字段是由您传向的SMTP服务器加上的。这是唯一的ID号,您可用这个号码作为邮件的编号。
下表列出了可由用户的邮件程序控制的信头字段。不是所有的字段都是必须的,实际上可以忽略形成信头这一步骤而只发送正文,让您的SMTP服务器为您加上最起码的必需字段。
信头字段 目的
From 邮件作者 Sender 发信人 Reply-To 回件地址 To 收信人地址 CC 另一个收信人地址 BCC 收信人地址,但这个收信人看不到其它收信人的地址。 Subject 主题 Comments 备注 Keywords 关键字,用来进一步搜索邮件 In-Reply-To 被当前邮件回复的邮件的ID References 几乎同In-Reply-To一样 Encrypted 加密邮件的加密类型 Date 发信日期
除了标准字段外,信头还可以包含用户自定义的字段。这些用户自定义的字段名必须由X开始。例如: X-Mailer; Microsoft Outlook Express 4.72.2106.4。
邮件信头的查找取决于所使用的邮件用户代理(MUA),或者说邮件应用程序,Outlook, Fox mail, Lotus Notes 都有自己的查看方法。请参考6.如何查看邮件信头?
2.2 为什么我收到的邮件是自己发给自己的? 这是因为通常您在邮件阅读程序上看到的发件人、收件人等信息是可以由发件人输入的;也就是说发件人可以对这些信息进行伪造,把发件人署上您的名字或任何其它人的名字。所以不要完全相信这些信息,特别是当您收到的内容比较奇怪时。
2.3 为什么我收到了来自xxx的邮件,而xxx却说没有发过? 参考2.2.
2.4 如何判断一封邮件是否经过伪造? 对于水平不高的伪造,可以通过信头看出来。通常情况下,一封信从发件人的机器到收件人的机器,中间会经过若干台邮件服务器。邮件每经过一台服务器,服务器就会相应地在信头的顶端加入一行 Received信息(注意:按照邮件经过的先后顺序,后经过的邮件服务器添加的信息在上面。)。尽管信体中的From、To 和信封中的From地址都是由用户自己输入的,但在邮件的信头中,Received 起始的信息是由邮件服务器(MTA)加上去的,从这里的可以看出邮件的真实来源。例如: Received:from pku.edu.cn ([104.128.3.115])by mail.tsinghua.edu.cn (8.8.5)…
表明信件是从IP 地址 104.128.3.115 传递过来的,这是由接收信件的邮件服务器加上去的,不受发信人的控制。需要注意的是 pku.edu.cn 仍可能是伪造的,可以通过查询DNS 来确认域名。
2.5 如何找到某个IP的管理员? 您可以登陆中国互联网络信息中心(CNNIC,www.cnnic.net.cn),在主页"WHOIS查询"栏中输入IP地址查询;或通过亚太网络信息中心(APNIC,www.apnic.net)主页上的"Whois search"栏查询。
3.1个人用户如何防止收到垃圾邮件 1)不要把您的邮件地址在INTERNET页面上到处登记; 2)不要把您的邮件地址告诉您不太信任的一些人; 3)不要订阅一些非正式的不健康的电子杂志,以防止被垃圾邮件收集者收集; 4)不要在某些收集垃圾邮件的网页上登记您的邮件地址; 5)发现收集或出售电子邮件地址的网站或消息,请告诉相应的主页提供商或主页管理员,将您的邮件地址删除,以避免邮件地址被他们利用,卖给许多商业用户及非法反动用户; 6)建议您用专门的邮箱进行私人通信,而用其他邮箱订阅电子杂志。
3.2 我是个人用户,收到垃圾邮件后我该怎么做? 作为个人用户,收到垃圾邮件后,下面的一些做法会帮助您避免或减少类似的麻烦,您可以有选择的采用; 1)不要相信 "取消订阅" 的声明。尽管很多邮件声明回复某个信箱后可以从发送名单中取消, 但事实上基本无效。相反,您的回信却经常被他们用来确认您的邮件地址是否有效,可能会被加入更多的邮件列表。
2)找出邮件的正确来源。很多垃圾邮件是经过伪装的,邮件的代理程序中显示的发件人通常是假的。可以参照"如何查看邮件信头"找出正确的发件人的地址及中间转发的服务器地址。
3)写信通知发信方网络管理员,表示您没有订阅过此类广告邮件,并且您也不想收到此类邮件,希望对方通知发信人。同时,需要拷贝给该邮件经过的服务器的管理员,告诉他们服务器正在转发垃圾邮件。尽管,您未必会收到管理员的答复,但如果不这样做,事情可能永远不会得到改善。
4)把该事件报告给您的网络管理员。您也可以向有关反垃圾邮件组织举报,如中国互联网协会反垃圾邮件协调小组www.spam.com.cn 。
5)最直接的办法是在您的邮件代理中设置过滤。许多邮件代理都具有这个功能,如Outlook, 就可设置关键词、邮件地址等规则来过滤邮件。
尽管第5种方法可能最为有效,但这种方法并没有从源头制止垃圾邮件。我们建议同时采取前四项措施。
4.1 什么是无限制转发? 所谓无限制转发,就是任何人都可以使用您的服务器发送邮件,一方面隐藏了真实的来源,另一方面转移了资源成本(发送者可以使用一台简单的PC机借用您的强大的服务器一次发送几十万封信)。OPEN RELAY 是由于历史的原因遗留下来的邮件服务器的安全缺陷。目前,绝大多数邮件服务器都具有关闭或限制OPEN RELAY的功能,有的需要更新到某个版本之后,有的需要打补丁。
4.2 OPEN RELAY 的原理 由于技术的原因,在80年代前,网络还不是很健全,机器之间很少能直接对话发送邮件,人们必须得找出一条有效的连接通路来,然后信件沿着通路一步一步传送到目的地。SMTP协议中就明确指出当邮件在不同的网络间传送时,需要借助中间服务器的RELAY。 邮件在收件方和发件方之间会经过毫不相干的第三方服务器,这就是邮件转发 (RELAY)。 如下图所示:
图中的 MAIL SERVER 是可以对要求转发的邮件进行限制的,如只转发来自某个域的邮件或来自某些IP 的邮件。如果转发没有任何限制,就被称为 OPEN RELAY 或 THIRD PARTY RELAY。 从历史上看,relay 曾经发挥过重要作用,而且当时这些工作主要靠手工来做,就像我们今天通过邮局发一封信一样。假如我想从沈阳发一封信件到深圳,我再信封上写好收信地址深圳,邮局就需要找到定义的运送路线: 沈阳,北京,郑州,长沙,广州,深圳。甚至还要长一些。其中很重要一点是每一个中继站都能很好的理解这封信将被送到哪里,下一个接收站是谁。在电子邮件里,这就相当于每个中继服务器清楚下一个服务起是谁,这就是邮件的转发。
4.3为什么不能配置邮件服务器为open relay? 如果系统管理员将自己的邮件服务器设置为open relay,将会导致一些垃圾邮件发送者将您的邮件服务器作为转发垃圾邮件的中继站,这将使垃圾邮件的接收者将矛头对准您,可能会导致报复性的邮件炸弹;垃圾邮件还能消耗您大量的资源,占用您的带宽。更为糟糕的事情可能是您的名字可能会上了黑名单,成为其他邮件接收者共同抵制的目标,您的邮件将被这些接收者所拒绝。因此,系统管理员应当注意不要将邮件服务器是设置成open relay。
4.4 如何确认邮件服务器是否RELAY 假设已知邮件服务器的IP地址是202.112.0.0 ,可以使用下列命令进行测试(文中的绿色字体为测试邮件服务器的反馈信息): #telnet 202.112.0.0 25 Trying 202.112.0.0... Connected to 202.112.0.0. Escape character is '^]'. 220 dns.ccert.edu.cn ESMTP Sendmail 8.11.1/8.11.1; Sat, 30 Jun 2001 21;07;10 +0800 helo mydomain 250 dns.ccert.edu.cn Hello point.ccert.edu.cn [202.112.50.3], pleased to meet you mail from;nobody@yahoo.com 250 2.1.0 nobody@#yahoo.com... Sender ok rcpt to;nobody@hotmail.com 550 5.7.1 nobody@hotmail.com... Relaying denied 最后的Relaying denied 表明该服务器已经安全设置,不会再relay无关邮件了。如果显示的结果是下面的样子,这表明服务器可以转发任何人的邮件。 rcpt to;nobody@hotmail.com 250 nobody@hotmail.com... Recipient ok data 354 Enter mail, end with "." on a line by itself this is a test of the relay 250 VAA00289 Message accepted for delivery 除了用以上的命令行的测试外,也可利用测试工具,只需输入IP即可。
4.5 我是网络管理员,我的用户投诉垃圾邮件该怎么办? 首先是关闭服务器的转发(OPEN RELAY), 目前绝大多数的垃圾邮件时使用第三方服务器转发的;另外一种有效的方法是采用过滤的方法,上面提到的过滤仅仅是其中的最简单的方法,还有许多有效的较为复杂的过滤方法。
4.6 我的邮件服务器应当如何设置才能限制被别人利用而我的用户可以继续使用? 根据您使用的邮件服务器,解决方法不同,您可以参考 5.Open relay 解决方案
4.7 我应该使用过滤工具吗? 如果您是系统管理员,您可能要对此小心行事。因为过滤垃圾邮件的同时可能会把正常的邮件同时过滤掉。如果您是最终用户,您可以根据需要使用邮件过滤功能。
OPEN RELAY 解决方案
6.1 Exchange Server 5.5 Exchange Server 是由微软公司开发的一套商业软件,在5.0 版本和以前版本可以relay任何邮件,没有解决办法。如果您使用的是5.5以前的版本,您需要升级到5.5版本。从5.5 版本(Service Pack 2) 开始加入了控制 open relay 的功能。具体操作方法如下: 1>在下面的选项中选择第二个,即Reroute incoming SMTP mail (required for POP3/IMAP4 support)。
如果选择第一项,邮件服务器虽然不会relay任何邮件,但它使邮件服务器接受邮件并返回一个"无法递送(NDR)"的报告给发件人。这不仅加重了服务器的负担而且可能被人利用攻击另一台机器。 2>在上图的Routing 表中填入所服务的域。假设您的域为realdomain.com并且这个邮件服务器也为另外一个域 vitualdomain.com 服务,选择Add, 填入两个域名,这是会出现下面的提示框:
通常选择第一项 Should be accepted as "inbound". 3>加入您允许接受relay 的域或IP. 在1>中的图文框中,单击"Routing Restrictions" 按钮,就会跳出下面的图文框:
选择第二项"Hosts and client with these IP addresses", 单击Add加入您允许relay 的IP即可。如果没有允许relay的IP,也需要选上此项,只是不加入任何IP即可。
6.2 Netscape Netscape Messaging Server 从3.5版本开始加入了relay的控制功能。如果使用的是3.5以前的版本,需要更新到3.5或更新的版本。当前最新版本(2001-06)是4.15p6。
Netscape Messaging Server 有两种方法可以用来控制open relay。一种是使用Anti-relay Filter; 另一种是 Anti-relay Plug-In。后者的功能更强大些,但只支持4.x 版本;如果使用的是3.5版本,这需要使用前一种方法。 [使用Anti-relay Filter] 找到filter.cfg 文件(4.0以上版本名字是UBEfilter.cfg),进行如下编辑(假设该服务器只负责xyzcorp.com域收邮件): Channel-To ".*@xyzcorp\.com" EXIT $ANY ".*" REJECT "We accept mail for XYZ Corporation only" 如果该服务器还负责转发来自123.45.67.* 邮件,那末就应该加入: Host-From "123.45.67.*" EXIT Channel-To ".*@xyzcorp\.com" EXIT $ANY ".*" REJECT "We accept mail for XYZ Corporation only"
6.3 Sendmail Sendmail从8.9.3版本开始缺省设置禁止转发垃圾邮件,在此之前的版本在这方面都存在着严重的安全缺陷。因此,有必要把您的Sendmail 升级到 8.9.3 以上版本。考虑到其它方面的安全漏洞,我们建议您升级到当前最新版本。
新安装的Sendmail 不会转发任何邮件,如果您的邮件服务器需要为某些用户提供转发服务,您需要对Sendmail的配置文件进行设置。设置方法有多种,比较简单的方法是在/etc/mail/下生成一个名字为relay-domains 的文件,在该文件中列出需要relay的IP或域名。 [Sendmail 8.9.3安装过程] 译时需要gcc, groff, gmake, gm4.(Solaris 系统可以从这里下载)编译、安装sendmail服务器 1) 设置环境:(保证您所用的是 groff, gmake.假设这些您都安装在 /usr/local/ 下) 。 %setenv PATH /usr/local/bin;$PATH %setenv GROFF_TMAC_PATH /usr/local/share/groff/tmac %setenv GROFF_FONT_PATH /usr/local/share/groff/font
2) 备份/usr/lib/sendmail 和 /etc/mail/sendmail.hf #cp /usr/lib/sendmail /usr/lib/sendmail.old #cp /etc/mail/sendmail.hf /etc/mail/sendmail.hf.old
3)安装 sendmail download sendmail-8.9.3.tar.Z %zcat sendmail-8.9.3.tar.gz |tar xvf - %cd sendmail-8.9.3 %make 安装需要超级用户权限. #make install
4)生成 sendmail.cf 生成自己系统的mc文件: %cd sendmail-8.9.3/cf/cf %cp generic-solaris2.mc my-system.mc 按照您的需要改动my-system.mc, 加入您所需要的FEATURE. 例; FEATURE(access_db, dbm -o /etc/mail/access)
生成并安装sendmail.cf文件,在sendmain-8.9.3/cf/cf目录下执行; (需要 gm4) % m4 ../m4/cf.m4 my-system.mc>sendmail.cf 将sendmail.cf拷贝到/etc下或/etc/mail 下.
5)产生其他配置文件和启动: (1)在/etc/mail下生成sendmail.cw文件记录该服务器的所有别名 (2)在/etc/mail下生成relay-domains文件记录该服务器允许relay的域, 例; ccert.edu.cn 202.116.34.1 202.112.33. (3)%chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueque (4)%chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue (5)初始化别名数据库%sendmail -v -bi. 如果没有Error,则启动sendmail进程; #/usr/lib/sendmail -bd -q1h [注意] 如果升级后Sendmail仍然使用旧的配置文件,可能会继续relay任何人的邮件,此时需要摒弃旧的配置文件,根据需要重新进行配置。 配置文件修改后,必须重新启动Sendmail 后才能生效。
6.4 Qmail安全 Qmail有一个名为rcpthosts (该文件名源于RCPT TO命令)的配置文件,其决定了是否接受一个邮件。只有当一个RCPT TO命令中的接收者地址的域名存在于rcpthosts文件中时,才接受该邮件,否则就拒绝该邮件。若该文件不存在,则所有的邮件将被接受。当一个邮件服务器不管邮件接收者和邮件接收者是谁,而是对所有邮件进行转发(relay),则该邮件服务器就被称为开放转发(open relay)的。当qmail服务器没有rcpthosts时,其是开放转发的。 设置自己服务器为非open relay的最简单的办法就是将您的邮件服务器的所有域名(若DNS的MX记录指向该机器,也应该包括该域名。例如您的机器有三个域名mail.linxuaid.com.cn、mail1.linuxaid.com.cn,而且linuxaid.com.cn的MX指向mail.linuxaid.com.cn,则qmail的rcphosts的应该包括mail.linuxaid.com.cn、mail1.linuxaid.com.cn和linuxaid.com.cn)。 但是这将导致您的本地客户也被拒绝使用您的服务器转发邮件,而要支持客户使用MUA来发送邮件,必须允许客户使用服务器转发邮件。qmail-smtpd支持一种有选择性的忽略rcpthosts文件的方法:若qmail-smtpd的环境变量RELAYCLIENT被设置,则rcpthost文件将被忽略,relay将被允许。但是如何识别一个邮件发送者是否是自己的客户呢?qmail并没有采用密码认证的方法,而是判断发送邮件者的源IP地址,若该IP地址属于本地网络,则认为该发送者为自己的客户。 这里就要使用ucspi-tcp软件包。在这里我们要使用该软件包的tcpserver程序。该程序的功能类似于inetd-监听进入的连接请求,为要启动的服务设置各种环境变量,然后启动指定的服务。 tcpserver的配置文件是/etc/tcp.smtp,该文件定义了是否对某个网络设置RELAYCLIENT环境变量。例如,本地网络是地址为192.168.10.0/24的C类地址,则tcp.smtp的内容应该设置如下: 127.0.0.1;allow,RELAYCLIENT="" 192.168.10.;allow,RELAYCLIENT="" ;allow 这几个规则的含义是指若连接来自127.0.0.1和192.168.10则允许,并且为其设置环境变量RELAYCLIENT,否则允许其他连接,但是不设置RELAYCLIENT环境变量。这样当从其他地方到本地的25号连接将会被允许,但是由于没有被设置环境变量,所以其连接将会被qmail-smptd所拒绝。 但是tcopserver并不直接使用/etc/tcp.smtp文件,而是需要先将该文件转化为cbd文件: [lix@mail /etc]$ # tcprules tcp.smtp.cdb tcp.smtp.temp < tcp.smtp 然后再回头看在/service/qmail-smtpd目录下的run文件中有 /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb 可以看到,tcpserver利用了/etc/smtp.cbd文件。若本地有多个网络,则需要这些网络都出现在/etc/tcp.smtp文件中。 这样就实现了允许本地客户relay邮件,而防止relay被滥用。
如何查看邮件信头
1. Microsoft Outlook Express 第一步:选中邮件,鼠标右击邮件的主题,在下拉菜单中选择"属性",如下图:
第二步:在属性窗口中点击"详细信息",如下图:
通过窗口,您就可以看到该邮件标头的详细信息了。为了查看方便,可以单击"邮件来源",就会放大当前的窗口。
2. Microsoft Outlook 第一步:选中邮件,鼠标右击邮件的主题,在下拉菜单中选择"选项(P)...",如下图
第二步:在打开的"邮件选项"属性窗口的底部就可以找到邮件信头,如下图:
3.Foxmail 第一步:选中邮件,鼠标右击邮件的主题,在下拉菜单中选择"原始信息(Ctrl+I)...",如下图:
第二步:在打开的"邮件选项"属性窗口的底部就可以找到邮件信头,如下图:
4. Hotmail Web Mail 第一步:单击"选项" 栏,如下图:
第二步:在"其它选项" 栏中,选择"邮件显示"设置,如下图:
第三步:在"邮件头"的选项栏中,选择"高级"或"完整",按"确定", 如下图:
第四步:经过以上设置,打开邮件时即可显示邮件信头的路由信息,如果选择了"完整",还可以查看邮件的源文件,如下图:
5. Lotus Notes 第一步:打开邮件,在菜单栏上依次选择"操作(Actions)","tools","Delivery Information" ,如下图:
第二步:弹出的窗口中即可看到邮件的路由信息,如下图:
6. 新浪WEB邮件 在菜单栏上依次选择"查看源信",就可以看到邮件的完整信息,如下图:
|