導航:首頁 > 凈水問答 > java垃圾郵件過濾系統

java垃圾郵件過濾系統

發布時間:2021-12-08 15:27:23

A. java如何發送匿名郵件

任何一個人都可以連接到SMTP伺服器發送郵件,SMTP伺服器大部分不檢查信息的真實性.你可以隨便寫你喜歡用的名字,
你也可能會收到來自[email protected]的郵件,請你去參加白宮前草坪上的聚會.
也就是說,發件人的名字是你自己寫進去的.你可以隨便寫.發件人的地址也是隨便寫的.所以你自己寫的郵件程序,就相當於匿名的.不過你可能發不出去,另外一邊的POP3伺服器可能會把你的郵件當成垃圾郵件,直接過慮掉.

B. 基於布隆過濾器的非法URL識別,有沒有能用Java

假如有1億個不重復的正整數(大致范圍已知),但是只有1G的內存可用,如何判斷該范圍內的某個數是否出現在這1億個數中?最常用的處理辦法是利用點陣圖,1*108/1024*1024*8=11.9,也只需要申請12M的內存。但是如果是1億個郵件地址,如何確定某個郵件地址是否在這1億個地址中?這個時候可能大家想到的最常用的辦法就是利用Hash表了,但是大家可以細想一下,如果利用Hash表來處理,必須開辟空間去存儲這1億個郵件地址,因為在Hash表中不可能避免的會發生碰撞,假設一個郵件地址只佔8個位元組,為了保證Hash表的碰撞率,所以需要控制Hash表的裝填因子在0.5左右,那麼至少需要2*8*108/1024*1024*1024=1.5G的內存空間,這種情況下利用Hash表是無法處理的。這個時候要用到另外一種數據結構-布隆過濾器(Bloom Filter),它是由Burton Howard Bloom在1970年提出的,它結合了點陣圖和Hash表兩者的優點,點陣圖的優點是節省空間,但是只能處理整型值一類的問題,無法處理字元串一類的問題,而Hash表卻恰巧解決了點陣圖無法解決的問題,然而Hash太浪費空間。針對這個問題,布隆提出了一種基於二進制向量和一系列隨機函數的數據結構-布隆過濾器。它的空間利用率和時間效率是很多演算法無法企及的,但是它也有一些缺點,就是會有一定的誤判率並且不支持刪除操作。

布隆過濾器的原理
1
布隆過濾器需要的是一個位數組(這個和點陣圖有點類似)和k個映射函數(和Hash表類似),在初始狀態時,對於長度為m的位數組array,它的所有位都被置為0

2
對於有n個元素的集合S={s1,s2......sn},通過k個映射函數{f1,f2,......fk},將集合S中的每個元素sj(1<=j<=n)映射為k個值{g1,g2......gk},然後再將位數組array中相對應的array[g1],array[g2]......array[gk]置為1:

