2012-04-12 10 views
13

मैं एसएमटीपी और जीमेल के साथ ई-मेल भेजने के लिए PHPMailer का उपयोग करने की कोशिश कर रहा हूं। सटीक स्क्रिप्ट अन्य सर्वरों पर काम का उपयोग कर रहा है लेकिन यह इस विशेष होस्टिंग कंपनी के सर्वर पर काम नहीं कर रहा है।मैं कैसे जांच सकता हूं कि पोर्ट 465 और 587 PHP के साथ खुले हैं या नहीं?

मैं phpinfo() जाँच की है और यह मुझसे कहता है कि allow_url_fopenon है और वहाँ fopen सूचीबद्ध की तरह कोई disabled_functions हैं।

स्क्रिप्ट विफल रहता है और यह मुझसे कहता है या तो:

SMTP -> ERROR: Failed to connect to server: Connection timed out (110) 

वरना

SMTP Error: Could not authenticate. 

मैं इस वजह से यह कनेक्ट नहीं कर सकता यह सोचते हैं रहा हूँ, क्योंकि फिर अन्य सर्वर और इस कार्य प्रमाणीकरण प्रमाण पत्र सही हैं।

तो मैं सामान्य रूप से पूछता हूं, क्या कोई तरीका है कि मैं PHP या jailshell ssh का उपयोग करके जांच कर सकता हूं कि बंदरगाह वास्तव में खुले हैं या नहीं?

उत्तर

19

आप fsockopen साथ खुला/उपलब्ध बंदरगाहों के लिए जाँच कर सकते हैं:

$fp = fsockopen('127.0.0.1', 25, $errno, $errstr, 5); 
if (!$fp) { 
    // port is closed or blocked 
} else { 
    // port is open and available 
    fclose($fp); 
} 

... जहां 5 सेकंड में समय समाप्ति तक कॉल के विफल है।

यह शायद फ़ायरवॉल समस्या के कारण है जहां आपका होस्टिंग प्रदाता आपको आउटबाउंड सॉकेट और/या विशिष्ट बंदरगाहों से कनेक्ट करने से रोक रहा है। ध्यान रखें कि आउटबाउंड एसएमटीपी बंदरगाहों को अवरुद्ध करने के लिए यह एक बहुत ही सामान्य सुरक्षा कॉन्फ़िगरेशन है। दिन में, केवल पोर्ट 25 अवरुद्ध कर दिया गया था, लेकिन मैं अधिक से अधिक एसएसएल वेरिएंट अवरुद्ध होने लग रहा हूं।

अधिकांश प्रदाता और होस्टिंग कंपनियां आपको स्पैमर को जंक मेल रिले करने से रोकने के लिए केवल अपने स्वयं के एसएमटीपी सर्वर से जुड़ने की अनुमति देगी।

+0

+1 रिकॉर्ड के लिए, यह एक ही तरीका है PHPMailer SMTP सर्वर से कनेक्ट करने के लिए उपयोग करता है (लंबे टाइमआउट और रीट्रीज़ को छोड़कर)। – webbiedave

+0

धन्यवाद। मैंने यह भी सीखा कि भले ही बंदरगाह खुला है, फिर भी रिलेइंग अक्षम है। PHP के साथ जांचने का कोई तरीका? – cwd

+0

@cwd: आपको उपयुक्त SMTP कमांड भेजने और 'fsockopen' द्वारा दिए गए हैंडल पर' fwrite' और 'fread' का उपयोग करके प्रतिक्रियाओं की जांच करने की आवश्यकता है। – netcoder

संबंधित मुद्दे