Author Topic: install smtp support TLS , smtptls  (Read 6804 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2141
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
install smtp support TLS , smtptls
« 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

เรียบร้อยครับผม

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2141
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install smtp support TLS , smtptls
« Reply #1 on: กุมภาพันธ์ 17, 2012, 02:56:29 PM »
ถ้าในกรณีที่ เราตั้งให้ 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
« Last Edit: กุมภาพันธ์ 17, 2012, 02:59:09 PM by golfreeze »