मैं एक डेबियन बॉक्स पर Exim4 के Primary_hostname को कैसे बदलूं?


24

कुछ दूरस्थ SMTP सर्वर मैं अपने सर्वर से HELO स्वीकार करने से इनकार करने के लिए मेल वितरित करने का प्रयास कर रहा हूँ:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

जाहिर है, मेरा Exim4 सर्वर localhostअपने FQDN के रूप में भेजता है । नेट और कॉन्फ़िगरेशन फ़ाइलों का एक गुच्छा खोजते हुए, मैंने सीखा है कि HELO के दौरान FQDN के रूप में भेजा गया मान primary_hostnameकॉन्फ़िगरेशन चर से खींचा गया है।

मेरा प्रश्न है: डेबियन सिस्टम में इस चर को बदलने का सही तरीका क्या है ? मुझे लगता है कि मैं Exim4 कॉन्फिग फाइलों पर एक मान को केवल हार्डकोड कर सकता हूं, लेकिन IMHO यह अधिक समझ में आता है अगर मान स्वचालित रूप से /etc/mailnameया कुछ अन्य केंद्रीकृत नाम कॉन्‍फ़िगरेशन के अनुरूप हो ।

मुझे लगता है कि मेरे प्रश्न का उत्तर डेबियन विकि से इस पाठ में मिल सकता है :

एक्हिम द्वारा ईएचएलओ / हेलो में उपयोग किया जाने वाला नाम कॉन्फ़िगरेशन विकल्प से खींचा गया है primary_hostname। डेबियन का एक्सिम 4 डिफ़ॉल्ट कॉन्फ़िगरेशन सेट नहीं होता है primary_hostname। एक्ज़िम तब होस्ट नाम खोजने के लिए () नाम से चूक जाता है। यदि वह कॉल केवल एक घटक देता है, तो पूरी तरह से योग्य होस्ट नाम प्राप्त करने के लिए gethostbyname () या getipnodebyname () का उपयोग किया जाता है।

यदि आपका एक्ज़िम लोकलहोस्ट.लोकेडोमेन के रूप में मदद करता है, तो आपके पास शायद सबसे गलत मिसकैरेज / आदि / होस्ट हैं जो डेबियन इंस्टॉलर के कुछ संस्करणों द्वारा बनाए गए हैं। इस मामले में, कृपया अपने / etc / host को ठीक करें।

दुर्भाग्य से, मैं लिनक्स सर्वर प्रशासन के साथ पर्याप्त रूप से परिचित नहीं हूं कि यह सब क्या है:

जवाबों:


21

आपकी / etc / मेजबान फ़ाइल में कम से कम दो रिकॉर्ड होने चाहिए। पहला रिकॉर्ड फॉर्म का होना चाहिए:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

दूसरा फार्म का होना चाहिए:

127.0.0.1 localhost

आपको यह भी सुनिश्चित करने की आवश्यकता है कि आपकी / etc / hostname फ़ाइल में सर्वर का FQDN है, और जो hostname -fआपके सर्वर को FQDN देता है। यदि आप सुनिश्चित करते हैं कि यह सब सही है, और एक्ज़िम को पुनरारंभ करें, तो आपको इसे हेलो को ठीक से देखना शुरू करना चाहिए।


मैंने एक स्थानीय मशीन के नाम से FQDN में / etc / hostname बदल दिया है। hostname -fअभी भी "लोकलहोस्ट" की रिपोर्ट करता है। आपके उत्तर के बारे में / आदि / मेजबानों का हिस्सा छोटी गाड़ी लगता है - पहला रिकॉर्ड कैसा दिखना चाहिए?
जॉर्न शॉ-रोड

1
हालांकि hostname -fअभी भी "लोकलहोस्ट" रिपोर्ट करता है, ऐसा लगता है कि / etc / hostname में बदलाव ने चाल चली है - मैं अब अपना मेल देने में सक्षम हूं। मैं अभी भी आपकी पोस्ट के लापता हिस्से को देखना चाहूंगा :)
जोर्न शॉ-रोडे

ऊप्स! स्वरूपण झाड़। फिक्स्ड :-)
पॉल लैथ्रॉप

1
/etc/hostnameआमतौर पर डेबियन सिस्टम पर FQDN शामिल नहीं है, केवल लघु होस्टनाम।
जोसिप रॉडिन

