पोस्टफ़िक्स वर्चुअल कॉन्फिगरेशन में LDAP का उपयोग करने पर ईमेल 'उपयोगकर्ता अज्ञात' के साथ ईमेल बाउंस हो जाते हैं


1

मैं कई दिनों से इस समस्या से जूझ रहा था और लगता है कि सारी समस्याएँ समाप्त हो गई हैं, इसलिए मुझे लगा कि मैं किसी भी मदद के लिए समुदाय तक पहुँचूँगा।

मेल अवसंरचना में OpenLDAP को शुरू किए बिना, पोस्टफिक्स और डोवॉटॉट अच्छी तरह से काम कर रहे हैं। पिछले कई दिनों से पोस्टफिक्स एमटीए को वर्चुअल एलडीएपी सेटिंग्स के साथ कॉन्फ़िगर किया गया था, लेकिन ईमेल में बाउंस की स्थिति दिखाई दे रही है, भले ही पोस्टफिक्स इन वास्तविक मेल उपयोगकर्ताओं को पढ़ और जान सकता है, मेल उपनाम और वर्चुअल डोमेन मौजूद हैं। यहाँ मेरे Postfix main.cf में उचित आभासी सेटिंग्स हैं।

नोट : केवल 3 वर्चुअल LDAP कॉन्फिगर हैं

virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_minimum_uid = 5000 virtual_mailbox_domains = ldap:/etc/postfix/ldap-virtual-domains.cf virtual_mailbox_maps = ldap:/etc/postfix/ldap-vmailbox.cf virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf virtual_mailbox_limit = 512000000 virtual_mailbox_base = /home/vmail transport_maps = hash:/etc/postfix/transport

यहां प्रत्येक वर्चुअल LDAP फ़ाइल की सामग्री दी गई है।

ldap-virtual-domains.cf

server_host = ldap://ldap.example.net/ search_base = ou=Domains,dc=example,dc=net version = 3 bind = no query_filter = (&(ObjectClass=dNSDomain)(dc=%s)) result_attribute = dc

ldap-vmailbox.cf

server_host = ldap://ldap.example.net/ search_base = ou=Mail,dc=example,dc=net version = 3 bind = no query_filter = (&(objectclass=inetOrgPerson)(mail=%s)) result_attribute = mail

ldap-aliases.cf

server_host = ldap://ldap.example.net/ search_base = ou=Mail,dc=example,dc=net version = 3 bind = no query_filter = (&(objectclass=inetLocalMailRecipient)(mailLocalAddress=%s)) result_attribute = mail

पोस्टफिक्स को सत्यापित करना सभी 3 वर्चुअल LDAP फ़ाइलों को पढ़ और प्रोसेस कर सकता है

ldap-virtual-domains.cf:

postmap -q example.net ldap:/etc/postfix/ldap-virtual-domains.cf example.net postmap -q example.org ldap:/etc/postfix/ldap-virtual-domains.cf example.org postmap -q example.com ldap:/etc/postfix/ldap-virtual-domains.cf example.com

ldap-vmailbox.cf:

postmap -q user1@example.net ldap:/etc/postfix/ldap-vmailbox.cf user1@example.net postmap -q user2@example.net ldap:/etc/postfix/ldap-vmailbox.cf user2@example.net postmap -q user3@example.net ldap:/etc/postfix/ldap-vmailbox.cf user3@example.net

ldap-aliases.cf:

postmap -q alias1@example.org ldap:/etc/postfix/ldap-aliases.cf user1@example.net postmap -q alias2@example.org ldap:/etc/postfix/ldap-aliases.cf user2@example.net

यह मैं मेल लॉग में देखता हूं:

26 अक्टूबर 16:54:17 example.net पोस्टफिक्स / सफाई [2789]: 3D26A105CC: जानकारी: हेडर विषय: [REDACTED] से वर्चुअल LDAP का परीक्षण; http://tony@macbook-air.moon से=user1@example.net प्रोटो = ESMTP हीलो = मैकबुक-एयर.moon
Oct 26 16:54:17 example.net postfix / cleanup [2789]: 3D26A105CC: message-id=20151026235417.139081C7F821@macbook-air.moon
26 अक्टूबर 16:54:17 example.net opendkim [11877]: 3D26A105CC: [कम] आंतरिक नहीं
26 अक्टूबर 16:54:17 example.net opendkim [11877]: 3D26A105CC: प्रमाणित नहीं
26 अक्टूबर 16:54:17 example.net opendkim [11877]: 3D26A105CC: कोई हस्ताक्षर डेटा नहीं
Oct 26 16:54:17 example.net postfix / qmgr [26221]: 3D26A105CC: from@tony@macbook-air.moon, size = 571, nrcpt = 1 (कतार सक्रिय)
26 अक्टूबर 16:54:17 example.net पोस्टफिक्स / smtpd [2461]: [REDACTED] ehlo = 1 मेल = 1 rcpt = 1 डेटा = 1 छोड़ = 1 कमांड = 5 से डिस्कनेक्ट करें
26 अक्टूबर 16:54:17 example.net पोस्टफ़िक्स / पाइप [2791]: 3D26A105CC: touser1@example.net, रिले = dovecot, देरी = 0.12, देरी = 0.08 / 0.01 / 0 / 0.02, dsn = 5.1.1 , स्थिति = बाउंस (उपयोगकर्ता अज्ञात)
26 अक्टूबर 16:54:17 example.net पोस्टफिक्स / क्लीनअप [2789]: 55F2B1080A: message-id=20151026235417.55F2B1080A@mail.example.net
26 अक्टूबर 16:54:17 example.net postfix / qmgr [26221]: 55F2B1080A: = से, आकार = 2460, nrcpt = 1 (कतार सक्रिय)
26 अक्टूबर 16:54:17 example.net पोस्टफिक्स / बाउंस [2793]: 3D26A105CC: प्रेषक नॉन-डिलीवरी अधिसूचना: 55F2B1080A
26 अक्टूबर 16:54:17 example.net पोस्टफिक्स / qgrgr [26221]: 3D26A105CC: हटा दिया गया
26 अक्टूबर 16:54:17 example.net पोस्टफिक्स / smtp [2794]: 55F2B1080A: tott@macbook-air.moon, रिले = कोई नहीं, देरी = 0.02, देरी = 0 / 0.01 / 0/0, dsn = 5.4 .4, स्थिति = बाउंस (होस्ट या डोमेन नाम नहीं मिला। नाम के लिए सेवा त्रुटि = macbook-air.moon प्रकार = A: होस्ट नहीं मिला)

LDAP में मौजूद मान्य मेल खाते लॉग में यह दर्शाते हैं: Oct 26 16:56:14 example.net postfix/pipe[3592]: 457871080A: to=vmail@example.net, orig_to=montest@example.net, relay=dovecot, delay=0.03, delays=0.01/0/0/0.02, dsn=5.1.1, status=bounced (user unknown)

vmail@example.net LDAP में एक वास्तविक मेल पता है और montest@example.net LDAP में एक वास्तविक उपनाम है। पोस्टफ़िक्स को मान्यता देते समय उन्हें खोजने में कोई समस्या नहीं है postmap -q

यहाँ पूरा पोस्टफिक्स कॉन्फिग है:

alias_database = $ alias_maps
alias_maps = hash: / etc / उपसर्ग / उपनाम
append_dot_mydomain = नहीं
टूटा_साल_थु_लगता = हाँ
command_directory = / usr / बिन
संगतता_लेवल = २
daemon_directory = / usr / lib / पोस्टफ़िक्स / बिन
data_directory = / var / lib / postfix
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command = PATH = / bin: / usr / bin: / usr / स्थानीय / बिन: / usr / X11R6 / bin ddd $ daemon_directory / $ process_name $ process_id & sleep 5
हैडर_चेक = रीगेक्स: / आदि / पोस्टफिक्स / हैडर_चेक
होम_मेलबॉक्स = मेल्डिर /
html_directory = नहीं
inet_interfaces = सभी
inet_protocols = ipv4
mail_owner = पोस्टफ़िक्स
mail_spool_directory = / var / स्पूल / मेल
मेलबॉक्स_कम = / usr / lib / dovecot / उद्धार
mailq_path = / usr / bin / mailq
manpage_directory = / usr / शेयर / आदमी
message_size_limit = 20480000
meta_directory = / etc / पोस्टफ़िक्स
milter_default_action = स्वीकार
milter_protocol = 2
भ्रांति =
mydomain = example.net
myhostname = mail। $ mydomain
mynetworks = 127.0.0.0/8 10.8.0.0/24 192.168.128.0/17 [SERVER IP REDACTED] [:: 1] / 128 [2600: 3c01 ::] / 64 [fe80 ::] / 64
myorigin = $ mydomain
newaliases_path = / usr / bin / newaliases
non_smtpd_milters = inet: 127.0.0.1: 8891
queue_directory = / var / स्पूल / पोस्टफ़िक्स
readme_directory = / usr / शेयर / डॉक्टर / पोस्टफ़िक्स
प्राप्तकर्ता_दिलीमित्र = +
sample_directory = / etc / पोस्टफ़िक्स / नमूना
sendmail_path = / usr / bin / sendmail
setgid_group = पोस्टड्रॉप
shlib_directory = / usr / lib / पोस्टफ़िक्स
smtp_tls_mandatory_protocols =! SSLv2,; SSLv3
smtp_tls_note_starttls_offer = हाँ
smtp_tls_protocols =! SSLv2, SSLv3
smtp_tls_security_level = हो सकता है
smtpd_error_sleep_time = 1s
smtpd_hard_error_limit = 20
smtpd_milters = inet: 127.0.0.1: 8891
smtpd_recipient_restrictions = perm_sasl_authenticated, perm_mynetworks, reject_unauth_destination, check_policy_service inet: mail.example.net: 12340
smtpd_sasl_auth_enable = हाँ
smtpd_sasl_authenticated_header = हाँ
smtpd_sasl_local_domain =
smtpd_soft_error_limit = 10
smtpd_tls_CAfile = /etc/postfix/ssl/PositiveSSL.ca-bundle
smtpd_tls_cert_file = /etc/postfix/ssl/STAR_example_net_rt
smtpd_tls_key_file =/etc/postfix/ssl/key.pem
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_protocols =! SSLv2; SSLv3
smtpd_tls_protocols =! SSLv2,; SSLv3
smtpd_tls_received_header = हाँ
smtpd_tls_security_level = हो सकता है
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = हाँ
tls_random_source = dev: / dev / urandom
transport_maps = hash: / etc / पोस्टफिक्स / परिवहन
Unknown_local_recipient_reject_code = 550
virtual_alias_maps = ldap: /etc/postfix/ldap-aliases.cf
virtual_gid_maps = स्थिर: 5000
virtual_mailbox_base = / home / vmail
virtual_mailbox_domains = ldap: /etc/postfix/ldap-virtual-domains.cf
virtual_mailbox_limit = 512000000
virtual_mailbox_maps = ldap: /etc/postfix/ldap-vmailbox.cf
virtual_minimum_uid = 5000
virtual_transport = dovecot
virtual_uid_maps = static: 5000

एलडीएपी में कई उपनामों के साथ एक वैध उपयोगकर्ता का उदाहरण

LDAP उपयोगकर्ता

ऐसा लगता है कि मैं बहुत करीब हूँ, लेकिन शायद आँखों का एक और सेट इस समस्या को हल करने के लिए कुछ अंतर्दृष्टि प्रदान कर सकता है। किसी इनपुट की काफी सराहना की जाती है।

अद्यतन १

मैं हल करने में कामयाब status=bounced (user unknown)के मान बदलकर त्रुटियों virtual_transportमें main.cf से

virtual_transport = dovecot

सेवा

virtual_transport = lmtp:unix:private/dovecot-lmtp

में master.cf मैं इस लाइन बदल

dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

इस लाइन के लिए

dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}

मैंने पोस्टमास्टर @example.net नामक LDAP में एक नया उपयोगकर्ता जोड़ा है और एक तेज़ postmap -qसाबित होता है कि पोस्टफ़िक्स पोस्टमास्टर @example.net के बारे में जानता है, लेकिन फिर मुझे यह त्रुटि दिखाई देती है।

Oct 26 23:46:46 example.net dovecot: quota-status(postmaster@example.net): Error: User initialization failed: Namespace '': stat(/home/vmail/postmaster/.Maildir) failed: Permission denied (euid=5003() egid=5000(vmail) missing +x perm: /home/vmail, dir owned by 5000:5000 mode=0700) Oct 26 23:46:46 example.net postfix/smtpd[25851]: NOQUEUE: reject: RCPT from[REDACTED]: 450 4.7.1 : Recipient address rejected: Invalid user settings. Refer to server log for more information.; from= to= proto=ESMTP helo=

थोड़ा और अधिक शोध के बाद मैंने अपने डवकोट एलडीएपी कॉन्फिग को देखना शुरू किया, विशेष रूप से डोवेकॉट-एलएडीपी.कॉन्फ़.एक्सएक्स।

