1. 程式人生 > >怎麼防止郵件被判為垃圾郵件?【郵件群發的技巧點滴】

怎麼防止郵件被判為垃圾郵件?【郵件群發的技巧點滴】

一、前言 

     電子郵件作為一種不可多得的網際網路通訊手段日益發展的同時,反垃圾郵件技術也以魔高一尺道高一丈的勢頭前進。郵件營銷、以及以郵件訂閱為生計的企業越來越吃力不討好,他們的郵件動轍被郵件運營商認為是垃圾郵件而被拒於門外,尤其是那些由系統自動群發的郵件。本文的作者曾經在兩個大型郵件運營商從事過多年的反垃圾及互通工作,發現其中的郵件被誤過濾的根本原因有二,一是傳送技術不規範,二是缺乏有效的溝通反饋,導致好人當壞人辦。 因此本文主要從技術和溝通兩方面闡述合理迴避郵件過濾的種種技巧。需要明確一點的是,本文教授的是如何避免正常郵件被誤判為垃圾郵件,並非教授如何發垃圾郵件,想做點壞事的朋友,你還是回火星吧,地球是很危險的。

二、搭建你的郵件系統

    搭建起郵件伺服器,你需要郵件系統的基本知識,SMTP協議規範,MIME編碼規範,MX記錄這些基本的東西這裡不重提,需要補習的請參考相應的RFC文件。

(一) IP地址選擇

    選擇放置郵件伺服器的IDC,更準確地說是所在的IP段,應選擇處於完全靜態C類IP段之內,最好B類IP段也是靜態的。注意有時電信運營商分配的單個所謂靜態IP,可能處於一段C類動態IP段(如ADSL)之內,這時候你的IP就很容易被認為是動態IP,要知道,動態IP在郵件運營商那裡是不受歡迎的。另外要檢查IP是否被列入國際黑名單(RBL),像MAPS這類RBL經常將國內的整個B段列入黑名單的。這部分後面解釋RBL的時候再說明。

(二) 郵件傳送軟體選擇

    使用一個權威的第三方傳送軟體,可以免去你很多煩惱。POSTFIX、QMAIL、FOXMAIL、AIMC、COREMAIL等在編碼規範、SMTP會話規範方面都有著可靠的經驗,基本不會出現協議級的低等錯誤。如果你選擇自主開發,那就要好好補習RFC文件了。 
如果你的系統有提供給個人使用者自定製內容發郵件的功能,如邀請信,賀卡等,你還需要安裝一套基本的反垃圾軟體,作為一個自律的傳送方,這很有必要。

三、為IP建立DNS記錄

    為什麼要為IP做DNS記錄?就是要告訴你的接收方,我是合法的。沒辦法,壞人當道的年代,為免錯殺,好人得在身上掛個牌子,寫著“我是好人”。 
    下面假設郵件伺服器有兩臺:202.100.100.1    202.100.100.2, 郵箱域名是“@abc.com” 

(一) A記錄

主機名

記錄型別

IP

server1.abc.com

A

202.100.100.1

server2.abc.com

A

202.100.100.2

    其中server1.abc.com是在SMTP會話時,向對方伺服器傳送HELO命令後帶的主機名引數。如“HELO server1.abc.com”。該A記錄通常在提供abc.com域名的運營商處可以申請。

    記錄生效後,通過nslookup命令查詢應該有如下結果,以QQ郵箱為例 

(二) PTR記錄

IP

記錄型別

主機名

202.100.100.1

PTR

server1.abc.com

202.100.100.2

PTR

server2.abc.com

    如你所見,PTR記錄其實是A記錄的反向,A記錄將域名解釋為IP,PTR記錄將IP解釋為域名。通常在分配IP地址的電信運營商處可以申請。

    記錄生效後,通過nslookup命令查詢應該有如下結果,以QQ郵箱為例 

(三)TXT記錄

               域名

記錄型別

IP

abc.com

TXT

202.100.100.1

abc.com

TXT

202.100.100.2

    如果你用上了整個C段的IP,像下面這樣做就省事多了(注意:A記錄和PTR記錄可不能偷這個懶,還是老老實實一個一個IP做吧)。

