जब उपसर्ग smtp पर निर्भर हो तो पते से मजबूर होना


28

मैं हमारे AWS EC2 उदाहरणों से ईमेल रिपोर्ट प्राप्त करने का प्रयास कर रहा हूं। हम Exchange Online (Microsoft ऑनलाइन सेवाओं का हिस्सा) का उपयोग कर रहे हैं। मैंने विशेष रूप से SMTP रिले के लिए एक उपयोगकर्ता खाता सेटअप किया है , और मैंने इस सर्वर के माध्यम से संदेश रिले करने के लिए सभी आवश्यकताओं को पूरा करने के लिए पोस्टफ़िक्स सेटअप किया है। हालाँकि, Exchange ऑनलाइन का SMTP सर्वर संदेशों को तब तक अस्वीकार कर देगा जब तक कि उसके पते से प्रमाणीकरण पते (त्रुटि संदेश 550 5.7.1 Client does not have permissions to send as this sender) का मिलान ठीक से न हो जाए ।

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

जवाबों:


38

यह वास्तव में पोस्टफिक्स में कैसे करना है।

यह कॉन्फिगरेशन प्रेषक पतों को स्थानीय मूल, और रिले एसएमटीपी मेल ट्रैफ़िक दोनों से बदलता है:

/etc/postfix/main.cf:

sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps =  regexp:/etc/postfix/sender_canonical_maps
smtp_header_checks = regexp:/etc/postfix/header_check

सर्वर से ही ईमेल से लिफाफे के पते को फिर से लिखें

/ Etc / पोस्टफ़िक्स / sender_canonical_maps:

/.+/    newsender@address.com

SMTP में पते से फिर से लिखें ई-मेल रिले

/ Etc / पोस्टफ़िक्स / header_check:

/From:.*/ REPLACE From: newsender@address.com

यदि आप उदाहरण के लिए स्थानीय रिले smtp सर्वर का उपयोग कर रहे हैं जो आपके सभी बहुक्रियाशील और कई अनुप्रयोगों द्वारा उपयोग किया जाता है तो यह बहुत उपयोगी है।

यदि आप Office 365 SMTP सर्वर का उपयोग करते हैं, तो प्रमाणित उपयोगकर्ता के ईमेल से भिन्न प्रेषक पते वाला कोई भी मेल केवल अस्वीकार कर दिया जाएगा। उपरोक्त कॉन्फिग इसे रोकता है।


धन्यवाद! यह वही दिखता है जो मैं ढूंढ रहा था। दुर्भाग्य से, Office 365 में मेरी पहुँच दो नौकरियों से पहले थी। क्या कोई पुष्टि कर सकता है कि यह उनके लिए काम करता है?
जॉन व्हाइटलॉक

1
हाँ मैं। मैं इसे ऑफिस 365 के साथ उपयोग कर रहा हूं।
जैस्पर

1
sender_canonical_mapsपोस्टफ़िक्स का उपयोग करते समय अस्वीकृत मेल को स्थानीय स्पूल में नहीं बचाया जा सकता है और इसके बजाय इसे रिले के माध्यम से भेजने की कोशिश की जाती है
बेसिन

2
@ जैस्पर एफवाईआई मैंने उपरोक्त विन्यास को बदलने में आसान पाया postconf -e sender_canonical_classes=envelope_sender,header_sender postconf -e sender_canonical_maps=regexp:/etc/postfix/sender_canonical_maps postconf -e smtp_header_checks=regexp:/etc/postfix/header_check
जैकब इवांस

इसी तरह की समस्या थी, प्रेषक_दैनिक_कालास = लिफाफा_सेंदर ने मेरा दिन बचाया!
स्टीफन रिक्टर

13

वैकल्पिक जेनेरिक टेबल एक एड्रेस मैपिंग को निर्दिष्ट करता है जो सर्वर से मेल (डिलीट) होने पर लागू होता है।

यह कैनोनिकल मैपिंग के विपरीत है , जो सर्वर द्वारा मेल प्राप्त होने पर लागू होता है।

(नोट: FROM और TO दोनों पते सामान्य और विहित तालिकाओं के प्रतिस्थापन के लिए मेल खाते हैं।)

सर्वर द्वारा मेल प्राप्त होने पर विहित तालिका का उपयोग करना पहले से ही समझाया गया अन्य उत्तर है।

जब मेल सर्वर का उपयोग करके भेजा जाता है तो आप पते से फिर से लिख सकते हैं smtp_generic_maps

