मैं कई दिनों से इस समस्या से जूझ रहा था और लगता है कि सारी समस्याएँ समाप्त हो गई हैं, इसलिए मुझे लगा कि मैं किसी भी मदद के लिए समुदाय तक पहुँचूँगा।
मेल अवसंरचना में 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
एलडीएपी में कई उपनामों के साथ एक वैध उपयोगकर्ता का उदाहरण
ऐसा लगता है कि मैं बहुत करीब हूँ, लेकिन शायद आँखों का एक और सेट इस समस्या को हल करने के लिए कुछ अंतर्दृष्टि प्रदान कर सकता है। किसी इनपुट की काफी सराहना की जाती है।
अद्यतन १
मैं हल करने में कामयाब 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
मुझे आशा है कि यह सभी सुराग प्रदान कर सकते हैं कि क्या गायब हो सकता है या गड़बड़ हो सकता है ताकि उपयोगकर्ता लॉगिन और मेल भेजने / प्राप्त करने में सफल हो।
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"