[問題]validate email Mod

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

[問題]validate email Mod

文章 依夢兒 »

問題外掛:validate email Mod
參考連結:http://mods.db9.dk/viewtopic.php?t=283
使用版本:phpBB 2.0.6
網站位置:見個人資料
狀況描述:

安裝之前已經依照作者建議先偵測一下伺服器環境,來判定是否可以安裝這一支外掛。
偵測出來的結果是這樣的:
http://morningmusumenet.net/phpbb/verify.php

結果顯示有 DNS lookup not posilbe 的問題存在,請問我應該從哪一方面來解決這個問題呢??

註:我是租用虛擬主機來架設網站。
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
messagebox
竹貓忠實會員
竹貓忠實會員
文章: 981
註冊時間: 2003-02-24 23:34

Re: [問題]validate email Mod

文章 messagebox »

沒想到有人會搞出這個程式~~
剛好之前有寫過~
我大致上說明一下~~

這支測試程式必須在WIN2K或XP上運作~
他是利用nslookup.exe來查詢MAIL的MX記錄~

所以承租的unix機器上不適用~

另外~~我也建議對程式稍微做些小更動~~
[php]<?php
//第23行
@exec( "nslookup -type=MX $host", $output );
//修改為\r
@exec( "nslookup -type=MX $host 168.95.1.1", $output );

//第44行
@exec( "nslookup -type=MX $hostname", $output, $ret );
//修改為\r
@exec( "nslookup -type=MX $hostname 168.95.1.1", $output, $ret );

//將其修改為利用HINET的DNS來做查詢~
//畢竟HINET是台灣最大的~~用它來查詢比較正確~~
?>[/php]
依夢兒不能使用的原因~~就是因為在所租用的主機上~
並沒有nslookup這個命令~~
所以無法查詢~~~
我之前玩這個是在寫一個檢測DNS設定是否正確~~

然而他現在只是單純查詢郵件的交換記錄(MX紀錄)~

有興趣的人可以在cmd模式下輸入\r
nslookup -type=MX onlyou.org 168.95.1.1
將可以查到onlyou.org的MX記錄是在mail.onlyou.org

大致上來說明一下這隻程式的作用方式~~
我沒安裝過~但我猜的應該是用於註冊時~輸入的MAIL認證~

首先~他會先查詢註冊主輸入的domain的MX記錄~
如果有MX記錄~將會試著連線到該主機~~~
並且發出測試信~如果主機上並沒有這位使用者~就不會接受信件傳送~
也就證明這個註冊者的MAIL是不合法的~

如果沒有MX記錄~將直接連接A記錄~~就是XXX@domain的domain
連接上了~~~就依照剛剛的方式~~測試主機上有沒有這個user

連接不上~~~理所當然~~~網域都不對了~~當然就不用管它了~一定是假的~

剛剛上面所說的連接~~~都是指要求SMTP SERVICE~
不過這麼做會有後遺症~
有自行架設MAIL Srver的都了解~~
許多免費電子郵件信箱並不好送信~~

yahoo.com
hotmail.com
msn.com
因為她們的要求連線幾乎是每分每秒都滿線中~~~
然而~~這隻程式並不會像正常MAIL SERVER一樣~
送信失敗超過多少次才算失敗~~
一次不能連就當你的mail有問題~
這麼一來~~~許多free mail都將無法成功註冊了~~
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

哇....遇到高手了,不愧是 messagebox 兄。

嗯,所以說因為我的網站是架在 Linux 虛擬主機上,所以無福使用這一支外掛囉??
如果是的話,真是可惜,不過我記得作者網站上並沒有提到這一點....
而且,我搬家之前用的虛擬主機也是 Linux ,當時就沒有出現 DNS lookup not posilbe 。
不過它還是跟我說 could not find a MX record ,所以架這一支外掛會有問題。
現在搬了家之後更慘,到 Step 2 就給我打退堂鼓了....

另外請教一下 messagebox 兄,您說您之前寫了類似的 Script ,可以大概說一下內容嗎??
其實我要的只是讓會員在註冊的時候,能夠讓系統先 check 一下他填寫的電子郵件信箱有沒有問題。
因為我論壇每天註冊的人很多,一堆人不知道是故意的還是不小心,
要嘛電子郵件亂打,要嘛就是寄出的認證退回至我的信箱,煩都煩死了。
所以才想要說安裝這一支外掛,讓系統先 check 一下他們填寫的信箱是不是存在的。
您說您之前寫過類似的 Script ,是不是就是用來作這樣的事呢??
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
messagebox
竹貓忠實會員
竹貓忠實會員
文章: 981
註冊時間: 2003-02-24 23:34

文章 messagebox »

依夢兒 寫:另外請教一下 messagebox 兄,您說您之前寫了類似的 Script ,可以大概說一下內容嗎??
我之前寫的是這種的~
http://www.dnsreport.com
用來專門解析DNS的設定是不是有錯誤~~並不是用來專門判斷郵件網域的~~
其測試包括~
NS記錄~SOA記錄~www的A記錄~MX記錄~以及郵件主機是否Open relay~等等~~~
主要用途是讓架設DNS跟MAIL主機的人檢查設定是否合乎規定~及安全性是否設定得宜~~

你說之前並不是這樣的訊息~~只有一個可能~~那台機器上有nslookup這個命令~
至於這點我就不清楚了~~~還煩請站上有玩LINUX的大大來做說明~~~

could not find a MX record 這個表示該domain並沒有設定MX紀錄~但不表示郵件是錯誤的~
郵件交換主機記錄沒有的話~~確實會影響收信~~許多大廠(ISP的郵件主機)~~通常都是沒MX記錄就不送信了~~直接送退信~~