域名

記錄型別

IP

abc.com

TXT

202.100.100.0/24

    TXT記錄用於宣告本郵箱域名的真正伺服器IP,同樣在提供abc.com域名的運營商處可以申請。

    記錄生效後,通過nslookup命令查詢應該有如下結果,以QQ郵箱為例

    A記錄與PTR記錄互相偶合在一起,表明你的IP地址是靜態的,郵件伺服器是固定的。TXT記錄能幫助接收方排除仿冒你的域名的來源郵件,從而使你發出的郵件更加可信。反垃圾和人一樣,一切拒絕都是從不信任開始,而一切不信任都是從不瞭解開始。主動告訴對方你是好人,絕對有百利而無一害。

四、聯絡大型郵件運營商

    到此為止,你已經完成了“我是好人”這個牌子了,但有些人就是不愛主動去看別人身上的牌子的,甭管為什麼,互通領域暫時還是接收方市場,誰叫我們是傳送方呢,就低聲下氣地去打個招呼吧。很多時候我們的郵件主要是發向幾個大的域名,他們擁有佔全國以至全球為數最多的個人使用者,國內的如網易、新浪、搜狐、騰訊,國外的如雅虎、Google、Hotmail等等。主動聯絡他們,告訴他們你的公司名稱、業務範圍、郵件伺服器IP、郵件型別、傳送物件、流量等資訊,別忘了強調你掛著的好人牌子。他們大部分會有IP白名單系統,讓你的郵件在較寬鬆的反垃圾策略下投遞(注意是較寬鬆不是全無限制)。進一步申請加入他們的白名單系統。 

    另外,工信部下屬機構有一箇中國網際網路協會反垃圾郵件中心,近年來他們充當各個入口網站之間的橋樑,共享一個IP黑白名單平臺,定期釋出國內外的IP黑白名單。你應該已經看得出來,他們也是你得聯絡的物件了,那就趕快吧。

五、開始發郵件了

    忙了一通,關係拉了一籮,一切就緒,總算可以開始發郵件了,每天給多少人發?每人發多少?發些什麼內容?也許你一興奮就忘了這些問題了,都已經是好人了,還需要省著發嗎?對不起,是的,否則壞人也寫個“我是好人”了。以下是你需要儘可能遵守的原則,沒辦法,做好人就是這麼辛苦,除非你不介意被反垃圾。

(一) 郵件格式

  1. 整齊簡潔的排版,專業的語言,一句話,不要太山寨了。
  2. 儘可能縮小郵件體積,夾大附件的郵件通常不太受歡迎
  3. 在顯眼的地方標有退訂入口,會為你的誠意增添幾分。 

(二) 郵件內容

  1. 註冊信、密保信等重要郵件請在主題標明型別,運營商一般都不會過濾。
     
  2. 純廣告的郵件最好少發,這是最不受運營商歡迎的,大多數情況下,你的會員並不需要牛皮蘚廣告,倘若真要發的,請放慢速度,細水長流。主題別忘了加上“(AD)” 

  3. 訂閱資訊郵件也是一般不會被過濾的,為區別純廣告,原文最好有使用者的個性化稱呼。但不要鑽空子,在其中狂做廣告。掛羊頭賣狗肉的事情只會降低你的誠信度。

  4. 近年來很多SNS網站興起,通過群發好友邀請信迅速壯大,說白了,就是走不勞而獲的捷徑,郵件運營商是不會把積累多年的使用者關係鏈讓你隨隨便便挖空的,這類郵件,被拒於門外只有認命了。

(三) 傳送規範

  1. 由系統群發的郵件請使用相同的發件人,[email protected]就比較好辨認。同時該發件人地址應該能收信,避免接收方退信時失敗而造成對方郵件佇列堆積。
  2. 如果是自動中轉郵件,即使原文中發件人使用原始發信方,[email protected],但SMTP會話中的mail from指令也應該使用本域發件人[email protected],否則容易被認為是冒用163.com的域名傳送。
  3. 註冊信、密保信等重要郵件最好與純廣告、訂閱信分開不同的IP傳送,一但發生廣告信IP被封,也不會影響正常會員的註冊功能。