ठीक है, पहली पंक्ति /etc/hostsहो सकती है 127.0.0.2 mydomain.com myhostname( 127.0.0.2साथ ही साथ काम करता है 127.0.0.1, क्योंकि लूपबैक एक क्लास ए नेटवर्क है)। आप शायद दो पंक्तियों को एक में जोड़ सकते हैं 127.0.0.1 mydomain.com myhostname localhost, लेकिन localhostक्या इसके लिए एक कैनोनिकल होस्टनाम 127.0.0.1है? यह सब दिया है कि आपके पास होस्टनाम है, न कि आपके मेजबाननाम के रूप में एफक्यूडीएन। इसके अलावा, बदलने से /etc/hostnameतुरंत प्रभाव नहीं पड़ता, आपको मिल गया है hostname myhostname। या सर्वर को पुनरारंभ करें।
x- यूरी

8

यदि आप एकल कॉन्फ़िगरेशन फ़ाइल का उपयोग करते हैं, तो PRIMARY_HOST_NAME चर को वांछित नाम पर सेट करें:

उदाहरण के लिए /etc/exim4/exim4.conf में:

PRIMARY_HOST_NAME = mybox.mydomain.com

या MAIN_HARDCODE_PRIMARY_HOSTNAMEयदि आप स्प्लिट फ़ाइल कॉन्फ़िगरेशन का उपयोग कर रहे हैं तो अपडेट- exim4.conf.conf में सेट करें।

सुरक्षित होने के लिए, एक्सिम को पुनरारंभ करें।


बस ध्यान दें कि सूचीबद्ध होस्ट उद्धरणों में नहीं हो सकता है, अन्यथा एक्ज़िम भेजता है HELO 'mybox.mydomain.com'जो Google को मेल भेजना तोड़ता है, शायद अन्य।
mkomarinski

1
मैं प्रलेखन में इस "PRIMARY_HOST_NAME" चर नाम का कोई उल्लेख नहीं पा सकता हूँ। आपको यह कहां से मिला?
जोसिप रॉडिन

डेबियन पर आपको update-exim4.confकॉन्फ़िगर बदलने के बाद चलना होगा । और इसके बाद आम तौर पर पुनरारंभ की आवश्यकता नहीं होती है।
x- यूरी

... ठीक है, eximआम तौर पर लगता है कि पुनः लोड किए बिना कॉन्फ़िगर करने के लिए परिवर्तन। लेकिन यह यकीनन पुनः लोड करने के लिए सुरक्षित है, क्योंकि मुझे लगता है कि डेमॉन ही पुनः लोड होने तक कॉन्फ़िगरेशन को फिर से नहीं करता है। फिर, आप इसे ध्वनि की तरह बना /etc/exim4/exim4.confसकते हैं जिसमें ऊपर की रेखा हो सकती है , लेकिन जिस क्षण आप फ़ाइल बनाते हैं, /var/lib/exim4/config.autogeneratedउसे अनदेखा कर दिया जाता है ...
x-yuri

... "Forked प्रक्रियाएं Exim SMTP प्राप्त करने या कतार चलाने के लिए शुरू होती हैं, नई कॉन्फ़िगरेशन फ़ाइल का उपयोग करेगी, जबकि मूल मुख्य एक्ज़िम-डेमन अभी भी पुरानी कॉन्फ़िगरेशन फ़ाइल का उपयोग करेगा।" तो, एकल कॉन्फ़िगरेशन फ़ाइल के लिए इसका उपयोग करना सबसे अच्छा है /etc/exim4/exim4.conf.localmacros, विभाजन के लिए /etc/exim4/conf.d/main/000_localmacros( mainडीआईआर में फ़ाइलें पहले संसाधित होती हैं)। और बदलाव करने के बाद update-exim4.conf+ चलाएं systemctl reload exim4
x- यूरी

4

Exim4 की स्थापना के दौरान प्राथमिक होस्टनाम के लिए संकेत दिया गया है। आप कमांड चला सकते हैं

sudo dpkg-reconfigure exim4-config

फिर से संकेतों के माध्यम से जाने के लिए।

