《梭子鱼用户大学》系列课程:第一章 第四至六节
[size=2][color=red]《梭子鱼用户大学》系列课程:第一章 第四至六节:邮件编码,发邮件验证方式,邮件的dns mx记录的作用及设置[/color][/size][size=2][color=#ff0000][/color][/size]
[size=2][color=#ff0000][color=black][size=2][b]邮件编码:[/b][/size]
[u][size=2][/size][/u]
[size=2]一、为什么要编码? [/size][size=2]
在internet里,e-mail的传送是只能传送us-ascii格式的文字讯息,ascii是7位的,而非ascii格式的档案,在传送过程中若不先经过编码,先编成7位再传送,则在传送过程中会因为这7位元的限制而遭到拆解,拆解之后只会让收信方看到一堆乱七八糟不知所云的东西。经过编码后的资料,在传送过程中才可顺利传送,不会有“被截掉一个bit”的危险,但是收信方必须具有解码程序,将这份经过编码的东西还原,才能解读“天书”,看到寄信人要传送的真实信息。
二、mime/base64编码:
base64编码是用的最多的邮件编码格式,具体如下:
base64和quoted-printable都属于mime(多部分( multi-part)、多媒体电子邮件和 www 超文本的一种编码标准,用于传送诸如图形、声音和传真等非文本数据)。mime定义在rfc1341中。
base64是现今在互联网上应用最多的一种编码,几乎所有的电子邮件软件头把它作为默认的二进制编码,它已经成了现今电子邮件编码的代名词。
下面是base64的一个例子,从例子中,您也可以看到base64与电子邮件的的紧密联系:
content-type: text/plain;charset="cn-gb"
content-transfer-encoding: base64
cqkjicagikg2wtlc68vjt6i088irobcncgnx99xfom1vz2fvo6yw19tgu8a619w+o6h0zwxuzxq6
ly8ymdiumteyljiwljezmjoym6ops8nusagjdqojicagicagxkq438jtvp65pnf3ytkjumh0dha6
ly9tb2dhby5izw50axvulm5lda0kcqkjrw1hawx0bzptb2dhb0aznzeubmv0dqojicagkioqkioq
kioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqicagicagicagicagicagdqoj
icagkicz/chlvmfs5mqyw7s2vlk7tpjx36oss/3by9fjvkpksso0tryyu8h0z8iqdqojicagkioq
kioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioq
base64的算法很简单:它将字符流顺序放入一个24位的缓冲区,缺字符的地方补零。然后将缓冲区截断成为4个部分,高位在先,每个部分6位(6位二进制数可表示0~63),用下面的64个字符重新表示(0就是a,1就是b...):“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/”。如果输入只有一个或两个字节,那么输出将用等号“=”补足。这可以隔断附加的信息造成编码的混乱。它每行一般为76个字符。
三、其他编码方式介绍:
1、qp编码:
quoted-printable简称qp, 一般用在email系统中。它通常用于少量文本方式的8位字符的编码,例如foxmail就用它做对主题和信体的编码。这种编码的应该是很好辨认的:它有大量的“=”。下面是它的一个例子:
mime-version: 1.0
content-transfer-encoding: quoted-printable
=a1=b6=c2=d2=c2=eb=cb=e3=b7=a8=b4=f3=c8=ab=a1=b7
=d7=f7=d5=df:xxxx=a3=ac=b0=d7=d4=c6=bb=c6=ba=d7=d5=be=a3=a8[url]telnet://61.129.63.131:23=a3=a9[/url]
=b3=c9=d4=b1=a1=a3
=c4=aa=b8=df=c8=ed=bc=fe=b9=a4=d7=f7=ca=d2=a3=ba[url]http://docs.xuehu.com[/url]
emailto:yin_jie@163.net
*********************************************
* =b3=fd=c1=cb=bc=c7=d2=e4=ca=b2=c3=b4=b6=bc=b2=bb=b4=f8=d7=df=a3=ac=b3=fd=c1=cb=d7=e3=bc=a3=ca
=b2=c3=b4=b6=bc=b2=bb=c1=f4=cf=c2*
*********************************************
qp的算法可以说是最简单的也可以说是编码效率最低的(它的编码率是1:3),它是专门为了处理8位字符制定的。它的算法是:读一个字符,如果ascii码大于127,即字符的第8位是1的话,进行编码,否则忽略(有时也对7位字符编码)。
2. unicode
unicode应用中最典型的例子是:ie4以上版本对html的编码。它可以说是未来windows下唯一的字符集。但它还很不完善,而且win95和win98对它的支持还很有限,甚至它还没有一套完整的标准。不过,微软最新推出的office2000和马上就要推出的windows2000将全面支持unicode。unicode取代其他编码将会是必然的趋势。不过,在近一两年unicode并不会占主导地位,就是在占主导地位后,因为操作系统的差异,其他编码也不会立即消亡。它的中文资料可以在office2000和windows2000所带的文档中找到,它的官方网站是:[url=http://www.unicode.org/][color=#666666]http://www.unicode.org/[/color][/url]。
3. binhex
binhex 编码是 macintosh 计算机(也就是俗称的“苹果电脑”)上用可打印字符表示/传输二进制文件的一种编码方法。它的主要用途是在电子邮件程序中attach二进制文件。大部分的电子邮件程序不支持这种格式(eudora支持),但用winzip可以进行解码。它的资料请查阅macintosh计算机带的相关文档。
4.uuencode
uuencode 是将二进制文件以文本文件方式进行编码表示、以利于基于文本传输环境中进行二进制文件的传输/交换的编码方法之一, 在邮件系统/二进制新闻组中使用频率比较高,经常用于 attach 二进制文件。
这种编码的特征是:每一行开头用“m”标志
uuencode的算法很简单,编码时它将3个字符顺序放入一个 24 位的缓冲区,缺字符的地方补零,然后将缓冲区截断成为 4 个部分,高位在先,每个部分 6 位,用下面的64个字符重新表示:
"`!"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_"
在文件的开头有“begin xxx 被编码的文件名”,在文件的结尾有“end”,用来标志uue文件的开始和结束。编码时,每次读取源文件的45个字符,不足45个的用“null”补足为3的整数倍(如:23补为24),然后输入目标文件一个ascii为:“32+实际读取的字符数”的字符作为每一行的开始。读取的字符编码后输入目标文件,再输入一个“换行符”。如果源文件被编码完了,那么输入“`(ascii为96)”和一个“换行符”表示编码结束。
解码时它将4个字符分别转换为4个6位字符后,截取有用的后六位放入一个 24 位的缓冲区,即得3个二进制代码。
四、其他:
1、由于邮件编/解码要消耗大量的cup资源,所以邮件中不适合附加太大的附件程序,否则在阅读邮件和发送邮件时会导致资源消耗太多而死机。
2、由于邮件编码可能会增加容量,加上邮件头,所以实际邮件的大小比附加的附件加上邮件文本内容的大小和要大的多。
[b]发邮件验证使用的esmtp[/b]
[/size]
[size=2][/size]
[size=2]esmtp,英文全称是“extended smtp”,顾名思义,扩展smtp就是对标准smtp协议进行的扩展。它与smtp服务的区别仅仅是,使用smtp发信不需要验证用户帐户,而用esmtp发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与smtp方式没有两样。[/size]
[size=2][/size]
[size=2]esmtp协议分析[/size]
[size=2] 为了实现身份认证功能,目前esmtp协议中增加了一部分内容,这就是身份认证。下面我们看看这段认证过程,以网易的邮箱为例(其中c表示客户端,s表示邮件服务器):[/size]
[size=2][/size]
[size=2] (1)c: auth login[/size]
[size=2] (2)s: 334 dxnlcm5hbwu6[/size]
[size=2] (3)c: d3lxx2pux3nkx2nu[/size]
[size=2] (4)s: 334 ugfzc3dvcmq6[/size]
[size=2] (5)c: 密码略去[/size]
[size=2] (6)s: 235 authentication successful[/size]
[size=2] 详细说明: [/size]
[size=2] (1)客户端向服务器发送认证指令。在这之前一般要使用ehlo命令,宣告开始进行esmtp验证。[/size]
[size=2] (2)服务器返回base64编码串,334意味成功。编码字符串解码后为"username:",说明要求客户端发送用户名。[/size]
[size=2] (3)客户端发送base64编码的用户名串,此处为"wyq_jn_sd_cn"。[/size]
[size=2] (4)服务器返回base64编码串,334意味成功。编码字符串解码后为"password:",说明要求客户端发送用户口令。[/size]
[size=2] (5)客户端发送base64编码的口令串,此处略去。[/size]
[size=2] (6)服务器返回普通字符串,235意味成功,表示认证成功可以发送邮件了。[/size]
[size=2][/size]
[size=2][/size]
[size=2][/size]
[size=2][b]邮件的dns mx记录[/b][/size]
[size=2][/size]
[size=2][/size]
[size=2]mx记录来实现邮件路由,它规定了域名的邮件服务器要么处理,要么向前转发有关该域名的邮件.处理邮件是指将其传送给其地址所关联的个人,向前转发邮件是指通过smtp协议将其传送给其最终目的地.为了防止邮递路由,mx记录除了邮件交换器的域名外还有一个特殊参数:优先级值.优先级值是个从0 到65535的无符号整数,它给出邮件交换器的优先级别. [/size]
[size=2] 优先级值自身并不重要,关键在于它同其它邮件交换器的优先级值的相对大小,优先级值相对越小,优先级越高.邮件总是首先试图传递给优先级值相对最小的邮件交换器.失败后才试图传递给优先级值稍大的邮件交换器.邮件总是试遍了同一优先级的邮件交换器,失败后才试图传递给优先级稍低的邮件交换器. [/size]
[size=2]注意你列为邮件交换器的主机必须拥有地址记录.[/size]
[size=2]
[/size]
[size=2][/size]
[size=2]下面列出几个我用nslookup程序查询的记录:
lee@work:~$ nslookup
> set type=mx
> hnby.com.cn
server: 10.10.16.60
address: 10.10.16.60#53
non-authoritative answer:
[color=#ff12]*** can't find hnby.com.cn: no answer //没有邮件交换[/color]
authoritative answers can be found from:
hnby.com.cn
origin = dns.hnby.com.cn
mail addr = root.hnby.com.cn
serial = 2002120101
refresh = 900
retry = 600
expire = 86400
minimum = 3600
> set type=mx
> henan.gov.cn
server: 10.10.16.60
address: 10.10.16.60#53
non-authoritative answer:
[color=#ff12]*** can't find henan.gov.cn: no answer[/color]
authoritative answers can be found from:
henan.gov.cn
origin = ns.hazzptt.net.cn
mail addr = root.ns.hazzptt.net.cn
serial = 99968011
refresh = 28899
retry = 7200
expire = 604800
minimum = 86400
> set type=mx
> yahoo.com.cn
server: 10.10.16.60
address: 10.10.16.60#53
non-authoritative answer:
[color=#ff12]yahoo.com.cn mail exchanger = 10 mta-v1.mail.vip.cnb.yahoo.com. //雅虎中国的邮件交换服务[/color]
authoritative answers can be found from:
yahoo.com.cn nameserver = ns8.yahoo.com.
yahoo.com.cn nameserver = ns9.yahoo.com.
yahoo.com.cn nameserver = ns1.yahoo.com.
yahoo.com.cn nameserver = ns3.yahoo.com.
yahoo.com.cn nameserver = ns6.yahoo.com.
ns1.yahoo.com internet address = 66.218.71.63
ns3.yahoo.com internet address = 217.12.4.104
ns6.yahoo.com internet address = 202.43.223.170
> set type=mx
> yahoo.com
server: 10.10.16.60
address: 10.10.16.60#53
non-authoritative answer:
[color=#ff12]yahoo.com mail exchanger = 1 mx3.mail.yahoo.com.[/color]
[color=#ff12]yahoo.com mail exchanger = 1 mx1.mail.yahoo.com.[/color]
[color=#ff12]yahoo.com mail exchanger = 1 mx2.mail.yahoo.com.[/color]
authoritative answers can be found from:
yahoo.com nameserver = ns1.yahoo.com.
yahoo.com nameserver = ns2.yahoo.com.
yahoo.com nameserver = ns3.yahoo.com.
yahoo.com nameserver = ns4.yahoo.com.
yahoo.com nameserver = ns5.yahoo.com.
[color=#ff12]mx3.mail.yahoo.com internet address = 4.79.181.12[/color]
[color=#ff12]mx3.mail.yahoo.com internet address = 67.28.113.10[/color]
[color=#ff12]mx3.mail.yahoo.com internet address = 4.79.181.168[/color]
[color=#ff12]mx3.mail.yahoo.com internet address = 4.79.181.134[/color]
[color=#ff12]mx3.mail.yahoo.com internet address = 67.28.113.74[/color]
[color=#ff12]mx1.mail.yahoo.com internet address = 67.28.113.71[/color]
[color=#ff12]mx1.mail.yahoo.com internet address = 67.28.113.73[/color]
[color=#ff12]mx1.mail.yahoo.com internet address = 67.28.113.19[/color]
[color=#ff12]mx1.mail.yahoo.com internet address = 4.79.181.14[/color]
[color=#ff12]mx1.mail.yahoo.com internet address = 4.79.181.15[/color]
[color=#ff12]mx1.mail.yahoo.com internet address = 4.79.181.168[/color]
[color=#ff12]mx2.mail.yahoo.com internet address = 4.79.181.135[/color]
[color=#ff12]mx2.mail.yahoo.com internet address = 4.79.181.136[/color]
[color=#ff12]mx2.mail.yahoo.com internet address = 4.79.181.168[/color]
[color=#ff12]mx2.mail.yahoo.com internet address = 67.28.113.70[/color]
[color=#ff12]mx2.mail.yahoo.com internet address = 67.28.113.72[/color]
ns1.yahoo.com internet address = 66.218.71.63
ns2.yahoo.com internet address = 66.163.169.170
ns3.yahoo.com internet address = 217.12.4.104
ns4.yahoo.com internet address = 68.142.196.63
> set type=mx
> dahew.com.cn
server: 10.10.16.60
address: 10.10.16.60#53
*** can't find dahew.com.cn: no answer
> set type=mx
> dahew.com
server: 10.10.16.60
address: 10.10.16.60#53
non-authoritative answer:
[color=#ff12]dahew.com mail exchanger = 10 mail1.dahew.com.[/color]
authoritative answers can be found from:
dahew.com nameserver = ns1.dns-diy.com.
dahew.com nameserver = ns2.dns-diy.com.
[color=#ff12]mail1.dahew.com internet address = 219.156.123.177[/color]
ns1.dns-diy.com internet address = 210.51.187.81
ns1.dns-diy.com internet address = 218.16.225.50
ns1.dns-diy.com internet address = 60.191.252.66
ns2.dns-diy.com internet address = 218.107.207.123
ns2.dns-diy.com internet address = 218.85.134.143
ns2.dns-diy.com internet address = 64.84.29.59
[/size][size=13px][size=2]
[/size][/size]
[size=13px][size=2][/size][/size]
[size=13px][size=2][b]注意:目前有不少的管理员不注意设置标准的mx记录,根据rfc 1035规定,mx只可以指向a记录,有的管理员偷懒,直接就设置成指向一个ip地址,造成本域的邮件接收有问题。如果你的域之前也有这方面的设置错误,请立即更正,将mx记录指定为一条a记录,然后将这条a记录指向你设置的ip地址,这样才能被正常解析接收邮件。[/b][/size][/size]
[size=13px][size=2][/size][/size]
[size=13px][size=2]
[/size][/size][size=13px][size=2][u]补充: 关于dns记录的使用注意和通过nslookup进行查询,请查看下面更多的文章了解:[/u][/size][/size]
[size=13px][size=2][u]
[/u][/size]
[/size][size=2][color=#666666][url=http://www.chinaitpower.com/2005september/2005-09-13/207175.html]http://www.chinaitpower.com/2005september/2005-09-13/207175.html[/url][/color][/size]
[size=2][color=#666666][url=http://www.moon-soft.com/download/info/2041.htm]http://www.moon-soft.com/download/info/2041.htm[/url][/color][/size]
[size=2][color=#666666][/color][/size]
[size=2][color=#666666][/color][/size]
[size=2][color=#666666][/color][/size]
[size=2][color=#666666][/color][/size]
[size=2]下期提示: 下期我们会进入课程第二章,正式开始对梭子鱼反垃圾邮件产品的介绍,敬请大家留意。[/size]
[/color][/color][/size]
有一种感动叫守口如瓶
[color=black]男人失业了。他没有告诉女人,仍然按时出门和回家。他不忘编造一些故事欺骗女人。他说新来的主任挺和蔼的,新来的女大学生挺清纯的……女人掐他的耳朵,笑着说,你小心点。那时他正往外走,女人拉住他帮他整理衬衣的领口。男人夹了公文包,挤上公交车,三站后下来。他在公园的长椅上坐定,愁容满面地看广场上成群的鸽子。到了傍晚,男人换一副笑脸回家。他敲敲门,大声喊,我回来啦!男人这样待了5天。5天后,他在一家很小的水泥厂,找到一份短工。
那里环境恶劣,飘扬的粉尘让他的喉咙总是干的;劳动强度很大,这让他身上又总是湿的。组长说你别干了,你这身子骨……男人说我可以。他紧咬了牙关,两腿轻轻地抖。男人全身沾满厚厚的粉尘,他像一尊活动的疲劳的泥塑。
下了班,男人在工厂匆匆洗一个澡,换上笔挺的西装,扮一身轻盈回家。他敲敲门,大声喊,我回来啦!女人就奔过来开门。满屋葱花的香味,让男人心安。
饭桌上女人问他工作顺心吗?他说顺心,新来的女大学生挺清纯……女人劈一个怒眉,却给男人夹一筷子木耳……
女人说水开了,要洗澡吗?男人说洗过了。女人说洗过了?男人说洗过了……和同事洗完桑拿回来的。女人说好享受啊你。她轻哼着歌,开始收拾碗碟。男人想好险,差一点被识破。疲惫的男人匆匆洗脸刷牙,然后倒头就睡。
男人在那个水泥厂干了二十多天。快到月底了,他不知道那可怜的一点工资,能不能骗过女人?
那天晚饭后,女人突然说,你别在那个公司上班了吧?我知道有个公司在招聘,帮你打听了,所有要求你都符合,明天去试试?男人一阵狂喜,却说,为什么要换呢?女人说换个环境不很好吗?再说这家待遇很不错呢。于是第二天,男人去应聘,结果被顺利录取。那天男人烧了很多菜,喝了很多酒。
男人知道,他其实瞒不过女人的。或许从去[/color][url=http://www.173qz.com/kecheng/][color=black]柯城[/color][/url][color=black]水泥厂上班那天,或许从他丢掉工作那天,女人就知道了。是他躲闪的眼神出卖了他吗?是他疲惫的身体出卖了他吗?是女人从窗口看到他坐上了相反方向的公共汽车吗?还是他故作轻松的神态太过拙劣和夸张?他可以编造故事骗他的女人,但却无法让心细的女人相信。其实,当一个人深爱着对方,又有什么事,能瞒过去呢?
男人回想这二十多天的日子。每一天,饭桌上都有一盘木耳炒蛋。男人知道木耳可以清肺。粉尘飞扬中的男人,需要一盘木耳炒蛋;有时女人会逼他吃掉两勺梨膏,现在男人想,那也是女人精心的策划;还有这些日子,女人不再缠着他陪她看电视连续剧,因为他是那样疲惫。现在男人完全相信女人早就知晓了他的秘密,她默默地为他做着事,却从来不揭开它。事业如日中天的男人突然失业,变得一文不名,这是一个秘密。是男人的,也是她的。她必须咬着痛,守口如瓶。她不能让任何人知道,包括制造秘密的男人。
男人站在阳台看城市的夜景,终有一滴眼泪落下。
婚姻生活中,有一种感动叫相亲相爱,有一种感动叫相濡以沫。其实还有一种感动,叫做守口如瓶。[/color]
页:
[1]
