http://www.itpub.net/288917.html(原贴)
老板这想法不太对吧?斑竹们,高手们进来瞧瞧
公司业务有一个需求,希望客户可以在通过网站上传一些固定格式的数据文本资料,然后转入数据库中。
偶的想法是在后台加一个资料导入的功能。
偶们老板说不安全,一定要很复杂的弄个EMail接收。说要客户直接发邮件到固定邮箱,将文本文件作为附件,然后要服务器定时去收邮件,读取附件内容,导入数据库中,再发邮件通知用户。
你说一简单的东西,他弄这么复杂干什么?而且,要服务器定时收邮件,又要用到线程,增加服务器负担,现在服务器不过是一台配置较好的PC,他还想干啥呀?
各位JAVA高手对此有何看法?
让客户ftp的话,老板说对他们要求太高了,应该只要他们会发邮件就行。
他说在网站上让他们上传文件的话,对服务器不安全。
偶晕。
肥猫,你说的james是什么功能的?
我觉得偶们老板的想法太复杂了。哪有这样做的啊?晕倒。
-----------------------------------------------------------------------
使用email方式安全,而且当发生纠纷事件是查看一下email系统的日志就可以了。
产权明晰的。
-----------------------------------------------------------------------
quote:
--------------------------------------------------------------------------------
最初由 abiao 发布
这样的话,一旦你的邮件服务器受到攻击;或者自动读取程序出了问题;或者遇到恶意的垃圾邮件;你的业务系统怎么办?
--------------------------------------------------------------------------------
不使用通用的EMAIL服务器, 首先可以简单地通过使用特殊的EMAIL格式过滤掉垃圾邮件, 大幅度减少受到攻击的可能性, 其次象JAMES这样的系统, 可以不使用硬盘保存邮件直接对邮件做处理, 从而避免传送大量邮件, 破坏服务器文件系统的可能
-----------------------------------------------------------------------
用法上, 用JAMES开发和SERVLET开发差不多, 在JAMES里服务器端的应用程序被称为MAILET,
其主要的类是MAIL, 这相当于HTTPREQUEST
MAILET的主要方法是
public void service(Mail mail) throws javax.mail.MessageException{
}
这个方法和SERVLET中的getHttpRequest(偶记不太清了)相当, 当服务器受到EMAIL的时候, 就会根据设定选择适当的MAILET然后启动这个方法, 剩下的就要由你写代码了
从设计上看, 你要想清楚你的数据格式
比如说, 如果你要考虑信息的安全性的话, 就应该要求用户对数据进行加密
如果还要考虑服务器的安全性的话, 则要考虑在EMAIL的HEADER中加如识别信息(有些人容易把这类信息和文件内容混淆, 因而图省事把这部分信息加在文件头部, 这会造成在对文件解密时的安全漏洞)
把这些需求弄清楚了, 接下来就要考虑用户界面的问题, 比如说可以使用BROWSER自卑的发送EMAIL的功能直接弹出窗口由用户添加文件后, 自动发送, 或者向用户提供一些小工具帮助他们完成操作等,等
反正你也要用MAIL SERVER的呀, 用JAMES也不见得难到哪里去
要不你就的使用POP3或者是IMAP包, 从MAIL SERVER上取得MAIL以后用MIME类打开,就能处理附件了
-----------------------------------------------------------------------
SMTP服务器的安全性无论如何也是不能保证的,因为SMTP本身是不安全的,而安全扩展很多服务器由不支持。而WEB服务器还可以通过认证来保证安全性。
如果一定要做EMAIL的话,建议不要开放SMTP端口,只开放POP端口,并且使用扩展的安全性(基于摘要认证的),给你的客户分配用户名密码,然他们把E-mail直接发到你的服务器上。
-----------------------------------------------------------------------
quote:
--------------------------------------------------------------------------------
最初由 base 发布
送信是SMTP,收信是POP嘛,看信是IMAP,哈哈,JAMES没实现IMAP
--------------------------------------------------------------------------------
你这是从CLIENT上看滴, 实际上EMAIL是这样传送地
SMTP-INTERNET->SMTP(MAIL SERVER)->MAIL信箱(MAIL SERVER) ->POP/IMAP-INTERNET->CLIENT
-----------------------------------------------------------------------
恩, 总体上看要实现EMAIL和DB的连动, 大致是这样一个框架
1. SMTP(EMAIL CLIENT)--INTERNET--> (SMTP)EMAIL SERVER
2. JAVA程序监视或者监听 EMAIL SERVER
3. 启动JAVA处理程序
3.1 解析EMAIL
3.2 写入DB
在这个框架中, 如果需要考虑信息的安全保密问题的话, 最好在第一步就加入SSL协议变成
1. SMTP+SSL--INTERNET--> SMTP+SSL
不过, 偶想你还不了解用户方面的EMAIL服务器配置, 这样做是否可行还是一个问题, 这需要同用户协商, 了解用户需求(是否使用网络上免费的EMAIL PROVIDER, 这个也应该由用户决定)
作为一个候补方案, 可以使用你们公司自己的EMAIL服务器, 但是这样一来, 你们就要为用户长期提供服务, 在你们项目的合同中是否有这样的条款捏?
还有一个方案, 就是用JAMES做自己的EMAIL服务器, 这个嘛, 用户的网络是否允许, 还有JAMES是否支持SSL等等还需要调查
另外, 考虑到服务器自身的安全问题, 如果使用已有的EMAIL服务器的话, 则需要在监视EMAIL服务器的时候(也就是第二步)加过滤程序, 以免受到垃圾或者病毒邮件的干扰
2. JAVA程序监视或者监听 EMAIL SERVER, 过滤有效邮件
至于到底是监听(就是实时处理方式)还是监视(就是分时制, 比如说1小时检查一下文件夹) 要看你是否使用JAMES了, 使用JAMES时不需要在HD上保存文件, 所一可以采用监听方式, 如果不使用JAMES则要使用监视方式
3.启动方式, 如果是JAMES则可通过MAILET实现, 否则, 要做DAEMON程序, 定时检查信箱
4.EMAIL解析, 当然要用JAVA的EMAIL包咯
总之, 这个问题不仅仅是技术问题, 更重要的是要同用户共同协调
-----------------------------------------------------------------------
酱紫呀, 那偶得好好解释一下
EMAIL的功能由三部分组成
MTA-MAIL TRANSFER AGENT(介个是邮递员)
MDA-MAIL DELIVERY AGENT(公司前台的小MM )
MUA-MAIL USER AGENT(介个就是偶啦 )
偶发MAIL的时候, 偶要按照SMTP协议(就是邮递员协议), 把MAIL贴上邮票写好地址放到邮电局的信箱里(通过DNS找到MTA), 邮递员(MTA)看到偶的MAIL之后, 就把偶给鸭鸭的信放到鸭鸭的信箱里
MUA->INTERNET(SMTP)->MTA->MAIL BOX
鸭鸭(MUA)想看看自己有什么信件, 就打了个电话给前台的MM(通过POP/IMAP协议和MDA通信)那MM说, 猫猫给你写了封信, 然后就把偶的信交到了鸭鸭那里.
MAIL BOX ->MDA->INTERNET(POP/IMAP)->MUA
在这个系统中, MUA显然是用JAVA MAIL包做的处理程序
而MDA和MTA还没有决定
如果MTA就是JAMES的话, 就没有必要使用MDA乐, 同时POP和IMAP也就用不着了
如果MTA是一个外部的服务器的话, 处理程序就要使用POP和MDA通信了
如果要考虑安全问题的话, MTA/MDA的安全, MUA的安全都是要考虑到的