रूट के मेल को पोस्टफिक्स करें


13

मेरे पास एक Ubuntu सर्वर है जो पोस्टफ़िक्स चल रहा है। यह मेरे डोमेन के लिए मेल सर्वर नहीं है।

जब भी कोई क्रॉन जॉब रूट के लिए चलता है, आउटपुट मेल को स्थानीय रूप से डिलीवर नहीं किया जाता है, इसके बजाय यह मुख्य मेल सर्वर से root@mydomain.com पर भेजा जाता है। यह वह नहीं है जिसकी मुझे चाहत है।

मैं चाहता हूं कि रूट के लिए मेल या तो स्थानीय स्तर पर पहुंचाई जाए या किसी अन्य ईमेल @anotherdomain.com को भेज दी जाए।

मैं दोनों को संशोधित करने की कोशिश की है ~root/.forwardऔर /etc/aliases(और newaliases चल रहा है), लेकिन कुछ भी नहीं है (मुझे लगता है कि इन फ़ाइलों को केवल जाँच की जाती है जब पोस्टफ़िक्स की कोशिश करता स्थानीय स्तर पर मेल वितरित करने) में मदद करता है।

मैं क्या कर सकता हूँ?

यह है /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = linux1.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux1.mydomain.com, localhost.linux1.mydomain.com, localhost
relayhost = my.isps.relayhost.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

संपादित करें:

रूट पर मेल भेजते समय, यह इस प्रकार है /var/log/mail.log:

Mar  7 09:39:17 linux1 postfix/pickup[31381]: F3B9C98025E: uid=1000 from=<ct>
Mar  7 09:39:18 linux1 postfix/cleanup[31556]: F3B9C98025E: message-id=<20130307083917.F3B9C98025E@linux1.mydomain.com>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<ct@mydomain.com>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<root@mydomain.com>, orig_to=<root>, relay=my.isps.relayhost.com[<IP address omitted>]:25, delay=0.72, delays=0.19/0.02/0.27/0.25, dsn=2.0.0, status=sent (250 Ok: queued as A97F5D8126)
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: removed

"Ct" नाम मेरा उपयोगकर्ता नाम है। मैंने इस आदेश के माध्यम से उपरोक्त पाठ उत्पन्न किया:

echo test | mail -s test root

की सामग्री /etc/mailnameहै:

mydomain.com

की सामग्री /etc/aliasesहै:

root: anothermail@anotherdomain.com
postmaster:    root

जहाँ एक औरमेल @anotherdomain.com है, जहाँ मैं चाहूँगा कि रूट का मेल आगे भेजा जाए।

सामग्री /etc/hostsवास्तव में मुझे थोड़ा आश्चर्यचकित करती है:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

जहाँ "mylinux" एक होस्ट ऑपरेटिंग सिस्टम का होस्टनाम है जिसके तहत linux1 एक वर्चुअल मशीन के रूप में चलता है। मुझे यकीन नहीं है कि वहां "माइलिनक्स" कैसे मिला। (लेकिन क्या यह वास्तव में मेरी समस्या का कारण हो सकता है?)


क्या आप हमें अपने उपसर्ग लॉग प्रदान कर सकते हैं जब आप रूट को एक मेल भेजते हैं?
डोम

मैंने मूल पोस्ट में एक संपादन में ऐसा किया है।
oz1cz

क्या आप हमें अपनी / etc / mailname और / etc / उपनाम फाइल दे सकते हैं? जाँच करें कि / etc / hosts linux1.mydomain.com को 127.0.1.1 सौंपा शामिल
Dom

मैंने जानकारी को मूल पोस्ट में जोड़ दिया है।
oz1cz

आपके लॉग के अनुसार, मेल को आपके isp smtp रिले में सही तरीके से भेजा गया है। मैं समस्या के बारे में किसी भी सुराग (एंटीस्पैम, त्रुटि, ...) के लिए my.isps.relayhost.com [<IP पता छोड़ दिया>] लॉग की जांच करने के लिए उनसे (isp) पूछूंगा।

जवाबों:


13

उपयोग के रूप में, अपने लॉग की जाँच करें।