hosts = ldap.example.net auth_bind = no ldap_version = 3 base = ou=Mail,dc=example,dc=net deref = never scope = subtree user_attrs = uidNumber=uid,gidNumber=gid,mailHomeDirectory=home,quotaBytes=quota_rule=*:bytes=%$ user_filter = (&(objectclass=inetOrgPerson)(mail=%u)) pass_attrs = mail=user,userPassword=password pass_filter = (&(objectClass=posixAccount)(uid=%u)) default_pass_scheme = SSHA

मैं अब user unknownमेल लॉग में नहीं देखता , लेकिन मुझे असफल लॉगिन प्रयास दिखाई देते हैं। मुझे यकीन नहीं है, लेकिन लगता है कि यह user_attrsमेरे dovecot-ldap.conf.ext से या किसी अन्य LDAP विशेषताओं से हो सकता है ।

Oct 27 00:01:19 example.net dovecot: imap-login: Disconnected (auth failed, 1 attempts in 2 secs): user=<vmail@example.net>, method=PLAIN, rip=192.168.176.128, lip=192.168.176.128, TLS: Disconnected, session=<w/r1pBAj0YjAqLCA>

अद्यतन २

मैंने OpenLDAP में एक व्यवस्थापक खाता बनाया, जिसे Dovecot कहा जाता है और इसे readइस पंक्ति के साथ एक्सेस दिया

by dn="uid=dovecot,ou=System,dc=example,dc=net" read

Dovecot अब userPassword विशेषता को पढ़ने में सफल है। यहां बताया गया है कि dovecot-ldap.conf.extबाध्यकारी सक्षम के साथ कैसा दिखता है।

hosts = ldap.example.net auth_bind = yes auth_bind_userdn = uid=%u,ou=Mail,dc=example,dc=net dn = uid=dovecot,ou=System,dc=example,dc=net dnpass = password ldap_version = 3 base = ou=Mail,dc=example,dc=net deref = never scope = subtree user_filter = (&(objectclass=inetOrgPerson)(mail=%u)) pass_filter = (&(objectclass=inetOrgPerson)(mail=%u)) default_pass_scheme = SSHA user_attrs = uidNumber=uid,gidNumber=gid,mailHomeDirectory=,quotaBytes=quota_rule=*:bytes=%$ pass_attrs = mail=uid,userPassword=password

जब मैं vmail खाते में लॉग इन करने की कोशिश कर रहा हूं तो मुझे लगता है कि Dovecot को userdb से उपयोगकर्ता नहीं मिला

Oct 27 20:42:47 example.net dovecot: auth: Error: ldap(vmail,192.168.176.128,<8C7h/CEjo5DAqLCA>): user not found from userdb Oct 27 20:42:47 example.net dovecot: imap: Error: Authenticated user not found from userdb, auth lookup id=4111597569 (client-pid=26724 client-id=1) Oct 27 20:42:47 example.net dovecot: imap-login: Internal login failure (pid=26724 id=1) (internal failure, 1 successful auths): user=<vmail>, method=PLAIN, rip=192.168.176.128, lip=192.168.176.128, mpid=26726, secured, session=<8C7h/CEjo5DAqLCA>

यदि मैं user_filterविशेषता को नीचे की पंक्ति में बदलता हूं तो मैं सफलतापूर्वक लॉगिन कर सकता हूं ।

user_filter = (&(objectClass=posixAccount)(uid=%u))

लेकिन फिर संदेश फिर से उछलने लगते हैं।

Oct 27 20:46:09 example.net postfix/smtp[27702]: ECA4F10848: to=<tony@macbook-air.moon>, relay=none, delay=0.16, delays=0.01/0.01/0.14/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=macbook-air.moon type=A: Host not found)

