首页 > 编程知识 正文

本地邮件服务器,邮件服务器由什么组成

时间:2023-05-05 18:02:27 阅读:117839 作者:540

PAGE14/NUMPAGES14

SMTP邮件服务器实验

1 .实验内容和实验环境说明

实验工作:使用Socket API创建SMTP邮件服务器程序

实验内容:1)作为SMTP服务器,接收邮件客户端程序的TCP连接请求,接收SMTP命令和邮件数据,并将邮件保存在文件中;

2 )作为SMTP客户端,建立与实际邮件服务器的TCP连接,发送SMTP命令,并将保存的邮件发送到实际邮件服务器

3 )提供邮件错误报告)将实际邮件服务器的错误报告传输到邮件客户端软件

4 )支持一封邮件的多个收件人,要求收件人属于不同的域(例如163.com、…);

5 )提供发件人和收件人电子邮件地址格式检查功能。 例如,以下邮件地址是错误的。 chengli,chengli@,

实验环境: Microsoft Visual Studio 2010

2 .软件设计

(1)数据结构:

char mail_from[4096]; //保存发送源地址

char rcpt_to[5][4096]; //保存收件人

char data[4096]; 储存数据

用于存储char imf[4096] //邮件的标准格式

WORD A; //装入套接字库

WSADATA B; 调用WSAStartup函数保存返回的windows套接字初始化信息

int err; //错误标志

套接字Socks Rv; //创建接收客户端的套接字

SOCKADDR_IN addrSrv; //作为服务器端的套接字地址

char recvBuf[4096]=' '; //接收客户端SMTP命令

)2)模块结构:

[1]main (; //用于从客户端接收保存邮件的服务器端

[2] main _ CLI cenet (套接字; //客户端将接收到的邮件转发到邮件服务器,并且将邮件服务器的错误报告通过套接字s转发到客户端

[3]增值税电子邮件(char * addr ); //收发地址(addr )的合法性监测

)3)算法流程)制作流程图,描述算法的主要流程。

主() )

加载windows套接字; 创建监听套接字; 将插座和插座结合; 将插座置于监听模式;

while(1)。

如果队列不为空,则提取第一个链接以建立连接。 打开邮件保存文件;

Send:220 recv:kddhmgsjx;

send :250 ok recv : mail from :

t发送目的地

地址的合法性f

send :550邀请用户; 连续

send :250 ok recv : rcpt to : 检查合法性

wile(recv!=DATA )

recv: RCPT TO: 检查合法性

Send:250 OK

recv :数据

send :354开始邮件输入; end with. rnrecv :数据框架, bytes

Send:250 recv:IMF; send 250 recv:

send :队列

调用客户端程序

关闭插座

关闭文件指针

释放分配的套接字资源

)4)主要功能模块的实现要点

[1]main (; //用于从客户端接收保存邮件的服务器端

实现要点:建立与客户端的连接,根据SMTP协议标准进行通信。

[2] main _ CLI cenet (套接字; //客户端将接收到的邮件转发到邮件服务器,并且将邮件服务器的错误报告通过套接字s转发到客户端

实现要点:建立与服务器端的连接,根据SMTP协议标准进行通信。

[3]增值税电子邮件(char * addr ); //收发地址(addr )的合法性监测

实现要点:根据标准的电子邮件地址格式进行合法性监测

3实验结果演示与分析

)1)对你实现的功能,逐一进行测试,输出截图。

常规邮件分发:

1

2

3

4

错误报告:

1

2

)2)你的程序提供了错误处理功能吗? 能处理什么样的错误?

[1]将实际邮件服务器的错误报告传送到邮件客户端软件

[2]监视收发邮件地址的格式是否正确

)3)与上课学习的SMTP协议相比,你的程序是否按协议实现呢

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。