3
如果要查找某個元素item是否在S中,則通過映射函數{f1,f2.....fk}得到k個值{g1,g2.....gk},然後再判斷array[g1],array[g2]......array[gk]是否都為1,若全為1,則item在S中,否則item不在S中。這個就是布隆過濾器的實現原理。
當然有讀者可能會問:即使array[g1],array[g2]......array[gk]都為1,能代表item一定在集合S中嗎?不一定,因為有這個可能:就是集合中的若干個元素通過映射之後得到的數值恰巧包括g1,g2,.....gk,那麼這種情況下可能會造成誤判,但是這個概率很小,一般在萬分之一以下。
很顯然,布隆過濾器的誤判率和這k個映射函數的設計有關,到目前為止,有很多人設計出了很多高效實用的hash函數。並且可以證明布隆過濾器的誤判率和位數組的大小以及映射函數的個數有關。假設誤判率為p,位數組大小為m,集合數據個數為n,映射函數個數為k,它們之間的關系如下:
p=2-(m/n)*ln2 可得 m=(-n*lnp)/(ln2)2=-2*n*lnp=2*n*ln(1/p)
k=(m/n)*ln2=0.7*(m/n)
可以驗證若p=0.1,(m/n)=9.6,即存儲每個元素需要9.6bit位,此時k=0.7*(m/n)=6.72,即存儲每個元素需要9.6個bit位,其中有6.72個bit位被置為1了,因此需要7個映射函數。從這里可以看出布隆過濾器的優越性了,比如上面例子中的,存儲一個郵件地址,只需要10個bit位,而用hash表存儲需要8*8=64個bit位。
一般情況下,p和n由用戶設定,然後根據p和n的值設計位數組的大小和所需的映射函數的個數,再根據實際情況來設計映射函數。
尤其要注意的是,布隆過濾器是不允許刪除元素的,因為若刪除一個元素,可能會發生漏判的情況。不過有一種布隆過濾器的變體Counter Bloom Filter,可以支持刪除元素,感興趣的讀者可以查閱相關文獻資料。
END
布隆過濾器的應用
布隆過濾器在很多場合能發揮很好的效果,比如:網頁URL的去重,垃圾郵件的判別,集合重復元素的判別,查詢加速(比如基於key-value的存儲系統)等,下面舉幾個例子:
1.有兩個URL集合A,B,每個集合中大約有1億個URL,每個URL佔64位元組,有1G的內存,如何找出兩個集合中重復的URL。
很顯然,直接利用Hash表會超出內存限制的范圍。這里給出兩種思路:
第一種:如果不允許一定的錯誤率的話,只有用分治的思想去解決,將A,B兩個集合中的URL分別存到若干個文件中{f1,f2...fk}和{g1,g2....gk}中,然後取f1和g1的內容讀入內存,將f1的內容存儲到hash_map當中,然後再取g1中的url,若有相同的url,則寫入到文件中,然後直到g1的內容讀取完畢,再取g2...gk。然後再取f2的內容讀入內存。。。依次類推,知道找出所有的重復url。
第二種:如果允許一定錯誤率的話,則可以用布隆過濾器的思想。
2.在進行網頁爬蟲時,其中有一個很重要的過程是重復URL的判別,如果將所有的url存入到資料庫中,當資料庫中URL的數量很多時,在判重時會造成效率低下,此時常見的一種做法就是利用布隆過濾器,還有一種方法是利用berkeley db來存儲url,Berkeley db是一種基於key-value存儲的非關系資料庫引擎,能夠大大提高url判重的效率。
布隆過濾器的簡易版本實現:
#include<iostream>
#include<bitset>
#include<string>
#define MAX 2<<24
using namespace std;

bitset<MAX> bloomSet; //簡化了由n和p生成m的過程

int seeds[7]={3, 7, 11, 13, 31, 37, 61}; //使用7個hash函數

int getHashValue(string str,int n) //計算Hash值
{
int result=0;
int i;
for(i=0;i<str.size();i++)
{
result=seeds[n]*result+(int)str[i];
if(result > 2<<24)
result%=2<<24;
}
return result;
}

bool isInBloomSet(string str) //判斷是否在布隆過濾器中
{
int i;
for(i=0;i<7;i++)
{
int hash=getHashValue(str,i);
if(bloomSet[hash]==0)
return false;
}
return true;
}

void addToBloomSet(string str) //添加元素到布隆過濾器
{
int i;
for(i=0;i<7;i++)
{
int hash=getHashValue(str,i);
bloomSet.set(hash,1);
}
}

void initBloomSet() //初始化布隆過濾器
{
addToBloomSet("http://www..com");
addToBloomSet("http://www.cnblogs.com");
addToBloomSet("http://www.google.com");
}

int main(int argc, char *argv[])
{

int n;
initBloomSet();
while(scanf("%d",&n)==1)
{
string str;
while(n--)
{
cin>>str;
if(isInBloomSet(str))
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}

}
return 0;
}

C. java如何獲取郵箱中的發件箱,草稿箱,垃圾箱內容。

你想獲取那個郵箱中的這些信息?這個是需要郵箱方進行配合的。
比如163郵箱,他們會提供一些公開介面,你可以調用這些介面來獲取你想要的郵件信息。
想要同步也很簡單,只要間隔很短的時間進行一次獲取就可以了。
至於你要做其他處理,那就要看郵箱開放的介面是啥樣的了。
如果郵箱不開放這么介面,那麼你是獲取不到郵件信息的。

D. JAVA發送郵件被當成垃圾郵件,怎麼辦

你這不是黑白名單的問題 明顯是2032程序本身333有問807題。