因為我實在看不懂DNS的通訊協議~~所以也是用跟這位作者相同的方式~~
用CMD命令模式去呼叫nslookup這隻程式~~查詢~~
本來我真的滿心期待該作者是用Socket的方式直接向DNS SERVER查詢記錄~~
可惜他所用的方法跟我之前所用的是一模一樣~~
這種方式必須要主機上有nslookup才能使用~~
WIN ME 98就會掛點了~
不過ME跟98有變通方式~~只要去一台有nslookup.exe的電腦複製該程式就可以~
但UNIX應該是沒辦法執行WIN的應用程式~~

其實要是沒有MX的話~~我是有辦法寫出一隻驗證mail是否正確的程式~~
但是~~如果有mx~~就不行了~~
我大概解釋一下~~
以pchome來說~
當註冊者輸入abc@pchome.com.tw
我可以試著向pchome.com.tw這台機器要求SMTP SERVICE~
但是~~可以確定是~pchome.com.tw這台機器上並沒有SMTP SERVICE~
因為它的MAIL SERVER是msXX.pchome.com.tw

如果能得知DNS相關的通訊協議~~就可以直接用Socket去查詢~~~
不過很可惜的~~我在php.net查不到相關資料~~RFC文件我又完全看不懂~~

http://www.armware.dk/RFC/
附上RFC資料庫連結~~我看到那麼多就頭暈了~
messagebox
竹貓忠實會員
竹貓忠實會員
文章: 981
註冊時間: 2003-02-24 23:34

文章 messagebox »

看了半天的php.net終於找到原因~~~
WWW.PHP.NET 寫:This function is not implemented on Windows platforms.
其實很容易~~
請將程式的~
checkdnsrr_winNT跟getmxrr_winNT修改掉~
變成checkdnsrr跟getmxrr
原因是PHP在WIN下~~並沒有checkdnsrr跟getmxrr這兩個函式~
所以~~~作者特別寫出這兩個函式~~
請在程式中需要呼叫到這兩個函式的地方做點修改~~
想必作者也是WIN愛好者~~~

不過作者有事先聲明喔~~~
是依夢兒兄沒看到的~該打屁股了
## This mod, is developed to work on both windows and UNIX platforms, if you are using UNIX, then
## you should be able to gain a minor performance improvement by not useing the supplyed functions
## checkdnsrr_winNT and getmxrr_winNT, use instead the already exisiting functions without the _winNT
## 2 places need to be changed


這是修改過的版本\r
http://onlyou.org/download_file/validat ... r_unix.zip
不是使用UNIX系統請下載原版本~
另外~~因為沒UNIX系統供我測試~~~所以無法確定功效~~

另外說明一下~~剛剛看一下原文件~~如我剛剛預測的~~
作者確實是先檢查MX記錄~然後要求SMTP服務~~
這麼作~~會有一個後遺症~~yahoo的使用者幾乎不能註冊了~~
以我的MAIL SERVER來說~~
通常好運的話~~YAHOO要重寄差不多10-20次才有可能成功~~
倒楣的話~~寄到40次還在寄~~~

但是這程式只連線一次~~TIMEOUT就當成非法電子郵件位置~~
送YAHOO的信要沒TIMEOUT~~難度有點高~~


再來一個題外話~
依夢兒兄似乎也是MOD愛好者耶~~洋洋灑灑一堆~
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

messagebox 寫:不過作者有事先聲明喔~~~
是依夢兒兄沒看到的~該打屁股了
哈哈,不好意思,原來問題是出在這裡喲.... :P
我之前有看過,但是完全搞不懂是什麼意思.... @_@

謝謝您提供修改後的版本,目前在我的論壇上使用,看起來應該是沒有什麼問題了。
不過您修改的部份有一個地方應該要更正一下:

代碼: 選擇全部

if( count( $mxhosts ) )
{
	reset( $mxhosts );
	ksort( $mxhosts );
	$i = 0;
	while( list( $pref, $host ) = @each( $mxhosts ) )
	{
		$mxhosts2[$i] = $host;
		$i++;
	}
	$mxhosts = $mxhosts2;
	return true;
}
else
{
	return false;
}

[color=red]}

}[/color]
最下面那二個紅色括號是多餘的....

messagebox 寫:這麼作~~會有一個後遺症~~yahoo的使用者幾乎不能註冊了~~\r

送YAHOO的信要沒TIMEOUT~~難度有點高~~
嘿嘿,對我來說沒差。
因為 Yahoo! 和 MSN 這二個免費信箱退信率一向極高,
很多會員使用這二個免費信箱註冊,之後主題訂閱通知或是私訊通知常常變成退信,
所以早就被我列為黑名單禁止拿來註冊了。

messagebox 寫:依夢兒兄似乎也是MOD愛好者耶~~洋洋灑灑一堆~
嗯,我對外掛的確是很有興趣,平常有空就會去逛逛各大 phpBB 的外掛討論區,看看有什麼新鮮貨。
不過和其他網友相比,我裝過的外掛真的不算多。
幾個比較熱門的像子分區、附件上傳、相簿以及號稱外掛愛好者殺手的 PCP 我都沒裝。
而且很多外掛玩不到一天覺得不好用就拆掉了;水怪 RPG 和虛擬形象裝了幾個月最後也被我拆了。
目前仍在運作的外掛包含 BBCode 在內大約剩七十多個....
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
主題已鎖定

回到「外掛問題討論」