उपसर्ग प्रलेखन के अनुसार :

/etc/postfix/main.cf:
    smtp_generic_maps = hash:/etc/postfix/generic

/etc/postfix/generic:
    user@localdomain.local      account@isp.example.com
    @localdomain.local          wholedomain@isp.example.com

फिर करो:

sudo postmap /etc/postfix/generic
sudo /etc/init.d/postfix reload

संदर्भ:


1
यह काम करता है लेकिन मैं FROM नाम को कैसे बदल सकता हूं?
जोआना मिकालाई

जेनेरिक नक्शों के साथ मेरा अनुभव यह है कि यह FROM और TO दोनों पतों की पहचान करेगा, विहित नक़्शे का उपयोग करने के लिए केवल FROM पते पर बल देने के लिए जैसा कि ओपी ने पूछा है
दर्ज़नों २४16 ’२४

क्या regex का उपयोग करके प्रेषक के मेल और मेल प्रेषक के पते को बदलना संभव है?
WM

@ 13087 FROM और TO दोनों का मिलान कैनोनिकल और जेनेरिक मैप्स द्वारा किया जाएगा। मैंने दो मानचित्रों के बीच के अंतर को समझाने के लिए अपने उत्तर को अपडेट कर दिया है।
जोसेलिन

@WM हाँ, आप regexp का उपयोग कर सकते हैं। मैं यह कोशिश कभी नहीं लेकिन आप शायद परिवर्तन करना होगा hash:करने के लिए regexp:तरह main.cf और उपयोग लाइनों में /foo.*@localdomain.local/ account@example.comसामान्य नक्शे में। इसे मैन पेज में समझाया गया है: postfix.org/generic.5.html
Jocelyn

7

अपडेट: एक आईटी मित्र की सलाह पर, मैं एक क्लाउड मेल सर्वर बनाने के बजाय अपने सभी सर्वरों पर पोस्टफिक्स चला रहा हूं। यहाँ मेरा समाधान अब तक है:

/etc/postfix/main.cf

# output of hostname -f - mail from local users appears to come from here
myhostname = domU-01-02-03-04-05-06.compute-1.internal
# Local delivery - include all 127.0.0.1 aliases from /etc/hosts
mydestination = $myhostname, $mydomain, rest_of_entries_from_hosts
# Needed for address translation to work
myorigin = $mydomain

# Talking to MS Online
# :submission = port 587
relayhost = [smtp.mail.microsoftonline.com]:submission
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =   # Yes, leave empty
smtp_tls_security_level = encrypt
smtp_generic_maps = hash:/etc/postfix/generic

# Enable if you need debugging, but it does leak credentials to the log
#debug_peer_level = 2
#debug_peer_list = smtp.mail.microsoftonline.com

# Only listen on the local interfaces (not the public)
inet_interfaces = localhost

# I left out a bunch of CentOS defaults.  postconf -n is your friend.
# These are included
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

/etc/postfix/sasl_passwd

# Run postmap /etc/postfix/sasl_passwd after editing
# Also, chown root:root; chmod 600
smtp.mail.microsoftonline.com relayer@hosteddomain.com:YourP@ssw0rd

/etc/postfix/generic

# Run postmap /etc/postfix/generic
# I've seen local mail come from either source
# output of dnsdomainname
@compute-1.internal relayer@hosteddomain.com
# output of hostname -f
@domU-01-02-03-04-05-06.compute-1.internal relayer@hosteddomain.com

/etc/aliases

# Run newaliases after changing
# Lot of stuff here. Mostly, just make sure the graph points to root, such as
mailer-daemon:  postmaster
postmaster:     root

# And the important part - your email or distribution group
root:           awsadmins@hosteddomain.com

/etc/passwd

# Sometimes it helps to expand the name, so email comes from 'root at aws host 5'
#  rather than just 'root'
# Was
#root:x:0:0:root:/root:/bin/bash
# Is
root:x:0:0:root on aws host 5:/root:/bin/bash

जिन चीजों से मैं खुश हूं:

  • बहुत सारी मेल रूट पर भेजी जाती हैं, और aliasडायरेक्ट में एक लाइन जो मिलती है।
  • स्थानीय उपयोगकर्ताओं के सभी मेल से आने के लिए अनुवाद किया relayer@hosteddomain.comजाता है, इसलिए यह एमएस ऑनलाइन एसएमटीपी सर्वर के माध्यम से प्राप्त होता है।
  • पोस्टफिक्स में सेंडमेल की तुलना में काफी बेहतर डॉक्यूमेंटेशन है।

