सेंडमेल में स्थानीय वितरण अक्षम करें


31

मैं PHP स्क्रिप्ट के लिए ईमेल भेजने के लिए एक Centos सर्वर पर Sendmail का उपयोग कर रहा हूं, लेकिन समस्या यह है कि मेल मशीन पर एक स्थानीय मेलबॉक्स को वितरित किया जाता है बजाय डोमेन के एमएक्स रिकॉर्ड में निर्दिष्ट किया गया है - जो वास्तव में एक और मशीन को इंगित करता है ईमेल के लिए उपयोग करें।

मैं भेजने की कोशिश नहीं करूँगा और मशीन के लिए सेटअप के लिए स्थानीय रूप से मेल भेजने की कोशिश कर रहा हूं, क्या स्थानीय डिलीवरी को अक्षम करने का एक सरल तरीका है?

डोमेन स्थानीय-होस्ट-नाम फ़ाइल में नहीं है।

मैंने पहले ही बहुत सारे काम कर लिए हैं और मैंने इस पर ध्यान दिया है:

Sendmail कॉन्फ़िगरेशन स्थानीय मशीन पर मेल वितरित नहीं करने के लिए

सेंडमेल में स्थानीय वितरण अक्षम करें

लेकिन या तो इसका कोई जवाब नहीं है या यह उपयुक्त नहीं है।

मैं किसी अन्य सर्वर से रिले नहीं करना चाहता, मैं चाहता हूं कि यह डोमेन की परवाह किए बिना मेल भेजें।

एक उदाहरण प्रदान करने के लिए:

मेरे पास दो सर्वर हैं, एक mail.example.com पर मेल सर्वर है और एक वेब सर्वर है जो example.com है, जब मैं वेब सर्वर पर smtp सेवा का उपयोग करता हूं तो यह वर्तमान में मेल को उदाहरण के लिए एक स्थानीय मेलबॉक्स पर रूट करता है, लेकिन यह mail.example.com पर मेलबॉक्स में जाना चाहिए

Sendmail -bt रिटर्न का आउटपुट:

ADDRESS टेस्ट मोड (नियम 3 स्वचालित रूप से लागू नहीं)
दर्ज  
> 3,0 info@example.com
कैनोनिफ़ इनपुट: जानकारी @ उदाहरण। कॉम
Canonify2 इनपुट: जानकारी 
Canonify2 रिटर्न: जानकारी 
रिटर्न: सूचना को सूचित करें 
पार्स इनपुट: जानकारी 
Parse0 इनपुट: जानकारी 
Parse0 रिटर्न: जानकारी 
ParseLocal इनपुट: जानकारी 
ParseLocal रिटर्न: जानकारी 
Parse1 इनपुट: जानकारी 
Parse1 रिटर्न: $ # स्थानीय $: जानकारी
पार्स रिटर्न: $ # स्थानीय $: जानकारी

stalkr.net/forum/… मुझे लगता है कि मैं वास्तव में क्या कर रहा हूँ के सबसे करीबी चीज़ लगता है। विशेष रूप से MAIL_HUB सेटिंग का उल्लेख किया गया है, लेकिन यह वास्तव में काम नहीं करता है।

निम्नलिखित को आज़माएं: Sendmail -bt और फिर टाइप करें 3,0 user@domin.com। यह आपको बहुत कुछ फिर से लिखने के नियम देगा, अंतिम वाले को आपको उस रिले को देना चाहिए जो इसका उपयोग करेगा। कृपया आउटपुट प्रदान करें।
फ्रेंकोइस वोल्मारंस

हाय फ्रेंकोइस, मैंने अपने सवाल को आउटपुट शामिल करने के लिए संपादित किया है

जवाबों:


37

मैंने स्थानीय वितरण को अक्षम करने के लिए क्या किया। मैं example.com डोमेन का उपयोग करूँगा।

आवश्यकताएँ:

  • example.com एक आईपी पते की ओर इशारा करते हुए एक इंटर इंटरफेस को सौंपा गया।
  • / etc / मेजबान को परिभाषित करना example.com ऊपर के रूप में बहुत ही आईपी पते को सौंपा गया है
  • example.com एमएक्स रिकॉर्ड Google सर्वर (ASPMX.L.GOOGLE.COM, आदि) की ओर इशारा करते हैं
  • डिफ़ॉल्ट Sendmail स्थापना (मेरा Ubuntu पर था)

