java垃圾郵件過濾
A. 求貝葉斯演算法基於英文郵件文本分類的java代碼
以前做過,這個直接谷歌一下就能找到不少資料。提醒你一點,做垃圾過濾不用很多attribute。
B. JAVA發送郵件被當成垃圾郵件,怎麼辦
你這不是黑白名單的問題 明顯是2032程序本身333有問807題。
C. 為什麼我的javamail程序發送的都是垃圾郵件
你的發信郵件是什麼呢?
如果平時發了很多垃圾郵件. 就會被其他服務商拉入到黑名單的.
比如你可以看到許多郵箱有垃圾郵件舉報功能.
D. 用javaMail發郵件時出現下面的錯誤是怎麼回事 SMTPSendFailedException: 554 DT:SPM 126 smtp7
554 DT 表示163的伺服器端認為你發出的郵件為垃圾郵件,並不是你的代碼出了問題。如果可以的話,建議用一些不是很大眾化的郵箱地址去實現Java後台發郵件。
E. 有木有JAVA關於郵件過濾方面的書
郵件過濾系統的設計與實現 王博 【摘要】: 隨著電子郵件的廣泛應用,各種垃圾、病毒郵件入侵郵件系統,嚴重影響郵件系統的正常使用。目前更多過濾系統是通過採用設置IP策略、郵件標題查找、MIME長度限制或具有一定智能查找的演算法等方案來在單機上實現。本方案主要採用設計垃圾、病毒郵件收集中心,搜集來自不同客戶端的配製策略,收集中心對數據進行綜合評定,根據處理結果決定是否通知郵件伺服器,如果通知郵件伺服器,伺服器更新資料庫,此方案使郵件伺服器及時的發現垃圾、病毒郵件,節省了網路帶寬並提高了過濾准確效率,也節省了寶貴的系統資源。 在郵件過濾系統設計中,利用了JAVAMAIL軟體包的開發技術,涉及基於郵件附件大小、垃圾詞語、垃圾郵件產生源地址及病毒過濾等方面,縮短了開發周期。同時,山於JAVAMAIL是JAVA語言的一個子集,自然,在界面開發中用了JAVA開發工具。並且,由於垃圾、病毒郵件是在動態變化的,如何高效准確快速的進行判斷是軟體設計中要考慮的一個非常重要的因素。對此,本系統設計了採用基於CORBA技術的收集中心,它的主要工作是收集來自不同客戶端的郵件數據,對從不同客戶端採集來的數據進行分類整理、綜合測評,對不同等級的可疑詞語、短語、句子或者附件進行評價,將得到的結果在本地資料庫保存,並及時通知郵件伺服器對數據進行更新。 郵件過濾系統的設計離不開對傳統郵件系統的深入研究,本文也詳細剖析了郵件系統從高層到底層的實現過程,包括其中涉及到的不同層次的協議、服務與介面等。同時,在實現過程中也用到了一些郵件協議,比如:SMTP協議、POP協議和IMAP協議等。並且,在過濾過程中需要對郵件格式進行處理,這涉及到MIME,如何按照一定的MIME格式對郵件內容進行提取,也是郵件過濾的一個很重要的方面。同時,在對郵件附件過濾過程中,需要進行很多相關的提取處理,在用JAVAMAIL開發過程中,這也是很重要的一個方面。 在對附件處理過程中,需要進行掃描、查毒處理,查毒可以採用多種方式。本設計主要採用按特徵值進行查毒的方式,該方法快速,實現簡單,但是在對付一些變種病毒郵件上,由於該方法自適應能力差,所以有一定的限制。同時,病毒特徵碼資料庫也要能進行動態的更新,以求能實時的進行郵件掃描。 【關鍵詞】: 過濾 協議 垃圾郵件 病毒 【學位授予單位】: 山東理工大學 【學位級別】: 碩士 【學位授予年份】: 2006 【分類號】: TP393.098 【DOI】: CNKI:CDMD:2.2006.100637 【目錄】: 第一章 緒論8-17 1.1 垃圾郵件的來源與危害8 1.2 垃圾郵件的特點與過濾垃圾郵件的困難性8 1.3 病毒郵件的特點與危害8-9 1.4 郵件過濾的必要性9-10 1.5 常見的郵件過濾器10-15 1.5.1 MTA過濾器11-13 1.5.2 MDA過濾器13 1.5.3 MUA過濾器13-15 1.6 郵件過濾器的研究現狀15-17 第二章 電子郵件系統17-27 2.1 郵件系統綜述17-19 2.1.1 電子郵件工作原理概述17-18 2.1.2 電子郵件的消息格式18-19 2.2 電子郵件的發送與接收19-22 2.2.1 MUA發送郵件20 2.2.2 通過MTA傳輸郵件20-21 2.2.3 MDA傳遞郵件21 2.2.4 MRA獲取郵件21 2.2.5 由MUA獲取郵件21-22 2.3 郵件傳輸涉及的協議、規則與服務22-27 2.3.1 SMTP協議22 2.3.2 POP與IMAP4協議22-23 2.3.3 DNS伺服器在郵件系統中的作用23 2.3.4 MIME—多用途網際網路郵件擴展23-27 第三章 郵件過濾系統的總體設計27-55 3.1 郵件系統的設計與實現28-40 3.1.1 郵件客戶端運行界面28-32 3.1.2 郵件服務端運行界面32-35 3.1.3 郵件客戶端設計35-37 3.1.4 郵件伺服器設計37-40 3.2 郵件過濾系統的設計與實現40-52 3.2.1 對郵件主題包含一定關鍵詞的限制40 3.2.2 對信件來源地進行限制40-41 3.2.3 對郵件信頭欄位大小的限制41 3.2.4 對郵件全文位元組數的限制41-42 3.2.5 對郵件附件名的限制42 3.2.6 對郵件附件大小的限制42-43 3.2.7 根據MIME Content-Type和Content-Disposition欄位里的文件類型過濾43 3.2.8 對郵件附件內容過濾43-52 3.2.8.1 base64編碼與解碼44 3.2.8.2 JAVA模式匹配44-45 3.2.8.3 郵件病毒掃描45-52 3.3 收集中心的設計與實現52-55 3.3.1 定義IDL52-53 3.3.2 將IDL編譯成Java介面以實現該介面53-54 3.3.3 定義實現此介面的類54 3.3.4 收集中心的實現54-55 第四章 系統設計中的關鍵技術55-61 4.1 JAVAMAIL技術55-58 4.1.1 會話類(session)55 4.1.2 消息類(MimeMessage)55-56 4.1.3 地址類56-57 4.1.4 身份驗證類57 4.1.5 傳輸類57 4.1.6 存儲類和文件夾類57-58 4.2 CORBA技術58-61 4.2.1 ORB58-59 4.2.2 存根與框架59 4.2.3 IDL59-60 4.2.4 命名服務60 4.2.5 JAVA中引入的CORBA包60-61 第五章 郵件過濾性能評價61-63 5.1 實驗結果61 5.2 實驗結果分析61-63 第六章 總結與展望63-64 6.1 工作總結63 6.2 展望63-64 致謝64-65 參考文獻65-68 附錄一 開發環境68-69 附錄二 部分源代碼69-90 作者在讀碩士期間發表的論文90 這本書你去書店看看有木有
採納哦
F. java mail qq垃圾郵件
各自的郵箱都有不同的判斷垃圾郵件的機制。
這個無法一句話說得清楚的,而且,一般這些規則他們都不公開的,只有靠自己的經驗去摸索。一般不涉及太多廣告類的關鍵詞就沒事。
研究下你發送的郵件有什麼問題?是不是涉及一些關鍵詞了?
G. 怎麼讓帶鏈接的郵件不被outlook認為是垃圾郵件
1、去掉超鏈接的下劃線
2、outlook---工具----信任中心---自己設置
3、還有就你你那個鏈接本身有安全隱患,有惡意插件或者額外鏈接
H. java如何發送匿名郵件
任何一個人都可以連接到SMTP伺服器發送郵件,SMTP伺服器大部分不檢查信息的真實性.你可以隨便寫你喜歡用的名字,
你也可能會收到來自[email protected]的郵件,請你去參加白宮前草坪上的聚會.
也就是說,發件人的名字是你自己寫進去的.你可以隨便寫.發件人的地址也是隨便寫的.所以你自己寫的郵件程序,就相當於匿名的.不過你可能發不出去,另外一邊的POP3伺服器可能會把你的郵件當成垃圾郵件,直接過慮掉.
I. 垃圾郵件的主要種類
一、站點宣傳
許多網友都建立了自己的個人站點,在吸引更多的網民訪問的過程中,有些人不在自己站點的內容上下功夫,而是東抄一點、西拉一點,還想讓站點上的計數器嘩啦嘩啦地漲,於是就走了偏門,給一大堆不管他們認不認識的網民狂發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發連環信又方便又省錢,垃圾信製造者真是樂此不疲,他們實在也太小瞧了廣大網民的智力了。
J. 基於布隆過濾器的非法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;
}