ฉันเพิ่งทำตามบทช่วยสอนนี้เพื่อตั้งค่าเซิร์ฟเวอร์อีเมล postfix ด้วย dovecot และ mysql เป็นแบ็กเอนด์สำหรับผู้ใช้เสมือน
ตอนนี้ฉันได้งานส่วนใหญ่มาแล้วฉันสามารถเชื่อมต่อกับ POP3 (S) และ IMAP (S) ได้
การใช้
echo TEST-MAIL | mail myaccount@hotmail.com
ทำงานได้ดีเมื่อฉันเข้าสู่บัญชี Hotmail ของฉันมันจะแสดงอีเมล
มันทำงานในสิ่งที่ตรงกันข้ามดังนั้นรายการ MX ของฉันสำหรับexample.comจึงถูกเผยแพร่ในที่สุดดังนั้นฉันจึงสามารถรับอีเมลที่ส่งจากmyaccount@hotmail.comไปยังmyvirtualuser@example.comและดูพวกเขาใน Thunderbird โดยใช้ STARTTLS ผ่าน IMAP
ทำวิจัยเพิ่มเติมอีกเล็กน้อยหลังจากที่ฉันได้รับข้อความแสดงข้อผิดพลาด " 5.7.1: การเข้าถึงรีเลย์ถูกปฏิเสธ " เมื่อพยายามส่งอีเมลไปที่myaccount@hotmail.comโดยใช้ Thunderbird ที่ถูกล็อกอินเข้าสู่myvirtualuser@example.comฉันคิดว่าเซิร์ฟเวอร์ของฉันทำหน้าที่ ในฐานะ "Open Mail Relay" ซึ่ง - ของหลักสูตร - เป็นสิ่งที่ไม่ดี
การขุดเข้าไปในส่วนเพิ่มเติมของบทช่วยสอนเช่นความคิดเห็นนี้และป้อมปราการอื่น ๆฉันตัดสินใจทำตามขั้นตอนเหล่านี้เช่นกันเพื่อให้สามารถส่งอีเมลผ่านmyvirtualuser@example.comผ่าน Mozilla Thunderbird ไม่ได้รับข้อความแสดงข้อผิดพลาด " 5.7.1 : การเข้าถึงรีเลย์ถูกปฏิเสธ "อีกต่อไป (เนื่องจากผู้ให้บริการอีเมลทั่วไปปฏิเสธอีเมลที่เปิดรีเลย์)
แต่ตอนนี้ฉันพบข้อผิดพลาดในการพยายามให้ postfix ทำงานกับ SMTPS ใน/var/log/mail.logอ่าน
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: cannot get RSA private key from file /etc/ssl/certs/postfix.pem: disabling TLS support
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: ANY PRIVATE KEY:
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:ssl_rsa.c:669:
ข้อผิดพลาดนั้นถูกบันทึกทันทีที่ฉันลองส่งเมลจากเมลเซิร์ฟเวอร์ที่ติดตั้งใหม่โดยใช้ SMTP SSL / TLS ผ่านพอร์ต 465 ใน Thunderbird ทันเดอร์เบิร์ดบอกฉันว่าหมดเวลาแล้ว
Google มีผลลัพธ์เล็กน้อยเกี่ยวกับปัญหานั้น แต่ฉันไม่สามารถทำงานกับสิ่งเหล่านี้ได้ ฉันจะเชื่อมโยงบางส่วนของพวกเขาที่นี่ แต่ในฐานะผู้ใช้ใหม่ฉันได้รับอนุญาตให้ใช้การเชื่อมโยงหลายมิติสองแห่งเท่านั้น
/etc/postfix/master.cfของฉันดูเหมือนว่า
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
และnmapบอกฉัน
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
/etc/postfix/main.cfของฉันดูเหมือน
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
#smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem #default postfix generated
#smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key #default postfix generated
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smptd_tls_key_file = /etc/ssl/private/postfix.pem
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smptd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
mailbox_command = /usr/lib/dovecot/deliver
ไฟล์ * .pem ถูกสร้างขึ้นตามที่อธิบายไว้ในบทช่วยสอนด้านบนโดยใช้
Postfix
To create a certificate to be used by Postfix use:
openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem
Do not forget to set the permissions on the private key so that no unauthorized people can read it:
chmod o= /etc/ssl/private/postfix.pem
You will have to tell Postfix where to find your certificate and private key because by default it will look for a dummy certificate file called "ssl-cert-snakeoil":
postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
ฉันคิดว่าฉันไม่จำเป็นต้องรวม/etc/dovecot/dovecot.confที่นี่เนื่องจากการเข้าสู่ระบบผ่าน imaps และ pop3s ทำงานได้ดีตามบันทึก ปัญหาเท่านั้นที่ทำให้ postfix ใช้ใบรับรองที่สร้างขึ้นเองและลงนามเองอย่างถูกต้อง
ความช่วยเหลือใด ๆ ชื่นชม!
แก้ไข: ฉันเพิ่งลองบทช่วยสอนต่าง ๆ นี้เกี่ยวกับการสร้างใบรับรองแบบลงนามด้วยตนเองสำหรับ postfix แต่ยังคงได้รับข้อผิดพลาดเดียวกัน ฉันไม่รู้จะทดสอบอะไรอีก
ฉันตรวจสอบห้องสมุด SSL ด้วย แต่ดูเหมือนว่าจะใช้ได้ทั้งหมด:
root@domain:~# ldd /usr/sbin/postfix
linux-vdso.so.1 => (0x00007fff91b25000)
libpostfix-global.so.1 => /usr/lib/libpostfix-global.so.1 (0x00007f6f8313d000)
libpostfix-util.so.1 => /usr/lib/libpostfix-util.so.1 (0x00007f6f82f07000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f6f82cb1000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00007f6f82910000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00007f6f826f7000)
libdb-4.8.so => /usr/lib/libdb-4.8.so (0x00007f6f8237c000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00007f6f82164000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00007f6f81f4e000)
libc.so.6 => /lib/libc.so.6 (0x00007f6f81beb000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f6f819e7000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f6f817d0000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f6f815b3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6f83581000)
หลังจากทำตามคำแนะนำของAnsgar Wiechersในที่สุดก็ทำงานได้
postconf -n
มีเส้นตามที่ควร การตรวจสอบใบรับรอง / คีย์ผ่าน openssl แสดงว่าทั้งสองไฟล์นั้นถูกต้อง
ดังนั้นมันจึงเป็นปัญหาสิทธิ์! ไม่ทราบว่า chown'ing ไฟล์ /etc/ssl/*/postfix.pem ไปยัง postfix: postfix นั้นไม่เพียงพอที่ postfix จะอ่านไฟล์