जहां तक ​​मुझे पता है, यदि आप पहले से ही 'स्प्लिट कॉन्फ़िगरेशन' (बहुत सारी फाइलों के नीचे /etc/exim4/conf.d) का उपयोग कर रहे हैं और जब संकेत दिया जाए, तो उसके साथ रहने का विकल्प चुनें, dpkg-reconfigure को किसी भी तरह से अधिलेखित नहीं करना चाहिए आपके मौजूदा कॉन्फ़िगरेशन परिवर्तन सेटिंग्स के अलावा यह आपके लिए संकेत देता है, लेकिन, हमेशा की तरह, आपको सुरक्षित होने के लिए पहले बैकअप लेना चाहिए।


2
यह केवल "मेल नाम [जो] एकल, पूरी तरह से योग्य डोमेन नाम (FQDN)" के लिए पूछना चाहिए लगता है। हालाँकि, यह सेटिंग पहले से ही सही है, और HELO अभी भी "लोकलहोस्ट" कह रहा है।
जोर्न शॉ-रोड

आप जिस बारे में बात कर रहे हैं, वह एक मेल नाम है जो आश्चर्य, आश्चर्य, को जाता है /etc/mailnameडिफ़ॉल्ट रूप से इसका उपयोग अयोग्य पते को अर्हता प्राप्त करने के लिए किया जाता है । जो केवल उपयोगकर्ता नाम से युक्त हैं। से डोमेन नाम जोड़कर /etc/mailname। परिणामी पते का उपयोग Fromहेडर में किया जाता है ।
एक्स-यूरी

2

primary_hostnameचर प्रणाली के पूर्ण योग्य डोमेन नाम (FQDN) के अनुसार भर जाता है। डेबियन और संबंधित प्रणालियों पर यह आम तौर पर /etc/hostnameऔर /etc/hostsफ़ाइलों की सामग्री का उपयोग करके बनाया जाता है । होस्ट नाम फ़ाइल कम होस्ट नाम (उदाहरण के लिए शामिल करना चाहिए foo), और मेजबान फ़ाइल एक प्रविष्टि को हल करने को शामिल करना चाहिए fooमें foo.bar.bazअपने डोमेन प्रत्यय (सामान्य रूप से एक DNS प्रविष्टि से मेल खाता) के साथ, यानी होस्ट नाम।

कमांड से आउटपुट hostname(बिना किसी पैरामीटर के) पूर्व को लौटा देगा, और hostname -fआउटपुट बाद में वापस आ जाएगा।

होस्टनाम फ़ाइल आमतौर पर इंस्टॉलेशन पर भरी जाती है, और होस्ट फ़ाइल को डिफ़ॉल्ट लोकलहोस्ट रिकॉर्ड के बगल में एक अन्य रिकॉर्ड के लिए संपादित किया जा सकता है - यह फॉर्म का होना चाहिए:

<IP address> <hostname FQDN> <hostname>

तीन स्तंभों को रिक्त स्थान या टैब द्वारा अलग किया जाना चाहिए, इससे कोई फर्क नहीं पड़ता। IP पता लोकलहोस्ट की तरह 127.0.0.1 हो सकता है, लेकिन होस्टनाम भाग में सिस्टम होस्टनाम से मेल खाता है, और मध्य भाग में डोमेन प्रत्यय के साथ FQDN, यानी होस्टनाम होना चाहिए।

यह सत्यापित करने के लिए कि लाइन काम कर रही है, बस चलाएं hostname -fऔर जांचें कि यह आपके सर्वर का FQDN लौटाता है।

अंत में, Exim को पुनरारंभ करें, जैसे:

sudo service exim4 restart

बाद में आप इसे हेलो को ठीक से देखना शुरू कर दें। इसके चर को चलाकर सत्यापित किया जा सकता है:

/usr/sbin/exim4 -bP primary_hostname

(एनबी: मैंने इसे मूल रूप से 2009 से उत्तर के लिए एक संपादन के रूप में किया था, लेकिन इसे अस्वीकार कर दिया गया था। मैं जिन चीजों को मूल रूप से ठीक कर रहा था, वे हैं: डिफ़ॉल्ट लोकलहोस्ट रिकॉर्ड को दोहराने की कोई आवश्यकता नहीं थी, बस समझाएं कि इसके अलावा क्या होना चाहिए; व्याख्या करें; IP पते का उपयोग किया जा सकता है; FQDN क्या है, इसकी व्याख्या करें। स्वयं को सत्यापित करने का तरीका बताएं।)