कदम:

vim /etc/mail/sendmail.mc

अतं मै:

define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl

और फिर:

sendmailconfig (or /etc/mail/make depending on your distro)
service sendmail restart

परिक्षण:

echo -e "To: user@example.com\nSubject: Test\nTest\n" | sendmail -bm -t -v
echo -e "To: user\nSubject: Test\nTest\n" | sendmail -bm -t -v

आपको इसे Google सर्वर से कनेक्ट करते हुए देखना चाहिए और फिर आपको अपने मेल को अपने Google इनबॉक्स में डिलीवर होते हुए देखना चाहिए।


3
यह सही काम किया है, मुझे आश्चर्य है कि वहाँ द्वारा एक है। डोमेन नाम के बाद।
रॉड्रिगो

निर्दोष रूप में भी काम किया!
फिलिप पीना

धन्यवाद! मैं थोड़ी देर के लिए इसे ठीक करने की कोशिश कर रहा हूं। मैंने निम्नलिखित किया; purge और sendmail को रीइंस्टॉल करें, चलाएं sendmailconfig, आपके द्वारा निर्दिष्ट लाइनें जोड़ें, sendmailconfigफिर से चलाएँ और a करें service sendmail restartऔर यह काम करता है!
लियाम न्यूमरच

@Rodrigo example.com। एक अनुगामी बिंदु के साथ एक विहित FQDN है। Dot.com के बिना example.com सापेक्ष है और इस तरह imprecise, उदाहरण के लिए इसका मतलब example.com.yourdomain.org हो सकता है। आपके ओएस सेटिंग्स पर निर्भर करता है। यह बिल्कुल वैसा ही अंतर है जैसा /etc/passwdऔरetc/passwd
kubanczyk

4

स्पॉकर और पावेल के लिए धन्यवाद कि आपने मुझे यह तय करने के लिए सही दिशा में रखा।

मेरी मूल समस्या यह थी कि सेंडमेल मेरे डोमेन example.com ईमेल खातों को स्थानीय खातों के रूप में मान रहा था।

ये लिंक बहुत उपयोगी साबित हुआ: सेंडमेल स्थानीय डोमेन अनदेखी MX रिकॉर्ड (भाग 2) को http://lists.freebsd.org/pipermail/freebsd-questions/2004-September/057382.html http://objectmix.com/sendmail/ 367,920-sendmail-ध्यान न दी-mailertable-कुछ-semilocal-domains.html

लेकिन मेरे मामले में, FreeBSD 8.2 का उपयोग करते हुए, वास्तव में क्या चाल थी:

# cd /etc/mail

# vim freebsd.mc

इन दो पंक्तियों को जोड़ें:

define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl

ठीक पहले:

MAILER(local)
MAILER(smtp)

# make

--- यह आउटपुट है ---

 cp freebsd.mc host.example.com.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.mc > host.example.com.cf
 cp freebsd.submit.mc host.example.com.submit.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.submit.mc > host.example.com.submit.cf

--- उत्पादन का अंत ---

# cp sendmail.cf sendmail.cf.bak

# cp host.example.com.cf sendmail.cf

# /etc/rc.d/sendmail restart

आशा है कि यह किसी को कुछ सिरदर्द बचाता है।


1

मैं एक प्रेषक व्यक्ति नहीं हूं, लेकिन मुझे विश्वास है कि प्रेषक किसी भी डोमेन /etc/mail/local-host-namesको स्थानीय डोमेन नाम के रूप में संग्रहीत करेगा ।
आप इस फ़ाइल को खाली करने की कोशिश कर सकते हैं, (इसे हटाएं नहीं) और सेंडमेल को पुनः आरंभ करें और देखें कि आप कैसे जाते हैं।

संपादित करें
मेरे द्वारा उल्लिखित फ़ाइलनाम वास्तव में सेट है sendmail.cfऔर आपका local-host-names
देखने के /etc/mail/sendmail.cfलिए सेट नहीं किया जा सकता है