六、打造高信譽度口碑 
    
    加入白名單後,並非就意味著一勞永逸,你需要維持你的IP有高的信譽度、好的口碑,才是長期發展之道,除非你不介意三天兩頭打電話去運營商處受人臉色。

(一) 更新有效收件人地址

    經常滾動更新你的會員列表,去掉已經登出的使用者或已經退訂的會員。做得更細緻一點,通過在郵件中放置一些URL,把長期閱讀點選率偏低的會員去掉。誠然,這可能會讓你損失那麼一點潛在使用者,但換來好的口碑。何況,啟用長期不閱讀的沉睡會員的可能性微乎其微。

(二) 主動清理門戶

    有些功能可以提供會員向外發郵件,例如邀請信,賀卡等。別有用心的人可能利用這些功能群發垃圾郵件、欺詐資訊、政治敏感資訊等,這無異於養虎遺患。這類會員是堅決要清理掉的。

七、我被反垃圾誤判了

    功夫做得再多,還是有被錯殺的一天,彆著急,至少我們是好人,認真搞清楚原因,與運營商好好溝通,問題一般不難解決。

(一)  定位問題

    定位問題,最直接的方式是檢視系統日誌,捕捉SMTP會話中接收方返回的錯誤資訊。不同的郵件軟體有不同的返回資訊,但基本相似,懂一點英文及郵件系統常識的應該能讀懂。這裡需要定位的是究竟是系統問題還是使用者問題。我們以下面的例子說明:

系統問題: 
Connection time out
Open relay denied
IP involved in rbl
Server refused mail service

使用者問題: 
User not found
Mail size exceeded
No space in mail box

    正像你看到的,系統問題一般是由網路、RBL、內容過濾,會話規範、頻率限制一類的全域性問題導致。而使用者問題一般是由對方使用者名稱、郵箱空間之類的個別問題導致的。 
我們需要去解決的,通常僅僅是系統問題。倘若出錯資訊晦澀不明,難以定位,那就不要浪費時間了,直接到一下步----溝通申訴。 
   

(二)  溝通申訴

    所謂解鈴還需繫鈴人,在你清楚了出現的系統問題後,唯一能做的就是去聯絡接收方。一般國內的運營商都有專門的技術人員負責對外聯絡並處理反垃圾誤判,這時候說不定對方也很著急,因為誤判對雙方都沒有好處。但國外的運營商可能由於企業文化的不同,一般不讓你直接聯絡,通常你得發個郵件到客服郵箱,或者訪問他們的申訴頁面。 
聯絡對方之前,你需要準備一些資料,以便對方提高排查速度和準確率。

  1. 被誤判的本方IP地址
  2. 返回錯誤資訊的對方IP地址
  3. 錯誤日誌,你的郵件系統最好具備清晰易懂的日誌輸出,有完整的時間點,收發件人,錯誤資訊等記錄。

    正常情況下的誤判,郵件運營商都能為你排除,除非你的IP被列入了RBL,而接收方又剛好呼叫了此RBL,換句話說,發生誤判的不是該運營商,而是這個RBL。這時候需要溝通的物件就是這些RBL機構,你要有心理準備,他們一般是比較難溝通的,這就是我為什麼強調一開始選擇IDC時要選擇一個沒有被列入RBL的IP段。具體請看下一節。

八、關於實時黑名單(RBL)

    Real-time black list(RBL)是一種公開的DNS查詢服務,郵件接收方可以通過查詢該DNS服務得知某一來源IP是否經常性垃圾郵件傳送源。至於RBL中的黑名單IP如何收集,各家RBL有自己的技術,這裡不詳述。

    這裡有一個著名黑名單組織Spamhaus的典型RBL攔截資訊

    554 5.7.1 : Recipient address rejected: blocked using sbl-xbl.spamhaus.org

    登陸www.spamhaus.org,可查詢IP被列入RBL的具體原因、被捕捉的垃圾郵件樣本、以及申訴撤消的入口。 
    

    其他的RBL大同小異,目前主流的RBL機構有:

九、作者的話 
    
    反垃圾郵件系統是一把雙刃劍,誤判現象是必然的產物,就像再精明的警察也不可能一眼看出誰是好人誰是壞人一樣。在命中率與誤判率之間尋求一個平衡點,是反垃圾郵件永恆的話題。郵件收發雙方都有義務朝著這個目標努力,主動溝通,為雙方各自的使用者營造放心可靠的服務體驗。不要把申訴溝通看成是雙方博弈的戰場。雙贏,才是真的贏。


相關推薦

怎麼防止郵件垃圾郵件郵件群發技巧點滴

一、前言       電子郵件作為一種不可多得的網際網路通訊手段日益發展的同時,反垃圾郵件技術也以魔高一尺道高一丈的勢頭前進。郵件營銷、以及以郵件訂閱為生計的企業越來越吃力不討好,他們的郵件動轍被郵件運營商認為是垃圾郵件而被拒於門外,尤其是那些由系統自動群發的郵件。本文

你的郵件為何標記垃圾郵件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL注入技巧拓展————5、MySQL盲注淺析

前言 所有的測試均為無WAF的情況下進行。 註釋關鍵字 -- # 單行註釋,兩個-連線符後面緊跟著一個空格 # # 單行註釋 /**/ # 多行註釋 實踐效果: mysql> SELECT username,password FR

SQL注入技巧拓展————4、高階SQL注入:混淆和繞過

【0×01】 – 簡介 大家好,這是一篇致力於文件化我們所從事的高階SQL注入技術的文章。 本文將要揭示能用於現實CMSs和WAFs程式中的高階繞過技術和混淆技術。文中所提到的SQL注入語句僅僅是一些繞過保護的方法。還有一些其他的技術能用於攻擊WEB程式,但是很不幸我們不能告訴你,因為它們就是0

SQL注入技巧拓展————3、SQL注入防禦與繞過的幾種姿勢

本文章主要以後端PHP和MySQL資料庫為例,參考了多篇文章後的集合性文章。 前言 本文章主要以後端PHP和MySQL資料庫為例,參考了多篇文章後的集合性文章,歡迎大家提出個人見解,互促成長。 一、 PHP幾種防禦姿勢 1. 關閉錯誤提示 說明:PHP配置檔案php.ini

SQL注入技巧拓展————2、MySQL注入攻擊與防禦

