站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

OpenLDAP-Postfix With SMTP SSL TLS 設定

前言

談到 [E-Mail] 就不得不提一下這三個名詞 [MTA][MDA][MUA],關於 [E-Mail] 從使用者發信到收信如何運作可參考 [ twbsd.org - Wang, Chun-Pin 第十六章 郵件伺服器圖解] 了解。

E-Mail 相關服務聆聽埠號 (Listen Port)

實作環境

安裝及設定

步驟1.複製自行製作的根憑證給 Postfix 使用

OpenLDAP-SSL TLS 設定 這篇文章中我們有建立供自已伺服器使用的根憑證 (RootCA),此次實作我們將製作一份給 SMTP SSL 使用的憑證。

 #cd /usr/local/etc/openldap
 #cp -r ssl /usr/local/etc/postfix/
 #ll
 total 6
 -rw-r--r--  1 root  wheel  1842  8 11 11:42 rootca.crt
 -rw-r--r--  1 root  wheel  1119  8 11 11:42 rootca.csr
 -r--------  1 root  wheel  1751  8 11 11:42 rootca.key

步驟2.製作 Postfix 伺服器用的 Private Key (mail.weithenn.org.key)

製作一份名稱為 mail.weithenn.org.key 的 Private Key,屆時給 Postfix 用來當 SMTP SSL 使用。

 #cd /usr/local/etc/postfix/ssl 
 #openssl genrsa -out mail.weithenn.org.key 2048                                        //製作 Postfix Use Private Key

步驟3.製作 Postfix 伺服器憑證申請書 (mail.weithenn.org.csr)

 #openssl req -new -key mail.weithenn.org.key -out mail.weithenn.org.csr                //製作 Postfix Use CSR
 You are about to be asked to enter information that will be incorporated into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]: TW                                                  //國碼臺灣是 TW
 State or Province Name (full name) [Some-State]: Taiwan R.O.C                          //國名臺灣填 Taiwan  
 Locality Name (eg, city) []: Taipei                                                    //地名
 Organization Name (eg, company) [Internet Widgits Pty Ltd]: FreeBSD Personal Reserach  //組織單位名稱
 Organizational Unit Name (eg, section) []: FreeBSD Personal Reserach                   //部門名稱
 Common Name (eg, YOUR name) []: mail.weithenn.org                                      //憑證的名稱 (伺服器的 FQDN,很重要後面會用到)
 Email Address []: weithenn@weithenn.org                                                //申請單位的連絡信箱
 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []: 請按 Enter 直接跳過                                           //申請書的密碼 (此例請按 Enter 跳過)
 An optional company name []: 請按 Enter 直接跳過                                       //憑證代辦公司的名稱 (此例請按 Enter 跳過)

步驟4.最高層認證中心簽發憑證 (RootCA 發給 Postfix 伺服器 mail.weithenn.org.crt)

以最高層認證中心發給伺服器 (RootCA >> Postfix Server) 十年效期的憑證。

 #openssl x509 -req -days 3650 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_req -CA rootca.crt -CAkey rootca.key \
 -CAserial rootca.srl -CAcreateserial -in mail.weithenn.org.csr -out mail.weithenn.org.crt   //接續上一行
 Signature ok
 subject=/C=TW/ST=Taiwan R.O.C/L=Taipei/O=FreeBSD Personal Research/OU=FreeBSD  Personal Research
 /CN=mail.weithenn.org/emailAddress=weithenn@weithenn.org
 Getting CA Private Key
 Enter pass phrase for rootca.key:                                                      //輸入密碼 (Rootca 的 Private key 密碼)

以上步驟完成後整理一下剛才產生的檔案

 /usr/local/etc/postfix/ssl/rootca.crt                 //RootCA 憑證
 /usr/local/etc/postfix/ssl/rootca.csr                 //RootCA 憑證申請書
 /usr/local/etc/postfix/ssl/rootca.key                 //RootCA Private Key (記得權限設為 400)
 /usr/local/etc/postfix/ssl/mail.weithenn.org.crt      //Postfix Server 憑證
 /usr/local/etc/postfix/ssl/mail.weithenn.org.csr      //Postfix Server 憑證申請書
 /usr/local/etc/postfix/ssl/mail.weithenn.org.key      //Postfix Server Private Key (記得權限設為 400) 

步驟5.修改 Postfix 設定檔加入 SSL/TLS 設定