आपके मामले में, पोस्टफिक्स डेमॉन को लगता है कि मेल इसके लिए नहीं है और इसका उपयोग किए बिना भेजता है /etc/aliases

पहले अपनी /etc/hostsफ़ाइल की जाँच करें : इसमें आपकी मशीन का नाम 127.0.1.1इस तरह होना चाहिए :

127.0.1.1  linux1.mydomain.com  linux1

अपना /etc/mailnameभी जांचें , और यह सुसंगत होना चाहिए।

चेक आपके /etc/aliasesजड़ (उपयोगकर्ता) किसी अन्य उपयोगकर्ता को भेजी जाती है, तो देखने के लिए, और फिर से करें newaliasesआदेश।

और यह काम करना चाहिए!


क्या ऐसा होना चाहिए 127.0.0.1?
नैट

आपके पास 127.0.0.0/8 में कोई भी पता हो सकता है, इसलिए 127.0.0.1 भी अच्छी तरह से काम करता है
डोम

मुझे इसी तरह की समस्या थी, जबकि मैं केवल मेल भेजने के लिए एक स्मार्स्टोस्ट रिले का उपयोग करना चाहता था: "मायहोस्टनेम" को "लोकलहोस्ट" होना था। कुछ और उपनाम फ़ाइल को छोड़ दिया।
एलेक्स

8

यदि mydestinationखाली है या इसमें शामिल नहीं है, $myhostnameतो /etc/aliasesइसे नजरअंदाज कर दिया जाएगा क्योंकि पोस्टफ़िक्स को लगता है कि ईमेल स्थानीय वितरण नहीं है और इसलिए स्थानीय उपनामों को लागू नहीं करेगा। इसलिए, mydestinationडिफ़ॉल्ट पर छोड़ दें ( postconf -d mydestinationया इसे हटा दें main.cf) और लॉग to=<...>को आपके उपनाम पते के रूप में दिखाना चाहिए ।


मैं एक बाहरी मेल सर्वर का उपयोग कर रहा हूं और mydestinationखाली होना चाहिए। अन्यथा कोई मेल नहीं भेजा जाता है।
कॉर्नियरी

1

कुछ परिस्थितियों में, (यानी जहां सभी मेल किसी बाहरी सिस्टम से रिलेटेड हो जाते हैं), MAILTOरूट के क्रॉस्टैब में वेरिएबल को केवल एक वास्तविक ईमेल एड्रेस पर सेट करना आसान होता है । यह रूट करने के लिए पारंपरिक वितरण को बहुत अधिक बाईपास करना चाहिए और बस इसे वहां जाना चाहिए जहां आप चाहते हैं।

# Root's crontab
MAILTO=someone@example.com
0 0 * * * /usr/bin/somescript

0

/root/.forwardपोस्टफ़िक्स डेमॉन द्वारा खोलने के साथ कुछ समस्या लगती है , कम से कम कठोर प्रणाली पर (मुझे इसमें खुदाई नहीं हुई)। बावजूद:

# ls -ld / /root /root/.forward
dr-xr-xr-x. 18 root root  236 Dec  4 00:02 /
dr-xr-x--x. 13 root root 4096 Jan  8 17:45 /root
-rw-r--r--.  1 root root   30 Jan  8 14:51 /root/.forward

उपसर्ग डेमॉन का बच्चा उपयोग करने में सक्षम नहीं है।

7603  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 16
7603  fstat(16, {st_mode=S_IFREG|0644, st_size=1227, ...}) = 0
7603  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f86854fb000
7603  read(16, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1227
7603  close(16)                         = 0
7603  munmap(0x7f86854fb000, 4096)      = 0
7603  geteuid()                         = 89
7603  getegid()                         = 89
7603  geteuid()                         = 89
7603  setresuid(-1, 0, -1)              = 0
7603  setresgid(-1, 0, -1)              = 0
7603  setgroups(1, [0])                 = 0
7603  lstat("/root/.forward", 0x7ffc03f84750) = -1 EACCES (Permission denied)

मैं इस पर खुदाई करने के लिए समय नहीं था ... के लिए प्रवेश में जोड़ देने /etc/aliasesके बाद newaliasesकाम करता है ठीक।

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