/usr/sbin/exim4 -bP primary_hostnameकाम नहीं करता है। आप पोर्ट 25 के ऑथेंटिकेशन चेकर , या किसी अन्य मेलबॉक्स जहां आप मूल देख सकते हैं, को टेस्ट ईमेल भेजकर हेलो होस्टनाम को सत्यापित कर सकते हैं। यहाँ पर और अधिक । अपने उत्तर को अपडेट करने पर विचार करें।
x- यूरी

यह मेरे डेबियन स्थिर मशीन (खिंचाव) पर ठीक काम करता है। क्या आप कृपया समझा सकते हैं कि यह आपके लिए काम नहीं करता है? दस्तावेज़ीकरण पर ध्यान दें exim.org/exim-html-current/doc/html/spec_html/ ... स्पष्ट रूप से कहता है कि डिफ़ॉल्ट helo_dataहै $primary_hostname। डेबियन सिस्टम पर, आप REMOTE_SMTP_HELO_DATAचर का उपयोग करके इसे ओवरराइड कर सकते हैं , लेकिन यदि आप अपना प्राथमिक होस्टनाम ठीक से सेट करते हैं, तो यह आवश्यक नहीं है।
जोसिफ रोडिन

मेरा मानना ​​है कि मैंने कोशिश की और इसने तर्क न लेने की शिकायत की। लेकिन अब इसे पुन: पेश नहीं कर सकते, इसलिए कभी बुरा मत मानना, मेरा बुरा। "यदि आपने अभी-अभी अपना प्राथमिक होस्टनाम ठीक से सेट किया है," के बारे में, यह आमतौर पर स्वीकार नहीं किया जाता है कि होस्टनाम को कुछ भी हल करना होगा। तो चलो कहते हैं "अगर आप hostname सेट करते हैं तो जिस तरह से एक्सिम आपको उम्मीद करता है ..." और इसे उस पर छोड़ दें :)
x-yuri

मुझे खेद है, लेकिन मुझे नहीं लगता कि अंकित मूल्य पर एक दशक से अधिक लंबे डेबियन-डेवेल चर्चा से कोई तदर्थ निष्कर्ष निकालना बुद्धिमानी है। यदि आप इस तरह की चीज़ के बारे में कुछ नीति दस्तावेज़ की ओर इशारा करते हैं तो यह अधिक उपयोगी होगा।
जोसिप रॉडिन

यही सबसे अच्छा मैं पा सकता हूं। यदि आप कुछ बेहतर या अपने शब्दों का प्रमाण पा सकते हैं, तो मुझे खुशी होगी अगर आप मुझे बताएँगे। अभी के लिए मैं केवल इतना कह सकता हूं कि इन दिनों भी ऐसे लोग हैं जो होस्टनाम नहीं डालते हैं /etc/hosts। और सभी मैं पूछता हूं कि जो उचित नहीं है, उसे आम तौर पर स्वीकार नहीं किया जाना चाहिए।
x- यूरी

1

/ etc / मेजबान में समान स्ट्रिंग जोड़ने के बाद, hostname -f आपके FQDN को लौटा देगा


दूसरे शब्दों में, myhostnameको जाता है /etc/hostname(के बाद hostname myhostname)। और 127.0.0.1 mydomain.com myhostname.com localhostजाता है /etc/hosts। प्लस eximकेवल मामले में पुनः लोड करें ।
एक्स-यूरी

0

मेरी भी यही समस्या है। मुझे मेल होस्टनाम बदलने की आवश्यकता है, क्योंकि कुछ ईमेल विफल हो जाते हैं, जब उन्हें भेजा गया था। इस त्रुटि के साथ:

host receiver.server.com [200.200.200.200]: 550 <info@sender.server.com>: Sender address rejected: Domain not found

इसलिए मैं इसे /etc/exim.configपरम प्राथमिक_होस्टनेम में बदल देता हूं

इस फाइल का कुछ कोड:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3

हाह, यह पोस्ट मुझे "Primary_hostname" के साथ मदद करता है और अब मेरा

0

WHM में गोटो एक्सिम कॉन्फ़िगरेशन मैनेजर -> उन्नत संपादक

"अतिरिक्त कॉन्फ़िगरेशन सेटिंग्स जोड़ें" (एक बड़ा नीला बटन) मिलने तक स्क्रॉल करें और इसे क्लिक करें।

नई पंक्ति में, [Primary_hostname] = [mydomain.com] जोड़ें

नीचे स्क्रॉल करें और सहेजें पर क्लिक करें।

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