修改 Postfix 設定檔 main.cf 加入 SSL/TLS 設定

 #vi /usr/local/etc/postfix/main.cf                    //修改 Postfix 設定檔加入 TLS 設定  
 smtp_use_tls = yes
 smtpd_use_tls = yes
 smtp_tls_note_starttls_offer = yes
 smtpd_tls_key_file = /usr/local/etc/postfix/ssl/mail.weithenn.org.key
 smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/mail.weithenn.org.crt
 smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/rootca.crt
 smtpd_tls_loglevel = 1
 smtpd_tls_received_header = yes
 smtpd_tls_session_cache_timeout = 3600s
 tls_random_source = dev:/dev/urandom 

修改 Postfix 設定檔 master.cf 加入 SSL/TLS 設定

 #vi /usr/local/etc/postfix/master.cf                  //修改 Postfix 設定檔加入 smtps 設定
 smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

修改完 main.cf、master.cf 設定檔後請鍵入如下指令讓 Postfix 重新載入設定檔

 #postfix reload                                       //重新載入 postfix 設定檔
 postfix/postfix-script: refreshing the Postfix mail system

查看 SMTPs (SMTP Over SSL) 服務 Port 465 是否啟動

 #sockstat -l4
 USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
 root     master     22757 11 tcp4   *:25                  *:*
 root     master     22757 99 tcp4   *:465                 *:*       //已啟動 SMTPs

步驟6.測試 SMTP SSL/TLS

Postfix 及 SMTPs 服務成功啟動後可依如下方式來測試 SMTP Over SSL/TLS 機制是否作用了

 #telnet localhost 25
 Trying ::1...
 Trying 127.0.0.1...
 Connected to localhost.weithenn.org
 Escape character is '^]'.
 220 mail.weithenn.org ESMTP Postfix
 ehlo localhost                             //測試 TLS (此行為自行輸入)
 250-mail.weithenn.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS                               //主機顯示 TLS 功能成功
 250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
 250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN
 starttls				    //查詢 TLS 功能是否啟動成功 (此行為自行輸入)
 220 2.0.0 Ready to start TLS               //系統回應 TLS 啟動成功
 quit                                       //離開 (此行為自行輸入)
 quit                                       //離開 (此行為自行輸入)
 Connection closed by foreign host.

SMTP SSL/TLS 成功啟動後 Maillog 訊息如下

 Aug 26 14:12:18 ldap postfix/smtpd[51668]: setting up TLS connection from weithenn.lan.home[192.168.1.11]
 Aug 26 14:12:18 ldap postfix/smtpd[51668]: TLS connection established from weithenn.lan.home[192.168.1.11]: TLSv1 with cipher RC4-MD5 (128/128 bits)

參考

[ 利用 FreeBSD 組建輕量級郵件系統]

[ 基于openldap邮件系统的完全ports安装]

[MC104 Postfix+Cryus-SASL2+SSL/TLS+Courier-IMAP 實作 (未完成)]

[FreeBSD - postfix2 + SMTP AUTH + SASL2 + TLS]

[ 李禮安-Postfix+SASL2+TLS+IMAP-UW]

[斌斌小站-Outlook Express 6 的疑難雜症和應用技巧]

[遇到「憑證不符合」等錯誤訊息時,該如何處理?]

[Microsoft Outlook Express 錯誤代碼表]

Me FAQ

Q1.SMTPs 寄信或 POP3s 收信時會顯示不信任憑證訊息出現?

Error Meaage:

因為本次實作是自已產生 RootCA,因此使用者一定要下載 RootCA.cer 並匯入才能算是信任你的憑證,因為憑證是我們自行產生的 RootCA 所以在預設的情況下 Windows 電腦並不認識 (不信任) 您所製作的憑證。

Ans:

以下為簡述使用者如何匯入 (信任) 您所製作的根憑證 (RootCA)。為何不是匯入 RootCA 簽發給 MTA 的憑證呢? 答案當然也是可以的不過這樣對於我們整合之後的服務會更方便,因為 MTA 的憑證也是 RootCA 簽發的而二者都是自行製作的,且您只要匯入 (信任) RootCA 之後它所簽發的就會自動信任。

  1. 使用者下載您所製作 RootCA.crt
  2. 開啟 【Outlook Express】
    1. 點選【工具】
    2. 點選【選項】
    3. 點選【安全性】
    4. 點選【數位識別碼】
    5. 點選【信任的根憑證授權】
    6. 尋找放置 rootca.crt 路徑並匯入【rootca.crt】
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com