ฉันกำลังตั้งค่าเซิร์ฟเวอร์เมลบน Ubuntu ตาม: https://help.ubuntu.com/community/Postfix

ปัจจุบันฉันสามารถส่งและรับอีเมลจากเซิร์ฟเวอร์ได้ อย่างไรก็ตาม การพยายามส่งอีเมลผ่าน SMTP จาก gmail ล้มเหลวด้วยการตรวจสอบสิทธิ์ที่ไม่ถูกต้อง ฉันได้ตรวจสอบรหัสผ่านของฉันแล้ว ตรวจสอบให้แน่ใจว่าพอร์ตเปิดอยู่ และสามารถเทลเน็ตไปยัง IP และพอร์ตได้

เอาต์พุต Telnet (จากโฮสต์ระยะไกล)

Computer:~ Louis$ telnet mail.mysite.com 587
Trying 71.66.218.124...
Connected to mail.mysite.com (71.66.218.124).
Escape character is '^]'.
220 mail.mysite.com ESMTP Postfix
ehlo mail.mysite.com
250-mail.mysite.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH DIGEST-MD5 NTLM CRAM-MD5 PLAIN LOGIN
250-AUTH=DIGEST-MD5 NTLM CRAM-MD5 PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

และทดสอบข้อมูลการเข้าสู่ระบบของฉัน:

sudo testsaslauthd -u jon -p ********
0: OK "Success."

และกำลังฟังพอร์ต:

netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN     
tcp6       0      0 :::587                  :::*                    LISTEN     
tcp6       0      0 :::110                  :::*                    LISTEN     
tcp6       0      0 :::143                  :::*                    LISTEN     
tcp6       0      0 :::4949                 :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::25                   :::*                    LISTEN

มีความคิดใดที่ว่าทำไมฉันไม่สามารถกำหนดค่า SMTP ให้ส่งอีเมลจากระยะไกลได้

แก้ไข

ฉันเป็นสิทธิพิเศษสำหรับอินเทอร์เฟซของ Gmail และต้องการรวมอีเมลทั้งหมดของฉันไว้ในบริการออนไลน์เดียว ฉันสามารถเพิ่มบัญชี POP3 ของฉันบน gmail ได้ (การตั้งค่า > บัญชี > เพิ่มบัญชีอีเมล POP3 ของคุณเอง) หลังจากตรวจสอบสิทธิ์กับเซิร์ฟเวอร์เรียบร้อยแล้ว ระบบจะถามว่าต้องการส่งอีเมลผ่านเซิร์ฟเวอร์ smtp หรือไม่ ซึ่งฉันตอบว่าใช่ เมื่อฉันพยายามเข้าสู่ระบบ ฉันได้รับข้อความต่อไปนี้:

Authentication failed. Please check your username/password. [Server response: 535 5.7.8 Error: authentication failed: authentication failure code(535) ]

ฉันควรทราบ นี่ไม่ใช่ปัญหาของ Gmail - ฉันไม่สามารถรับรองความถูกต้องจากอุปกรณ์หรือแอปพลิเคชันใดๆ ผ่าน smtp อย่างไรก็ตาม ฉันสามารถรับรองความถูกต้องโดยใช้เครื่องมือบนเซิร์ฟเวอร์ และผ่าน telnet . .

แก้ไข2

ข้อผิดพลาดจาก /var/log/mail.log

Feb 2 14:52:42 Mysite postfix/smtpd[16527]: connect from mail-ea0-f76.google.com[102.85.215.76] Feb 2 14:52:43 Mysite postfix/smtpd[16527]: Anonymous TLS connection established from mail-ea0-f76.google.com[102.85.215.76]: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits) Feb 2 14:52:43 Mysite postfix/smtpd[16527]: warning: SASL authentication failure: Password verification failed Feb 2 14:52:43 Mysite postfix/smtpd[16527]: warning: mail-ea0-f76.google.com[102.85.215.76]: SASL PLAIN authentication failed: authentication failure Feb 2 14:52:43 Mysite postfix/smtpd[16527]: disconnect from mail-ea0-f76.google.com[102.85.215.76]

แก้ไข 3 นี่คือ /etc/postfix/main.cf ของฉันตามที่ร้องขอ

mydomain = mysite.com
biff = no
append_dot_mydomain = no
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtp_sasl_auth_enable = yes
# password maps will not work. Customer must provide credentials
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name 
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = mysite.localdomain, mysite, localhost.localdomain, localhost, mail.mysite.com, mysite.com
relayhost = 
mynetworks = 127.0.0.0/8
inet_interfaces = all
mailbox_size_limit = 0
recipient_delimiter = +
myorigin = mysite.com
inet_protocols = all
smtpd_sasl_local_domain = 
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
myhostname = mail.mysite.com 
home_mailbox = Maildir/
mailbox_command = 
virtual_alias_domains = mysite.com
virtual_alias_maps = hash:/etc/postfix/virtual
answer