E. java mail qq垃圾郵件

各自的郵箱都有不同的判斷垃圾郵件的機制。
這個無法一句話說得清楚的,而且,一般這些規則他們都不公開的,只有靠自己的經驗去摸索。一般不涉及太多廣告類的關鍵詞就沒事。
研究下你發送的郵件有什麼問題?是不是涉及一些關鍵詞了?

F. 如何用 Java 利用貝葉斯演算法實現垃圾郵件過濾

這個問題很有挑戰性, 做看其他大佬回答

G. 垃圾郵件的主要種類

一、站點宣傳
許多網友都建立了自己的個人站點,在吸引更多的網民訪問的過程中,有些人不在自己站點的內容上下功夫,而是東抄一點、西拉一點,還想讓站點上的計數器嘩啦嘩啦地漲,於是就走了偏門,給一大堆不管他們認不認識的網民狂發E-mail(有人半個小時內竟向上千個信箱連續發信多次!)。此類垃圾信製造者真是越來越多。如果說這些人的舉動還情有可原(至少他們的目的不是為了牟利)。還有一些靠賣虛擬主機發財的公司就顯得很惡劣了,他們已經赫然將為客戶站點提供E-mail宣傳作為附加服務列在了大大小小的廣告上。這幫專業的垃圾信製造者最可恨,因為他們一般擁有自己的發信伺服器,叫你有苦無處訴。
二、垃圾郵件刪除病毒謠言
真正的E-mail病毒(不是指那些附件中的普通病毒,這些病毒只要不去運行它們的宿主文件,就不會對你的機器造成任何傷害)有沒有?是有的。例如前一陣子利用OutLook堆棧溢出錯誤執行在信件中加入的惡意Java代碼的病毒,以及一些只攻擊Unix用戶的病毒,例如在用戶讀信時會造成系統重啟的E-mail病毒等。真正的E-mail病毒在國內幾乎見不到,而且它們其實並不可怕,一般用戶給軟體打個補丁,或將一些默認設置改一改,它們就不能興風作浪了。令人不解的是,國內流行的所謂「E-mail病毒」卻都是一些假病毒。一些人借著真病毒的「威名」,狐假虎威,造一些「病毒」 謠言,說什麼「當你看到這封E-mail時,你的機器已經感染上了XX非常厲害的病毒,某年某月某日就會暴發……」,接著還有一些人在收到這類信後,不知是出於好心還是惡意,很喜歡將這些「病毒」謠言再轉發給他人,然後加上幾句「我不知道這是不是真的」之類的話,於是謠言傳多了就成了「真理」,許多人真的相信自己的機器被某個可怕的E-mail病毒感染了。這種幾句唬人的話就宣布一個「病毒」誕生的惡作劇,實在是讓人又好氣又好笑。
三、網路雜志
應該承認,訂上一兩份好的網路雜志的確能給人帶來不少有用的信息。但是,某些網路雜志的宣傳和發行方式實在讓人不敢恭維。我就莫名其妙的收到了XX評論寄來的長達幾十KB的E-mail (該雜志屬於某ISP&ICP,我曾向他們的一個站點申請過FTP上傳帳號,也許因為這,被他們獲得了我的信箱名稱),這個雜志的內容倒還不是太糟,裡面的「懶漢菜譜」我也喜歡看,但就這么不請自來,實在讓我倒了胃口。還有南方那個有名的站點,如果你曾在它的站點申請過免費服務(每次它都不會忘向你要一個E-mail地址),它就會隔三岔五地塞幾封它的郵件列表給你,名為試讀,但這種無休無止的試讀實在太強迫人了吧!「正規軍」如此,一些個人辦的網路雜志,更是亂來。不用預訂,就會源源不斷地發信過來,即使僥幸通過與它的主人進行反復交涉,停了一段時間,說不定什麼時候此人又想進行「廣泛宣傳」了,你的信箱里又會塞滿了他的大作。
四、連環郵件
時代在發展,傳統的以普通郵件為主要傳播手段的「金鎖鏈」之類的連環信也很快在國際互聯網上出現了它們的翻版。還是那些想發財又沒什麼真本領的傢伙,繼續編造一些像什麼「只要你向信內所附的五個地址每人寄上X元,你就會在X天內收到XXX元」之類的謊言,還想著以此來謀取不義之財。當然和以前一樣,他們也不忘在E-mail中加一點時代花絮來迷惑他人,什麼「我是一個中年下崗女工,自從加入了這個連環信後,現在每月都能收到XXX元,高興之餘,要與大家分享」之類。因為用E-mail發連環信又方便又省錢,垃圾信製造者真是樂此不疲,他們實在也太小瞧了廣大網民的智力了。