# file containing names of hosts for which we receive email 
Fw/etc/mail/local-host-names    

यह किसी भी तरह से परीक्षण किए गए तथ्यों से नहीं है, बल्कि सिर्फ मैं जोर-शोर से सोच रहा हूं।


हां, यही कारण है कि मैंने पहले ही उल्लेख किया है कि डोमेन स्थानीय-होस्ट-नाम फ़ाइल में नहीं है

क्षमा करें, यह मुझे उन सवालों के जवाब देने के लिए सिखाएगा जो मैंने ठीक से नहीं पढ़े थे।
aussielunix

हाल ही में पैच किए गए सोलारिस 10 सर्वर (100 या इतने पैच किए गए, लेकिन केवल एक मुट्ठी भर समस्या का एक सेट पर यह समस्या थी)। यह तय था! धन्यवाद!
सिग्नल

0

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

हमारे पास इस मुद्दे के साथ कई CentOS सर्वर थे, लेकिन पकड़ यह थी कि हम कभी-कभी मेल पढ़ने में सक्षम होना चाहते थे क्योंकि यह कभी-कभी विभिन्न समस्याओं का निदान करने में मदद कर सकता है।

समाधान केवल क्रॉन जॉब करना था और एक बार में बॉक्स को पोंछना था।

अगर हमें कोई समस्या मिली ... हम क्रोन जॉब (अस्थायी रूप से) पर टिप्पणी करेंगे और सुराग के लिए लॉग और ईमेल के माध्यम से पढ़ेंगे।

बस एक विचार ... और हां के लिए एक त्वरित / आसान समाधान।

यदि नहीं, तो Sendmail.mc फ़ाइल पर एक नज़र डालें और तदनुसार संशोधित करें।


शीघ्र नवीनीकरण:

यह वही नहीं है जो आप पूछ रहे हैं, बल्कि आपको कुछ विचार दे सकते हैं और आपके लिए चीजों पर कुछ प्रकाश डालने में मदद कर सकते हैं:

http://www.pettingers.org/code/sendmail-local.html


खेद है कि मदद नहीं की है। मैं बस इतना करना चाहता हूं कि स्थानीय स्तर पर कोई मेल डिलीवर नहीं हुआ है, फिर भी सेंडमेल ने इसे इतना कठिन क्यों बनाया है?

0

मैं व्यक्तिगत रूप से एक पोस्टफ़िक्स व्यक्ति से अधिक हूं, लेकिन यह बहुत अच्छा लगता है जैसे आपने @ yourdomain.com के लिए मेल प्राप्त करने के लिए भेजने वाले सर्वर को कॉन्फ़िगर किया है। यदि पोस्टफ़िक्स में ट्रांसपोर्ट मैकेनिज़्म के बराबर कोई सेंडमेल है, तो मैं अपने सर्वर के बीच आंतरिक रूप से मेल रूट करने के लिए इसका उपयोग करता हूं।


मैंने इसे इतना कॉन्फ़िगर नहीं किया, क्योंकि यह सेंटोस सेंडमेल इंस्टॉल के लिए डिफ़ॉल्ट था।

0

डोमेन जानकारी से आपके नियम 3 की तरह लगता है। मैंने नीचे कुछ सामान्य समस्या निवारण चरण शामिल किए हैं। यदि यह काम नहीं करता है, तो आपको एक नज़र रखने के लिए मुझे अपना sendmail.cf भेजना होगा।

आउटपुट से, example.com को एक स्थानीय डोमेन के रूप में माना जाता है। nslookup करें:

सेट q = mx

domain.com

यदि यह स्थानीय मशीन का आईपी पता देता है तो आपको अपने डीएनएस को देखने की जरूरत है। यह भी सुनिश्चित करें कि domain.com सूचीबद्ध नहीं है / बनाने के लिए / etc / मेजबानों में देखें।

यह @ domain.com को भी बंद कर देता है, क्या आप user@stackoverflow.com जैसी किसी चीज़ के साथ प्रयास कर सकते हैं, यह देखने के लिए कि क्या यह एक स्थानीय डोमेन के रूप में भी सूचीबद्ध है।

अपनी Sendmail.cf फ़ाइल में Cw मान भी जांचें।