รายการตรวจสอบการตรวจสอบสิทธิ์ SASL

จากคำถามและความคิดเห็น sasl อาจตั้งค่าไม่ถูกต้อง รายการตรวจสอบต่อไปนี้ถูกสร้างขึ้นโดยอ้างอิงจากUbunut Guide ที่เป็นปัญหา

  1. ตรวจสอบไฟล์/etc/postfix/sasl/smtpd.confควรจะเป็นดังนี้

    pwcheck_method: saslauthd
    mech_list: plain login
    
  2. ตรวจสอบการติดตั้ง libsasl

    dpkg -l | grep sasl
    

    ควรมีดังต่อไปนี้ (หมายเลขรุ่นอาจแตกต่างกัน)

    ii  libsasl2-2           2.1.25.dfsg1-4    Cyrus SASL - authentication abstraction library
    ii  libsasl2-modules     2.1.25.dfsg1-4    Cyrus SASL - pluggable authentication modules
    ii  sasl2-bin            2.1.25.dfsg1-4    Cyrus SASL - administration programs for SASL users database
    
  3. ตรวจสอบ saslauthd กำลังทำงาน

    ps -ef | grep sasl
    
  4. ตรวจสอบ sasslauthd PWDIR

    grep PWDIR /etc/default/saslauthd
    

    ผลลัพธ์ควรเป็น

    PWDIR="/var/spool/postfix/var/run/saslauthd"
    

การส่ง Postfix/587

  1. /etc/postfix/master.cf

    คู่มือ Ubuntu ยกเลิกการแสดงความคิดเห็นเพียงบรรทัดเดียว

    submission inet n       -       -       -       -       smtpd
    

    ลอง ucomment ทั้งส่วนรวมถึงตัวเลือกต่อไปนี้

    submission inet n       -       -       -       -       smtpd
      -o smtpd_tls_security_level=encrypt
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject
      -o milter_macro_daemon_name=ORIGINATING
    

    จากนั้นรีสตาร์ท postfix

    sudo service postfix restart
    
  2. ตรวจสอบชื่อล็อกอิน smtp ของคุณอีกครั้ง

    เนื่องจากคู่มือนี้ไม่ได้ใช้ผู้ใช้เสมือน ชื่อล็อกอิน smtp ของคุณจึงควรเป็นjoeเท่านั้น ไม่ใช่[email protected]. ตรวจสอบไคลเอนต์อีเมลอีกครั้งบนอุปกรณ์ / คอมพิวเตอร์ / เว็บเซอร์ (gmail) ของคุณไม่ได้ใช้ที่อยู่อีเมลของคุณเป็นชื่อล็อกอิน smtp (หลายคนทำเพื่อคุณ คุณจะต้องเปลี่ยนด้วยตนเองหากใช่)

  3. ลบรหัสผ่านแผนที่

    ฉันเชื่อว่าคุณกำลังตรวจสอบกับบัญชี Linux ในเครื่อง ไม่ใช่ผู้ใช้เสมือน ลบบรรทัดต่อไปนี้ใน/etc/postfix/main.cf

    # password maps will not work. Customer must provide credentials
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    

คุณระบุว่าคุณกำลังพยายามส่งอีเมลผ่าน SMTP จาก Gmail เซิร์ฟเวอร์อีเมลสาธารณะภายนอกที่ส่งจดหมายไปยังโดเมนของคุณมักจะไม่ตรวจสอบสิทธิ์ smtpd ของคุณ (แน่นอนว่าจะไม่ผ่านข้อมูลประจำตัวที่คุณลงชื่อเข้าใช้ gmail ด้วย!) เซิร์ฟเวอร์ SMTP ของคุณควรอนุญาตให้ส่งต่อไปยังที่อยู่ในโดเมนของคุณโดยไม่ต้องตรวจสอบสิทธิ์ (เพื่อให้สามารถรับอีเมลขาเข้าได้) และต้องมีการตรวจสอบสิทธิ์สำหรับอีเมล "ขาออก" (ที่ส่งต่อไปยังโดเมนอื่น) เท่านั้น

จากความคิดเห็นของคุณ ดูเหมือนว่าคุณต้องการการตรวจสอบสิทธิ์สำหรับการส่งต่อทั้งหมด Gmail ไม่มีข้อมูลประจำตัวที่จะให้ ดังนั้นแน่นอนว่าจะไม่สามารถตรวจสอบสิทธิ์เซิร์ฟเวอร์อีเมลของคุณได้

อีกเส้นทางที่ต้องลองคือใช้พอร์ต 465 และ smtps

http://ubuntuforums.org/showthread.php?t=1946910