Golfreeze.packetlove.com: Life style of Golfreeze Canon400D Family kammtan.com Jazz Freebsd Unix Linux System Admin guitar Music
All about unix linux freebsd and FAQ for Packetlove.com Web hosting , Mail hosting , VoIP + IP PBX server => Mail issue , problem , configuration => Topic started by: golfreeze on กุมภาพันธ์ 14, 2012, 05:48:48 PM
-
พอดีวันนี้ทำเทส smtp (postfix) ให้ support TLS ครับ ขั้นตอนไม่ยากเลย ลองมาดูครับ
##### เริ่มแรก re-install postfix
#cd /usr/ports/mail/postfix
#make config (เลือก "TLS" )
#make deinstall clean
#make install clean
#cd /usr/local/etc/postfix
#mkdir -p ssl
#cd ssl
#openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650
ใสค่าต่างๆ ลงไปให้ครบ
หลังจากนั้นทำการ เพิ่ม config ลงไปใน main.cf
#vi /usr/local/etc/postfix/main.cf
### TLS config ###
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
ลองเทสผ่าน telnet
#telnet localhost 25
helo e
ehlo e
250-STARTTLS
250-AUTH NTLM LOGIN PLAIN GSSAPI DIGEST-MD5 CRAM-MD5
250-AUTH=NTLM LOGIN PLAIN GSSAPI DIGEST-MD5 CRAM-MD5
หรือจะเทสผ่าน openssl ก็ได้ครับผม
#openssl s_client -starttls smtp -connect 127.0.0.1:25
เรียบร้อยครับผม
-
ถ้าในกรณีที่ เราตั้งให้ postfix ทำงานกับ TLS หรือ SSL และก่อนหน้านั้นเราทำการตั้งค่า passparse ของ ตัว certificate ไว้นะครับ
จะทำให้เกิด error ประมาณว่า
Feb 17 14:46:40 smtp01 postfix/smtpd[59113]: warning: cannot get RSA private key from file /usr/local/etc/postfix/ssl/smtpd_new.pem: disabling TLS support
Feb 17 14:46:40 smtp01 postfix/smtpd[59113]: warning: TLS library problem: 59113:error:0906406D:PEM routines:PEM_def_callback:problems getting password:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pem/pem_lib.c:105:
Feb 17 14:46:40 smtp01 postfix/smtpd[59113]: warning: TLS library problem: 59113:error:0906A068:PEM routines:PEM_do_header:bad password read:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pem/pem_lib.c:406:
Feb 17 14:46:40 smtp01 postfix/smtpd[59113]: warning: TLS library problem: 59113:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/ssl_rsa.c:669:
Feb 17 14:46:40 smtp01 postfix/smtpd[59113]: connect from lb00.ntt.co.th[192.168.1.120]
Feb 17 14:46:40 smtp01 postfix/smtpd[59113]: disconnect from lb00.ntt.co.th[192.168.1.120]
Feb 17 14:46:40 smtp01 postfix/smtpd[59116]: warning: cannot get RSA private key from file /usr/local/etc/postfix/ssl/smtpd_new.pem: disabling TLS support
Feb 17 14:46:40 smtp01 postfix/smtpd[59116]: warning: TLS library problem: 59116:error:0906406D:PEM routines:PEM_def_callback:problems getting password:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pem/pem_lib.c:105:
Feb 17 14:46:40 smtp01 postfix/smtpd[59116]: warning: TLS library problem: 59116:error:0906A068:PEM routines:PEM_do_header:bad password read:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pem/pem_lib.c:406:
Feb 17 14:46:40 smtp01 postfix/smtpd[59116]: warning: TLS library problem: 59116:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/ssl_rsa.c:669:
เกิดขึ้นที่ error log ของ ssl ได้ครับ
เราต้องทำการ แทรกตัว passparse key ลงไปกับตัว certificate key ครับโดยวิธีนี้
[root@xxx conf]# cd /etc/postfix/ssl/ssl.key
[root@xxx ssl.key]# cp server.key server.key.new
[root@xxx ssl.key]# openssl rsa -in server.key.new -out server.key
ทำการใส่ค่า passparse ที่เราทำการตั้งไว้ก่อนหน้านี้ครับ
Enter pass phrase for server.key.new:
writing RSA key
[root@xxx ssl.key]# vi server.key
เราจะได้ไฟล์ server.key ที่มีการเพิ่ม passparse ไว้ข้างในแล้วครับ สามารถนำไฟล์นี้ ไปใช้ใน config "ssl.conf" ได้เลยครับผม
SSLCertificateKeyFile /etc/postfix/ssl/server.key