2012-10-09 10 views
9

मेरे पास एक CentOS 6.2 वर्चुअल मशीन है जो अपाचे 2.2 और PHP 5.3 चला रही है जिसे मैं PHP के मेल() फ़ंक्शन के माध्यम से ईमेल भेजने की कोशिश कर रहा हूं। मैं समस्याओं के बिना सीएलआई से ईमेल भेज सकता हूं लेकिन जब PHP कोशिश करता है तो यह विफल हो जाता है।ईमेल भेजने के लिए अपाचे को कैसे अनुमति दी जा सकती है?

Oct 9 11:42:03 localhost sendmail[3080]: NOQUEUE: SYSERR(apache): can not chdir(/var/spool/clientmqueue/): Permission denied 

यह अपाचे की तरह लगता है यह करने के लिए अनुमति नहीं है लेकिन मुझे यकीन है कि यह कैसे तय करने के लिए नहीं कर रहा हूँ: sendmail लॉग में निम्न है। मुझे इसके बारे में बहुत सी चर्चा मिली है लेकिन मैं जो कुछ भी कर रहा हूं उसके लिए पर्याप्त विशिष्ट नहीं है जिसका मैं उपयोग कर सकता हूं। किसी भी सहायता की सराहना की जाएगी। धन्यवाद!

+2

आप इस ईमेल को भेजने का प्रयास कैसे कर रहे हैं? अपाचे को मेल स्पूल निर्देशिकाओं में कभी भी chdir की आवश्यकता नहीं होनी चाहिए - इसे केवल स्थानीय मेल एमटीए से बात करनी चाहिए। –

+0

इस समाधान को देखें: http://forums.freebsd.org/showthread.php?t=32273 –

उत्तर

4

सबसे पहले आप अगर अनुमति सही हैं की जाँच करने के लिए है। यहाँ अनुमति नीचे अपने सिस्टम में

# ls -l /usr/sbin/sendmail.sendmail -r-xr-sr-x root smmsp /usr/sbin/sendmail.sendmail

# ls -l /var/spool/clientmqueue drwxrwx--- smmsp smmsp /var/spool/clientmqueue

अपनी अनुमति तो है या स्वामित्व गलत है तो chown और chmod उपयोग करके इसे बदल।

यदि उपरोक्त सही है तो selinux को अक्षम करें या यदि आप चाहते हैं कि selinux सक्षम selinux संदर्भ सेट करने के लिए chcon का उपयोग करें।

http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html

SELinux को निष्क्रिय करने के लिए अस्थायी रूप से उपयोग करने #setenforce 0

+1

यह SELinux था। यह अब काम करता है! धन्यवाद! –

+1

SELinux को अक्षम न करें :(वेब-सर्वर को मेल भेजने की अनुमति देने के लिए एक बूलियन 'httpd_can_sendmail' है जो इस मामले में काम करना चाहिए। इसे 'setsebool -P httpd_can_sendmail 1' के साथ सेट करें, और' -P' विकल्प को शामिल करें इसे रीबूट में लगातार बनाते हैं। –

1

आपके पास SELinux सक्षम हो सकता है।

http://selinuxproject.org/page/Main_Page

आप ऐसा करके SELinux की स्थिति की जांच कर सकते हैं:

sestatus

आप की तरह कुछ देखना चाहिए:

:

SELinux status:     enabled 
SELinuxfs mount:    /selinux 
Current mode:     enforcing 
Mode from config file:   enforcing 
Policy version:     24 
Policy from config file:  targeted 

आप SELinux बंद के माध्यम से बदल सकते हैं अस्थायी रूप से

echo 0 >/selinux/enforce 

और पीठ पर

echo 1 >/selinux/enforce 

के साथ अस्थायी करते हैं। इसे बंद करें, RPM इंस्टॉल न करें या परिवर्तन करें। मुझे लगता है कि इससे इसे पुनः सक्षम करने में समस्याएं हो सकती हैं।

आप स्थायी रूप से SELinux को निष्क्रिय करना चाहते हैं, तो कोशिश:

https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-Enabling_and_Disabling_SELinux.html

+0

इस जानकारी के लिए धन्यवाद! –

28

SELinux मुद्दा हो सकता है, रन सत्यापित करने के लिए:

allow_postfix_local_write_mail_spool --> off 
: यह प्रदर्शित करता है

getsebool -a | grep mail 

के रूप में bellow यह SELinux है

आप इसे अक्षम कर सकते हैं, लेकिन अगर

setsebool -P httpd_can_sendmail on 

यह httpd, ईमेल भेजने के लिए जब आप php मेल का उपयोग के रूप में की अनुमति देगा(): आप रखने के लिए यह (और आप चाहिए के रूप में यह सुरक्षा की अतिरिक्त परत प्रदान करता है) आप कुछ और करना चाहिए चाहते हैं।

+4

-P विकल्प इसे स्थायी बना देता है, इसलिए रीबूट के बाद यह फिर से होगा :) – VSB

+2

मैंने केवल "setsebool -P httpd_can_sendmail" का उपयोग किया और समस्या हल की। धन्यवाद – PookPook

11

इस से निकलने के लिए नफरत है, लेकिन यहां कोई भी समाधान मेरे लिए काम नहीं करता है। मैं SELinux बारे में बहुत कम जानते हैं, लेकिन मैं (CentOS 6 पर) इस के साथ समस्या यह खोज समाप्त हो गया:

getsebool httpd_can_sendmail 

कौन मुझे यह विकलांग बताया।

setsebool httpd_can_sendmail 1 
+0

खूबसूरती से काम किया - पोस्ट करने के लिए धन्यवाद। – daveywc

+0

यह मेरे लिए सेंटोस –

+0

पर काम करता है आप एक उद्धारकर्ता हैं .. धन्यवाद .. –

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