H. 最近做畢業設計,想求一個java開發的郵件收發系統

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
Object o_cid=request.getParameter("cid");
Object o_sn=request.getParameter("sn");
if(null==o_cid||null==o_sn)return mapping.findForward("404");
Long cid=Long.valueOf(o_cid.toString());
String sn=String.valueOf(o_sn);
CompanyPswManage cpm=companyPswManageService.findById(cid);
if(null==cpm||!sn.equals(cpm.getSn()))return mapping.findForward("404");
request.getSession().setAttribute("cpm",cpm);

// ���ȡ���ͼƬ
String URL=null;
List<CompanyAd> listAD = new ArrayList<CompanyAd>();
// A��
listAD = companyAdService.findCompanyAdByType("A", 1);
if(listAD!=null&&listAD.size()>0){
URL=listAD.get(0).getUrl();
request.getSession().setAttribute("A_url", URL);
request.getSession().setAttribute("A_cid", listAD.get(0).getCid());
}else{
request.getSession().setAttribute("A_url", "");
request.getSession().setAttribute("A_cid", 0);
}
// B��
listAD = companyAdService.findCompanyAdByType("B", 1);
if(listAD!=null&&listAD.size()>0){
URL=listAD.get(0).getUrl();
request.getSession().setAttribute("B_url", URL);
request.getSession().setAttribute("B_cid", listAD.get(0).getCid());
}else{
request.getSession().setAttribute("B_url", "");
request.getSession().setAttribute("B_cid", 0);
}
// C��(���ȡ6��)
listAD = companyAdService.findCompanyAdByType("C", 6);
request.getSession().setAttribute("C_list",listAD);
// D��(ȡ8��)
listAD = companyAdService.findCompanyAdByType("D", 8);
request.getSession().setAttribute("D_list", listAD);
List<CompanyProfile> cplist = new ArrayList<CompanyProfile>();
if(listAD!=null&&listAD.size()>0){
//ȡ��˾
for(int i=0;i<listAD.size();i++){
Long ccid = listAD.get(i).getCid();
CompanyProfile cp = companyProfileService.findById(ccid);
cplist.add(cp);
}
request.getSession().setAttribute("cplist",cplist);
}
// E��
listAD = companyAdService.findCompanyAdByType("E", 1);
request.getSession().setAttribute("E_list", listAD);
return mapping.findForward("pswRetakeConfirm");
}
public void setCompanyPswManageService(
ICompanyPswManageService companyPswManageService) {
this.companyPswManageService = companyPswManageService;
}
}

public class CompanyPswManageService implements ICompanyPswManageService {
private ICompanyPswManageDAO companyPswManageDao;

public void setCompanyPswManageDao(ICompanyPswManageDAO companyPswManageDao) {
this.companyPswManageDao = companyPswManageDao;
}

public boolean save(CompanyPswManage transientInstance){
return companyPswManageDao.save(transientInstance);
}

public boolean delete(CompanyPswManage persistentInstance){
return companyPswManageDao.delete(persistentInstance);
}

public CompanyPswManage findById(java.lang.Long id){
return companyPswManageDao.findById(id);
}

}

I. Apache軟體基金會的項目