本文主要是做一個Mysql的注入總結,對於Mysql來說利用的方式太過於靈活,這裡總結了一些主流的一些姿勢。 一、注入常用函式與字元 下面幾點是注入中經常會用到的語句 控制語句操作(select, case, if(), ...) 比較操作(=, like, mod()

SQL注入技巧拓展————12、MongoDB安全 – PHP注入檢測

什麼是MongoDB MongoDB 是一個基於分散式檔案儲存的資料庫。MongoDB是個開源的NoSql資料庫,其通過類似於JSON格式的資料儲存,這使得它的結構就變得非常自由。通過MongoDB的查詢語句就可以查詢具體內容。 為什麼使用MongoDB 其實大部分原因只

SQL注入技巧拓展————11、PostgreSQL滲透測試指南

我之所以寫這篇文章,目的在於為滲透測試人員提供測試PostgreSQL資料庫的具體方法。文章中用來演示的目標系統是Metasploitable 2,因為該系統包含許多漏洞,也存在配置不當問題。 一、前言 PostgreSQL是一個開源資料庫,主要部署於Linux作業系統中。然而,Pos

SQL注入技巧拓展————10、postgresql資料庫利用方式

PostgreSQL 是一個自由的物件-關係資料庫伺服器(資料庫管理系統),本文對於postgresql的使用及利用做個總結備份。 測試系統:kali 基本使用 在root許可權下修改資料庫密碼: service postgresql start #啟動服務 su po

SQL注入技巧拓展————16、繞過WAF注入

正文開始: 找到一個有裝有安全狗的站: 繞過攔截and 1=1: payload:    id=1/*!and*/1=/*!1*/     即可繞過。 通常order by 不會被攔截,攔截了繞過道理差不

554 DT:SPM 傳送的郵件內容包含了未許可的資訊,或系統識別垃圾郵件。請檢查是否有使用者傳送病毒或者垃圾郵件

通過python 指令碼傳送郵件時候總是出現這樣惡劣的錯誤。 之所以稱之為惡劣是這個錯誤很不講道理 1.確保你已經加入了header,不加可能會導致該錯誤。 2.確保你的subject 和content 內容不一樣,如果一樣可能導致錯誤。 3.還是報錯,

郵件退訂連結服務什麼是郵件退訂連結? - EmailCamel

1. 什麼是郵件退訂連結? 在給客戶發郵件或者群發郵件的時候,在郵件內容的底部加退訂連結。客戶如果以後不想接收您的郵件,可以退訂。退訂後,您就不要再給客戶發郵件了。如下圖: 2.為什麼在發郵件的時候要使用郵件退訂連結? 使用郵件退訂連結,可以降低客戶投訴、拒收、舉報等風險,客戶找到退訂

做外貿業務發郵件郵件退信,是什麼原因?

客戶諮詢:   答: 從對方伺服器的提示來看,是對方的該郵件地址不存在了,因為時隔一個月,該員工可能離職,或者其它原因,該郵件地址賬號已從伺服器上刪除了。 發郵件,郵件提示是最好的說明。針對上面的情況,可以用類似Emailcamel郵件地址驗證工具,來檢測確認該地址是

ubuntu搭建postfix smtp郵箱服務站點發送郵件

需求很簡單,也不搞得那麼麻煩。不需要接收郵件,僅僅利用PHP類庫PHPMailer傳送驗證碼郵件,接收郵件可以用什麼qq,網易的。還有一點如果配置接收郵件,還需要考慮什麼安全,垃圾郵件啥的。   正文開始   1 解析域名 (防止郵件被扔進垃圾郵箱) mail

springboot2.0傳送郵件。QQ、網易親測有效

目的:springboot2.0-傳送郵箱。QQ、網易郵箱  第一步:新增依賴【網上都是說添一種依賴這是錯誤的,會出現注入的時候為null】 <!--郵箱依賴--> <dependency> <grou

laravel 使用阿里雲郵件推送服務傳送郵件通知

使用這個包:https://github.com/HyanCat/aliyun-direct-mail 1、安裝: composer require hyancat/aliyun-direct-mail:dev-master 2、在 config/services.php 中新增如下

建站知識360安全檢測出輕微 X-Frame-Options頭未設定,iis、apache、nginx使用X-Frame-Options防止網頁Frame的解決方法

當然也是因為被360檢測到了示"X-Frame-Options頭未設定",根據360的提示與百度了一些網上的一些資料整理了下,完美解決問題。 首先看下360給出的方案,但麼有針對伺服器的具體設定,不是每個人對伺服器都很懂啊。 描述: 目標伺服器沒有返回一個X-Frame-Options頭。

GC是如何判斷一個物件"垃圾"的?GC判斷"垃圾"的物件一定會回收嗎?

一.GC如何判斷一個物件為”垃圾”的 java堆記憶體中存放著幾乎所有的物件例項,垃圾收集器在對堆進行回收前,第一件事情就是要確定這些物件之中哪些還“存活”著,哪些已經“死去”。那麼GC具體通過什麼手段來判斷一個物件已經”死去”的? 1.引用計數演算法(已被

python3使用smtplib發郵件退回

背景:公司自己的郵件伺服器,不支援ssl退回資訊:This is the mail system at host mail.*****.net.cn. I'm sorry to have to inform you that your message could not b

終於成功配置了sendmail本地使用者轉發郵件

在ubuntu中安裝了sendmail,通過bind在本地管理域student6.org的域名。在給本地使用者mailtest傳送郵件時,總會收到這樣的郵件內容:From: Mail Delivery Subsystem <MAILER-DAEMON>To: [e