Sender -> Sender's SMTP server -> Receiver's SMTP server -> Receiver
正常流程,SMTP是这样应用的,需要自己的服务器中转。
其实可以直接Sender - > Receiver's SMTP server ->Receiver.
Foxmail里面其实也是支持这个的,叫特快信,需要设置一下DNS.因为模拟成邮件服务器,给其他邮件服务器发信应该是不需要验证身份的,而且可以乱填发信人的名字,这个就是所谓的匿名信,其实就是垃圾邮件了。但是现在的邮件服务器过滤比较牛了,可以逆向,知道你的发送IP是动态IP,或者逆向发送者的邮箱例如sender@AAA.com, 发现你的IP和DNS找到的AAA.com不匹配估计就知道是乱发,猜测,以下代码很都服务器都发送不了了 :) 但是学习之用。 如果你能使用原始套接字伪装你的IP或者真可以发匿名信了。
对了,邮件服务器之间是通过MX记录来交换邮件的,就是说我是服务器A,要发送邮件到BBB@BBB.com那么我在DNS记录里面查找MX记录,与BBB.com相同的就是我要发送的邮件服务器的IP了。
MX记录获取可以使用SUN的一个DnsContext的类,或者可以搜索一下,有个老兄自己写Socket直接查DNS记录。 /**************************************************************************************************/
/** 原理介绍,转载**/
- 什么是DNS?
域名管理系统DNS(Domain Name System)是域名解析服务器的意思.它在互联网的作用是:把域名转换成为网络可以识别的ip地址.比如:我们上网时输入的www.163.com会自动转换成为202.108.42.72
- 什么是A记录?
A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。
- 什么是NS记录?
NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
- 什么是别名记录(CNAME)?
也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称就是“www.mydomain.com”和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。
- 什么是泛域名解析?
泛域名解析定义为: 客户的域名a.com,之下所设的*.a.com全部解析到同一个IP地址上去。 比如客户设b.a.com就会自已自动解析到与a.com同一个IP地址上去。
- 什么是MX记录?
MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。
检查MX记录是否存在的方法
进行DNS查询的一个非常有用的工具是nslookup,可以使用它来查询DNS中的各种数据。可以在Windows的命令行下直接运行nslookup进入一个交互模式,在这里能查询各种类型的DNS数据。
DNS的名字解析数据可以有各种不同的类型,有设置这个zone的参数的SOA类型数据,有设置名字对应的IP地址的A类型数据,有设置邮件交换的MX类型数据。这些不同类型的数据均可以通过nslookup的交互模式来查询,在查询过程中可以使用 set type命令设置相应的查询类型。
C:/Documents and Settings/God Father>nslookup
*** Can't find server name for address 192.168.1.1: No response from server
Default Server: ns.szptt.net.cn
Address: 202.96.134.133
> set type=mx
> tom.com
Server: ns.szptt.net.cn
Address: 202.96.134.133
Non-authoritative answer:
tom.com MX preference = 10, mail exchanger = tommx.163.net
tom.com nameserver = ns1.tom.com
tom.com nameserver = ns2.tom.com
tommx.163.net internet address = 202.108.255.210
tommx.163.net internet address = 202.108.252.141
ns1.tom.com internet address = 61.135.159.46
ns2.tom.com internet address = 61.135.159.47
很老的代码了。Jbuilder画图和Eclipse生成的代码确实不一样,其实感觉做界面还是用SWT好些。
* org.gsoft.mail.server.EmsFrame.java
* Copyright All rights reserved.
*/
package org.gsoft.mail.server;
import javax.swing.*;
import java.awt.Font;