धन्यवाद फ्रेंकोइस, मैं सेंडमेल के इंटर्न को थोड़ा बेहतर समझने लगा हूं। मैंने मशीन के होस्ट नाम को अभी के लिए चीजों के आसपास काम करने के लिए बदलने का फैसला किया है, इसलिए यह अब example.com के बजाय www.example.com है जिसका अर्थ है कि यह user@www.example.com के लिए स्थानीय वितरण करेगा लेकिन user@example.com नहीं - जो इस समय मेरे लिए एक अच्छा समझौता है।

0

शायद नहीं जो आप चाहते हैं, लेकिन एसएसबीटीपी एक आउटबाउंड सर्वर के लिए बहुत अच्छा है, जहां आप एक मेल हब निर्दिष्ट कर सकते हैं।


धन्यवाद, मैं SSMTP को एक रूप दूंगा, फिर भी अभी के लिए Sendmail को ठीक करने की कोशिश कर रहा हूं।

0

यदि आप किसी स्थानीय पते पर वितरण का प्रयास करते समय कोई त्रुटि वापस करना चाहते हैं, तो आप एक्सेस मैप और कुछ का उपयोग कर सकते हैं:

@your.domain error:nouser 550 No such user here

यदि आप चाहते हैं कि ईमेल संदेशों को 'डिलीवर' किया जाए, लेकिन फेंक दिया जाए, तो आप एक पुण्यपूर्ण एंट्री स्थापित कर सकते हैं, जो एलियास @your.domainको देव-नल के लिए "सब कुछ " प्रदान करती है। यह कम से कम " root" स्थानीय रूप से वितरित करने के लिए उपयोगी हो सकता है , क्योंकि यह अक्सर क्रोन नौकरियों आदि से ईमेल रिपोर्ट प्राप्त करने वाला होता है। कुछ इस तरह से प्रयास करें virtusertable:

root@your.domain local:root

@your.domain local:dev-null

एक स्थानीय dev-nullउपनाम के साथ, जो संदेशों को / dev / null में रीडायरेक्ट करता है, इसे रूट ईमेल वितरित करते रहना चाहिए, लेकिन अन्य उपयोगकर्ताओं को दिए गए संदेशों को हटा दें।


0

पावेल द्वारा किया गया फिक्स मेरे लिए काम कर गया, लेकिन सेंडमेलकोफिग सेंटो पर मौजूद नहीं था इसलिए मुझे दौड़ना पड़ा

cd /etc/mail    
m4 /usr/share/sendmail-cf/m4/cf.m4 sendmail.mc > sendmail.cf
service sendmail restart

कॉन्फ़िगरेशन को अपडेट करने के लिए


वह दूसरा नियम मेरे सेंटो पर काम नहीं करता / मौजूद नहीं है
solsol

0

बस इस बात की पुष्टि करते हुए कि पावेल के जवाब से मेरी समान समस्या हल हो गई।

FreeBSD का उपयोग करने वाले किसी भी व्यक्ति के लिए, लेकिन Sendmail cf फ़ाइल ड्रगरी में शामिल होने में कोई दिलचस्पी नहीं है, निम्नलिखित क्रम वह है जो आप पावेल के उदाहरण में दो पंक्तियों को जोड़ने के लिए उपयोग करेंगे:

cd /etc/mail
make conf (generates stock .mc/.cf files with the hostname as part of the 
filename - these will NOT be overriten during an upgrade)
vi hostname.mc
(add the two lines to the .mc file right above the last two "MAILER" lines)
make conf
cp hostname.cf sendmail.cf
/etc/rc.d/sendmail restart

0

मैंने इन सुझावों का पालन किया, और ध्यान दिया कि जिस चरण में पावेल ने उल्लेख किया है, उसे जोड़ना

उदाहरण के लिए "etc / etc / मेजबान को परिभाषित करना। com ऊपर के रूप में एक ही आईपी पते को सौंपा", मूल रूप से मैंने अपने सर्वर आईपी को सर्वरनाम के बाद /etc/hostsफाइल में जोड़ा , और वह यह है।

मेरे लिए ईमेल को Google और मेरे ईमेल पर वापस भेजने के लिए पर्याप्त था।


0

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

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