Oct 27 20:46:08 example.net postfix/lmtp[27698]: E0994102FA: to=<tony@example.net>, relay=example.net[private/dovecot-lmtp], delay=0.06, delays=0.05/0.01/0/0, dsn=5.1.1, status=bounced (host mail.example.net[private/dovecot-lmtp] said: 550 5.1.1 <tony@example.net> User doesn't exist: tony@example.net (in reply to RCPT TO command))

इस बिंदु पर मुझे लगता है कि समस्या उपयोगकर्ता और फ़िल्टर पास हो सकती है, लेकिन मैं वास्तव में अब और नहीं जानता। यह Dovecot का मौजूदा Dovecot config dovecot -nऔर LDAP भाग है: http://ix.io/lEE

मुझे आशा है कि यह सभी सुराग प्रदान कर सकते हैं कि क्या गायब हो सकता है या गड़बड़ हो सकता है ताकि उपयोगकर्ता लॉगिन और मेल भेजने / प्राप्त करने में सफल हो।

जवाबों:


1
pass_attrs = mail=user,userPassword=password

शायद गलत है। इसका अर्थ है "उपयोगकर्ता नाम के रूप में मेल का उपयोग करें ldap विशेषता नाम और पासवर्ड विशेषता नाम के रूप में userPassword"।

मेरा मानना ​​है कि इसे पढ़ना चाहिए:

pass_attrs = mail=uid,userPassword=password

आप इसे OpenLDAP लॉग देखकर देख सकते हैं।

मुझे इस पर भी संदेह है:

user_attrs = mailHomeDirectory=home

क्योंकि एक अर्थपूर्ण टकराव है। LDAP विशेषता homeका उपयोग यूनिक्स होम डायर के लिए किया जाता है, लेकिन अब इसका उपयोग मेलडीर स्थान के रूप में किया जाता है। क्या आप इसे दोहरा सकते हैं?


आपकी प्रतिक्रिया के लिए धन्यवाद। म pass_attrs= बनी mail=uid,userPassword=password। मैंने भी mailHomeDirectoryपूरी तरह निकाल दिया । मैंने OpenLDAP डीबग सक्षम किया और यह देखा। 562f2fa3 send_search_entry: conn 1000 access to attribute userPassword, value #0 not allowed 562f2fa3 conn=1000 op=2 ENTRY dn="uid=tony,ou=mail,dc=example,dc=net"
रूटफिल्ड ऑक्ट

ऐसा लगता है कि dovecot userPassword विशेषता को पढ़ने के लिए अधिकृत नहीं है। ऐसा इसलिए है क्योंकि यह एक अनधिकृत बाँध करता है। उपयोगकर्ता को गैर-प्रवेश न करने के लिए Password नहीं दिखाया गया है। कृपया OpenPAP पर एक dovecot व्‍यवस्‍थापक बनायें जिसमें userPassword पर विशेषाधिकारों को पढ़ें और इसे बाइंड के लिए उपयोग करें।
473183469

इसे स्विच करना आसान हो सकता है Passdb LDAP with authentication binds। शायद एक सरल bind = yesचाल चलेंगे।
Oct३१ 27३४

धन्यवाद। मैंने readएक्सेस के साथ OpenLDAP के व्यवस्थापक के रूप में dovecot को जोड़ा । ऐसा प्रतीत होता है कि Dovecot उपयोगकर्ताओं के लिए सफलतापूर्वक userPassword प्रसंस्करण कर रहा है।
रूटफिल्ड

0

इसका समाधान कर लिया गया है। में dovecot-ldap.conf.extमैंने निम्नलिखित फिल्टरों को बदल दिया।

user_attrs = user_filter = (&(objectclass=inetOrgPerson)(uid=%n)(mailEnabled=TRUE))

Dn लुकअप के लिए उपयोग किया जाता है

pass_attrs = mail=user,userPassword=password pass_filter = (&(objectclass=inetOrgPerson)(uid=%n))

पूर्ण dovecot-ldap.conf.ext config

hosts = ldap.example.net auth_bind = yes dn = uid=dovecot,ou=System,dc=example,dc=net dnpass = PASS ldap_version = 3 base = ou=Mail,dc=example,dc=net deref = never scope = subtree default_pass_scheme = SSHA user_attrs = user_filter = (&(objectclass=inetOrgPerson)(uid=%n)) pass_attrs = mail=user,userPassword=password pass_filter = (&(objectclass=inetOrgPerson)(uid=%n))

मैं भी अद्यतन करने के लिए किया था mail_locationमें /etc/dovecot/conf.d/10-mail.conf को

mail_location = maildir:%Lh/Maildir/:INDEX=%Lh/Maildir/

अंतिम अनुमति जाँच

  • सत्यापित के /home/vmail/*पास उचित उपयोगकर्ता / समूह अनुमतियां हैंvmail:vmail
  • सत्यापित uidNumber और gidNumber 5000 है

Dovecot Local Delivery Agent अब ईमेलों को संसाधित करने और उन्हें /home/vmail/user@domainनिर्देशिकाओं में संग्रहीत करने में सक्षम है ।

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