1、1.3.3 程序要捕获以下信号并做相应处理 31.3.4 要实现的SMTP(ESMTP)/POP3命令列表 3微普邮件服务器项目需求1.1 引言1.1.1 编写目的帮助学员了解项目的功能,明确需求功能中用户对系统要做什么的要求,了解需求中的各种业务规则。1.1.2 范围软件的名称:邮件服务器软件的功能:提供邮件的发送(包括群发和转发)和接收的功能。1.2 项目概述1.2.1 产品描述邮件服务器的主要功能是发送和接收邮件以达到数据信息传递和共享的目的。它包含两部分:负责发送邮件的SMTP服务器和负责接收邮件的POP3服务器。在LINUX底下开发邮件服务器旨在帮助学员综合运用LINUX初级编程与L
2、INUX高级编程所学到的知识。如:字符串数据的处理,守护进程的编写,进程间通信,多线程, 管道,SOCKET编程,文件I/O标准库函数与系统调用,以及文件权限管理等等。这里实际上要编写两个服务器程序,一个实现SMTP协议完成邮件的发送功能,一个实现POP3协议完成邮件的接收功能。注意分开实现!1.2.2 产品功能必需要实现的软件功能:1.支持SMTP/ESMTP/POP3协议常用核心指令2.支持邮件的群发和转发3.使用Telnet,Outlook,Foxmail等客户端程序全部测试通过1.2.3 一般约束编程语言:使用标准C编程语言。运行环境:RHEL5(Redhat Enterprise L
3、inux 5/CentOS 5)1.3 项目要求1.3.1 项目要求用多文件,并编写Makefile来编译。1.3.2 SMTP/POP3服务器分别都要设计成为一个守护进程 守护进程是在后台运行不受终端控制的进程。1.3.3 使用Shell脚本来实现start,stop,restart 假定两个邮件服务程序的可执行文件为wpsmtpd、wppop3d,编写的Shell脚本分别为smtp.sh、pop3.sh。可以分别用./smtp.sh start、./pop3.sh start来启动wpsmtpd、wppop3d服务器。,用./smtp.sh stop、./pop3.sh stop停止,用.
4、/smtp.sh restart、./pop3.sh restart重启。停止服务器的时候,要注意删除各自的共享内存与信号量。1.3.4 服务程序要捕获以下信号并做相应处理SIGHUP 进行清理工作,共享内存与信号量SIGQUIT 进行清理工作,共享内存与信号量SIGCHLD 调用wait避免僵死进程SIGPIPE 忽略1.3.5 要求用配置文件来对项目的一些参数进行配置 服务器能接收的最大连接数,以及超时设置等1.3.6 客户端空闲处理如果服务器端在一定时间(这个时间可以通过配置文件配置)没有收到客户端的请求,服务器端要退出为该客户端服务的进程,以便腾出资源为其他更多的客户端服务。1.3.7
5、 要实现的SMTP/ESMTP命令列表命令类型命令功能说明SMTP(ESMTP)协议命令,一般命令的格式是:Command ParamHELO用户问候信息EHLO带验证的用户问候信息(ESMTP)AUTH ( LOGIN)带验证的用户登录(ESMTP),注意BASE64编码MAIL (FROM)指定发件人RCPT (TO)指定收件人(该命令可以重复多次出现)DATA指定要发送的邮件正文RSET重置状态QUIT客户端退出1.3.8 要实现的POP3命令列表POP3协议命令,一般命令的格式是:USER用户账号PASS用户密码STAT用户邮箱状态信息LIST用户邮箱信息列表RETR要获取的邮件DEL
6、E指定要删除的邮件重置待删除邮件列表NOOP测试与服务器的连接是否正常UIDL获取邮件的UIDLTOP获取邮件的头部信息备注1:SMTP正确交互过程:S:220 xxxC:HELO xxx250 xxxMAIL FROM: RCPT TO:ls(可以重复出现)354 xxx邮件头+邮件体(多行).(单独一行,邮件结束的标识,很重要!)250221 xx备注2:ESMTP正确交互过程:EHLO xxx250-Wepull Mail Server250-PIPELINING250-AUTH=LOGIN PLAIN250-AUTH LOGIN PLAIN250-SIZE 20480000250 8B
7、ITMIME AUTH LOGIN334 VXNlcm5hbWU6(Username)BASE64 加密后的用户名 334 UGFzc3dvcmQ6(Password) BASE64 加密后的密码 235 auth successfully (同上)备注3:POP3正确交互过程:+OK xxxUSER zsPASS 11+OK 2 101 42 6. (单独一行,邮件列表结束的标识,很重要!RETR 1+OK 4返回第1封邮件的正文(ABCD). (单独一行,邮件结束的标识,很重要!RETR 2+OK 6返回第2封邮件的正文(HELLO!DELE 1(-ERR command not implement)1.4 项目中可能用到的技术点:1.4.1 字符串相关处理1.4.2 文件IO操作1.4.3 多进程编程1.4.4 多线程编程1.4.5 共享内存1.4.6 基本套接字1.4.7 守护进程的编写1.4.8 捕获信号1.4.9 用select来实现超时1.4.10 实现start,stop,restart1.4.11 系统参数要求在配置文件中配置
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1