प्रेषक पते के लिए एक वास्तविक डोमेन नाम कैसे कॉन्फ़िगर करें


10

मैंने php mail()फ़ंक्शन का उपयोग करके एक ईमेल भेजने की कोशिश की लेकिन यह किसी भी तरह से विफल रहा, शिकायत करते हुए कि एक वास्तविक डोमेन नाम की आवश्यकता है। निम्नलिखित Maillog में देखा गया है:

sendmail 4984 r25984: from = apache, size = 273, class = 0, nrcpts = 1, msgstr = <201.r25@localhost.localdomain>, relay = apache @ localhost
सेंड 4985 r25985: ruleset = check_mail, arg1 =, relay = relay =। mydomain.com [127.0.0.1], अस्वीकार = 553 5.5.4 ... प्रेषक पते के लिए आवश्यक वास्तविक डोमेन नाम
सेंडमेल 4984 r25984: toexex@server.com, ctladdr = apache (48/48), देरी = 00: 00:01, xdelay = 00: 00: 00, मेलर = रिले, pri = 30273, रिले = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = डेटा प्रारूप त्रुटि
4984 r25984: r25984: DSN: डेटा प्रारूप त्रुटि

जब भी logrotate में कोई समस्या हो, cron external@server.com पर ईमेल भेजने में सक्षम है। मुझे यकीन नहीं है कि php ऐसा करने में असमर्थ है। मैंने निम्नलिखित के साथ `sendmail.mc में डिफ़ॉल्ट कॉन्फ़िगरेशन में परिवर्तन करने की कोशिश की:

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl

लेकिन, इसका कोई असर नहीं दिख रहा है। Php मेल फंक्शन में एड्रेस से हैडर पहले ही सेट हो चुका है। मैंने यह भी सुनिश्चित किया है कि SELinux httpd_can_sendmailसक्षम है। मेल डिलीवर होने के लिए मुझे और क्या करने की आवश्यकता है?


आपने संपादन किया sendmail.mc, लाइनों को localhost.localdomainऔर localhostकुछ सार्थक को बदलकर mc फ़ाइल को संकलित किया sendmail.cf?
फोबवेन्टुरा

@fboaventura, नहीं, मैंने dnlउनके सामने हटाकर दो पंक्तियों को जोड़ दिया।
प्रश्न ओवरफ्लो

क्या आप अपनी php स्क्रिप्ट के संबंधित हिस्से को जोड़ सकते हैं, जहाँ आप इन्वोकेशन कर रहे हैं mail()? और, sendmail.mcउचित कॉन्फ़िगरेशन फ़ाइल नहीं है, इस फ़ाइल sendmail.cfका उपयोग करने के लिए संकलित किया जाना चाहिए m4
फोबवेन्टुरा

@fboaventura, धन्यवाद, मुझे पता है कि संकलन की आवश्यकता के बारे में, मैं इसे अब काम में लाने में सक्षम हूं। नीचे मेरा जवाब देखें। आपकी मदद के लिए धन्यवाद :)
प्रश्न ओवरफ्लो

जवाबों:


10

मुझे लगता है कि मैंने अभी इसे हल किया है। मेरे पास / etc / मेजबान में निम्नलिखित हैं :

127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com

मुझे myserver.com को लाइन के सामने रखने की आवश्यकता है localhost.localdomainताकि सेंडमेल यह सोचे कि यह ईमेल भेजने के लिए एक वास्तविक डोमेन का उपयोग कर रहा है।


3
आप निश्चित रूप से अपने स्वयं के उत्तर को स्वीकार कर सकते हैं वह समाधान था ... एक विचार के रूप में, यह आमतौर पर /etc/hosts("s" के साथ) है, इसके अलावा: अच्छा जवाब!
लेवी

2

आपको अपनी स्क्रिप्ट में, अपने ईमेल के हेडर को कॉन्फ़िगर करना होगा From: sender@domain.com


क्षमा करें, मुझे यह उल्लेख करना चाहिए कि यह पहले ही हेडर में सेट हो चुका है।
प्रश्न ओवरफ्लो

1

आपके sendmail.mcऐड में:

LOCAL_CONFIG
Djmyserver.com

पुनरावर्ती sendmail.cf, फिर से भेजना ईमेल और आप ठीक होना चाहिए


1

मेरे मामले में, उबंटू 16.04 पर एक एडब्ल्यूएस उदाहरण पर, जो जोड़ना था /etc/mail/sendmail.mc:

define(`confDOMAIN_NAME', `mydomainname.com')dnl

MAILER_DEFINITIONSफ़ाइल के अंत की ओर लाइन से पहले एक लाइन पर , और उसी लाइन को अंत तक जोड़ें /etc/mail/submit.mc। फिर sudo suरूट अनुमतियों के लिए टाइप करें , और इसके साथ कॉन्फ़िगर करने के लिए संकलित करें:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

... तो exitसूदो। अंत में, sudo service sendmail restartSendmail को पुनः आरंभ करने के लिए, और उसके बाद से डोमेन नाम से भेजे गए ईमेल दिखाई दे रहे थे। अन्य फीचर्स या MASQUERADE कमांड में से किसी की भी आवश्यकता नहीं थी, न ही /etc/hostsफाइल में कोई प्रविष्टि ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.