HTTP Server: 可以在UNIX,MS-Windows,Macintosh和Netware操作系統下運行的HTTP伺服器的項目
Ant: 基於Java語言的構建工具,類似於C語言的Make工具。
AXIS2:Web服務(SOAP, WSDL)的處理器,基於AXIS1.X重新構建。
APR:(也就是:Apache Portable Runtime)C語言實現的便攜運行庫的管理工具。
Beehive:為了簡單構建J2EE應用的對象模型。
Cocoon:一個基於組件技術和XML和Web應用開發框架。
DB:關於資料庫管理系統的幾個開源項目集合
Derby:一個純JAVA的資料庫管理系統
Drill :將有助於Hadoop用戶實現更快查詢海量數據集的目的
Directory:基於JAVA語言的目錄伺服器,支持LDAP等目錄訪問協議。
Excalibur:Apache Avalon項目的前身。
Forrest:一個發布系統框架的項目。
Geronimo:J2EE伺服器
Gump:整合管理器
Hadoop:並行運算編程工具和分布式文件系統。
Harmony:一個兼容JAVA標準的JAVA語言的開源實現。
HiveMind:一個服務(Services)與配置(configuration)的微內核
iBATIS:一個基於JAVA語言的數據持久化框架
Incubator:為了幫助那些希望獲取Apache軟體基金會支持的計劃進入Apache軟體基金會的審核項目
Jackrabbit:內容倉庫API標准(Content Repository for Java Technology API,即JSR-170)的一個開源實現項目。
Jakarta: 在ASF中,基於Java語言的一組開源子項目的集合,現在包含的子項目有:BCEL,BSF,Cactus,Commons,ECS,HttpComponents,JCS,JMeter,ORO,Regexp,Slide,Taglibs,Turbine,Velocity
James:JAVA語言實現的郵件新聞伺服器
Labs:為基金會成員提供最新變更的思維的計劃
Lenya:內容管理系統
Logging: 一個開發可以在C++、Java、Perl、PHP、.NET計算機語言下運行的通用日誌工具項目集合。
Lucene: 高性能的,基於Java語言的全文檢索項目。
Maven:項目集成構建工具
MyFaces: 一個JavaServer Faces(JSF)的實現框架。
mod_perl:為Apache伺服器提供Perl語言整合的項目
POI:提供API以供JAVA程式對Microsoft Office格式檔案的讀/寫。
Portals:與門戶(Portal)技術相關的幾個項目集合
Santuario:發展XML安全性方面的項目
Shale:在Struts之後,發展起來基於JAVA語言Web應用框架
SpamAssassin:垃圾郵件過濾器
Struts: 一個基於J2EE平台的MVC設計模式的Web應用框架
Subversion: 一個軟體版本管理系統。
Tapestry: 另一個J2EE平台的、能產生動態、高性能Web應用的框架。
TCL:為Apache伺服器提供Tcl語言整合的項目
Tomcat: 一個運行Java Servlet與JavaServer Pages(JSP)的容器。
Web Services:與Web Services技術相關的項目集合
Xalan:XML轉換處理器
Xerces: 一組可以在Java,C++,Perl計算機語言下使用的XML解析器項目。
Apache XML:XML解決方案
XMLBeans:基於JAVA語言XML對象綁定工具
XML Graphics:發展XML與圖形進行轉換的計劃項目

J. 為什麼我的javamail程序發送的都是垃圾郵件

你的發信郵件是什麼呢?

如果平時發了很多垃圾郵件. 就會被其他服務商拉入到黑名單的.

比如你可以看到許多郵箱有垃圾郵件舉報功能.

閱讀全文

與java垃圾郵件過濾系統相關的資料

熱點內容
什麼品牌凈化器除甲醛效果最好 瀏覽:901
樹脂三乙醇胺硬度 瀏覽:270
燈達樹脂砂輪 瀏覽:296
泰克馬污水提升器無錫 瀏覽:926
水性熱塑性樹脂耐化性 瀏覽:779
史密斯凈化器怎麼重置濾芯 瀏覽:211
濟源年產18萬噸污水處理劑 瀏覽:328
廁所飲水機漏水什麼情況 瀏覽:127
反滲透凈水器如何接燒水壺 瀏覽:262
飲水機為什麼不過濾水 瀏覽:416
海曙污水管道養護單位 瀏覽:431
霧化吸入加入蒸餾水 瀏覽:1
廈門超標排放污水量處罰辦法 瀏覽:782
伊濱區污水處理廠地址 瀏覽:661
純水機進水電磁閥為什麼24v不到位 瀏覽:790
惠而浦直飲凈水機多少錢 瀏覽:40
鍍鉻後的廢水處理最方便 瀏覽:851
既熱式飲水機怎麼裝前置過濾器 瀏覽:585
皮革行業含鹼廢水 瀏覽:288
魚缸雙側過濾連接步驟 瀏覽:735