2012-11-21 18 views
10

SMTP Error: Could not connect to SMTP host. Message could not be sent.एसएमटीपी होस्ट

Mailer Error: SMTP Error: Could not connect to SMTP host.

से कनेक्ट नहीं हो सका, मुझे CentOS के तहत PHPMailer काम करने का कोई तरीका नहीं दिख रहा है। एक्सएएमपीपी के साथ विंडोज के तहत मेल ठीक काम करता है लेकिन मुझे हमेशा यह त्रुटि लिनक्स के तहत मिलती है।

एसएमटीपी सर्वर एक लोटस डोमिनो पोर्ट 25 पर सुन रहा है, CentOS मशीन सब पर कोई फ़ायरवॉल है और अजीब बात यह है कि यहां तक ​​कि मेल() काम नहीं करता है। यह कुछ भी नहीं देता है (जबकि विंडोज़ पर 1 लौटाता है)। अगर मैं सेंटोस सर्वर के माध्यम से टेलनेट के माध्यम से एक ईमेल भेजता हूं तो यह ठीक काम करता है इसलिए मुझे नहीं लगता कि यह नेटवर्क समस्या है। यह PHP से संबंधित होना चाहिए लेकिन मुझे नहीं पता कि कैसे।

<?php 
require("class.phpmailer.php"); 
$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->Host = "192.168.x.x"; 
$mail->SMTPAuth = false; 
$mail->From = "[email protected]"; 
$mail->FromName = "XXX"; 
$mail->AddAddress("[email protected]"); 
$mail->IsHTML(true); 
$mail->Subject = "Test"; 
$mail->Body = "Test"; 
if(!$mail->Send()) 
{ 
    echo "Message could not be sent. <p>"; 
    echo "Mailer Error: " . $mail->ErrorInfo; 
    exit; 
} 
echo "Message has been sent"; 
?> 

बस एक्सएएमपीपी (विंडोज) पर उपरोक्त कोड को स्पष्ट करने के लिए।

मैं PHPMailer पर त्रुटि डिबग और त्रुटि यहां होता (class.smtp.php विधि कनेक्ट()):

$this->smtp_conn = @fsockopen($host, // the host of the server 
          $port, // the port to use 
          $errno, // error number if any 
          $errstr, // error message if any 
          $tval); // give up after ? secs 
// verify we connected properly 
if(empty($this->smtp_conn)) { 
    $this->error = array("error" => "Failed to connect to server", 
         "errno" => $errno, 
         "errstr" => $errstr); 
    if($this->do_debug >= 1) { 
    echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />'; 
    } 
    return false; 
} 

ऐसा लगता है कि यह सॉकेट नहीं खोल सकता ...

अद्यतन: का उपयोग $ मेल> SMTPDebug = 2;

SMTP -> ERROR: Failed to connect to server: Permission denied (13)

+2

आप लॉगइन क्रेडेंशियल्स को निर्दिष्ट करने की कोशिश की है? –

+0

कोई नहीं है। रास्ते से आपका क्या मतलब है? आप का मतलब है उन्हें "" के रूप में सेट करें? – raz3r

+0

एफवाईआई ने '$ मेल-> SMTPAuth = true; $ मेल-> उपयोगकर्ता नाम = ""; $ मेल-> पासवर्ड = ""; ' अभी, कोई भाग्य नहीं। – raz3r

उत्तर

10

आप SMTPDebug संपत्ति के साथ डिबग मोड सक्षम कर सकते हैं, उदा .:

$mail = new PHPMailer(); 
// 1 = errors and messages 
// 2 = messages only 
$mail->SMTPDebug = 2; 

त्रुटि संदेश स्क्रीन पर गूँजती किया जाएगा: के रूप में अलवारो ने सुझाव दिया इस उत्पादन का उत्पादन किया।

अद्यतन:

एक अनुमति नहीं दी त्रुटि fsockopen() का उपयोग कर संदेश पता चलता है कि उपयोगकर्ता पीएचपी चलाता है के रूप में एक सॉकेट खोलने की अनुमति नहीं है। आप की दोबारा जांच कर होता कोई फ़ायरवॉल यह है कि, तो यह है कि एक SELinux problem है संभव है: -?

+1

अच्छा पकड़ो, अब यह त्रुटि देता है 'एसएमटीपी -> त्रुटि: सर्वर से कनेक्ट करने में विफल: अनुमति अस्वीकार (13) '। क्या यह लिनक्स उपयोगकर्ता की अनुमति से संबंधित हो सकता है? – raz3r

+2

आप एक प्रतिभाशाली हैं, मैंने आपके लिंक पर जो आदेश दिया है उसका उपयोग किया और यह काम किया। तो यह सब के बाद एक नेटवर्क से संबंधित समस्या थी। अब मुझे पता है कि अगर मुझे भविष्य में एक ही त्रुटि मिलती है तो क्या करना है! सभी लोगों का धन्यवाद, मदद की सराहना करते हैं;) – raz3r

30

ओएस CentOS 6.3

ईमेल

नहीं भेजा जा सका के बाद कुछ reserch पता चला कि SELinux संचार

SELinux सक्रिय है और डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है ब्लॉक कर रहा है। चूंकि SELinux प्रेषण फ़ंक्शन का उपयोग करने और किसी भी प्रकार का नेटवर्क कनेक्शन बनाने के लिए अपाचे (httpd, phpmailer) को अनुमति नहीं देता है।

getsebool आदेश हम जांच कर सकते हैं httpd दानव नेटवर्क पर एक कनेक्शन बनाने के लिए और एक ई-मेल भेज सकता है, यदि का उपयोग करना।

getsebool httpd_can_sendmail 
getsebool httpd_can_network_connect 

यह आदेश एक बूलियन चालू या बंद करेगा। इसके बंद है, हम इसे निम्नलिखित के प्रयोग पर सेट कर सकते हैं:

sudo setsebool -P httpd_can_sendmail 1 
sudo setsebool -P httpd_can_network_connect 1 

अब आप अपने php परीक्षण कर सकते हैं, अगर ठीक से कोड SendMail काम है या नहीं यह देखने के लिए।

+0

धन्यवाद, यह समस्या से हल हो गया है – Piyuesh

+0

आज आप मेरे नायक हैं। –

+0

आपने सर ने मुझे बचाया। मैं यह भी इंगित करना चाहता हूं कि सेटसेबूल कमांड सीईएनटीओएस के कुछ संस्करणों पर थोड़ा धीमा चल सकता है, इसलिए कमांड चलाते समय धैर्य रखें। – JoeMoe1984

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