जिन चीजों से मैं खुश नहीं हूँ:

  • प्रत्येक होस्ट और कई चरणों के लिए कस्टम परिवर्तन आवश्यक हैं। मैंने मदद करने के लिए एक बैश स्क्रिप्ट लिखी।
  • passwdनाम चाल हमेशा काम नहीं करता है, और यह पता लगाने की एक मेल क्या सर्वर से आ रही है मुश्किल हो सकता है।
  • भेजा गया प्रत्येक मेल लॉग में तीन चेतावनी देता है:
    1. warning: smtp.mail.microsoftonline.com[65.55.171.153] offered null AUTH mechanism list(SMTP सर्वर AUTHपहले STARTTLS, लेकिन AUTH LOGINबाद में एक अशक्त सूची भेजता है )।
    2. certificate verification failed for smtp.mail.microsoftonline.com: num=20:unable to get local issuer certificate (समारोहों के आस-पास कुछ कॉन्फिग विकल्प हैं, लेकिन मुझे यकीन नहीं है कि मेल रिन्यू होने पर मेल डिलीवरी टूट जाती है)
    3. certificate verification failed for smtp.mail.microsoftonline.com: num=27:certificate not trusted (# 2 के रूप में भी)

मेल सर्वर पर मजबूत राय साझा करने के लिए सर्वरफॉल्ट समुदाय का धन्यवाद।


4

आप मानचित्रों की सूची निर्दिष्ट करने के लिए smtpd_sender_login_maps का उपयोग कर सकते हैं : प्रेषक का पता - उपयोगकर्ता।

उदाहरण:

smtpd_sender_login_maps = 
    hash:/etc/postfix/login-map 

/ Etc / पोस्टफ़िक्स / लॉगिन-नक्शा:

mail1@domain    userlogin
mail2@domain    userlogin, otheruser@example.com

यह भेजने के लिए काम करता है, इसे उसी तरह से रिले करने के लिए काम करना चाहिए।


क्या कतार के समय पते से फिर से लिखना उद्देश्य है? मेरी धारणा यह है कि smtpd_sender_login_maps का उपयोग प्रेषकों को अस्वीकार करने के लिए किया जाता है (smtpd_sender_restrictions के भाग के रूप में), न कि ईमेल पते में लॉगिन करने के लिए। इस जगह के साथ, echo "This is a test" | /usr/sbin/sendmail test@example.comअभी भी कतार (और अंततः रिले) मेल से आने के रूप मेंuser@domU-DE-AD-BE-EF-00-01.compute-1.internal
जॉन व्हिटलॉक

मेरा बुरा, मैंने किसी तरह समझा कि आप अपने उपसर्ग को अधिकृत करते हैं। ऐसे मामले में smtpd_sender_login_maps यह सीमित कर देगा कि उपयोगकर्ता किस प्रेषक ऐड्रेस का उपयोग कर सकता है।
रेशम

यह मेरे अंतिम समाधान का हिस्सा हो सकता है। मैं सभी को अस्वीकार कर सकता था, लेकिन सामने के छोर पर एक प्रेषक का पता, और किसी भी फ्रंट एंड के पोस्टमास्टर को सूचित कर सकता था, मुझे यह बताने के लिए कि किसी सेवा को अभी तक ठीक से कॉन्फ़िगर नहीं किया गया है। मैं smtp_generic_maps को देख रहा हूं, यह देखने के लिए कि क्या मैं उन्हें सभी स्थानीय खातों को एक सच्चे पते से संशोधित करने के लिए उपयोग कर सकता हूं। लेकिन, मुझे यह समझने के लिए पोस्टफ़िक्स डॉक्स को फिर से पढ़ने की ज़रूरत है कि यह स्थानीय खातों को कैसे निर्धारित करता है - AWS DNS मेरे अंतर्ज्ञान से मेल नहीं खा रहा है।
जॉन व्हिटलॉक

0

मैं पते से फिर से लिखने के लिए विहित मैपिंग का उपयोग करता हूं , जैसे रूट @ app01 से no-reply@example.com को फिर से लिखना।


3
सर्वर दोष में आपका स्वागत है! हम वास्तव में पसंद करते हैं कि उत्तर सामग्री में सामग्री के लिए संकेत नहीं होते हैं। जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
user9517
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.