CentOS6_x64 在預設狀態下,通常已經有開啟發 email 的伺服器軟體 postfix,但僅限制在本機(localhost / 127.0.0.1 ) 使用,且僅是讓系統可以傳送錯誤訊息給 root。故我們要經由設定,讓電腦主機內的使用者帳號,皆可以收發 email,而我們用的送信軟體為 postfix,負責 smtp 的部分( https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol ) ,收信軟體則為 dovecot,負責 pop 或 imap ( https://en.wikipedia.org/wiki/Post_Office_Protocol,https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol )的部分,收發信機制的運作機制,可參考wikipedia,https://en.wikipedia.org/wiki/Email,筆者不再贅述,直接說明架設伺服器軟體的操作。先利用 rpm -qa | grep postfix 與 rpm -qa | grep dovecot 來查詢是否已經有安裝,若無,則利用 yum install postfix 與 yum install dovecot 來安裝。除此之外,再利用 chkconfig | grep postfix 與 chkconfig | grep dovecot 來確認是否有在開機時啟動,若想自動化開機啟動,再請設定 chkconfig --level 235 postfix on 與 chkconfig --level 235 dovecot on 來載入。 如圖4-10與圖4-11:
(圖4-10)
(圖4-11)
接著我們利用 vim 來修改 postfix 設定檔 /etc/postfix/main.cf 。相同地,我們先閱讀設定檔內容前面的說明,postfix 的作者相當細心,每個設定前的說明很詳細,故設定檔很長,請讀者要有耐心閱讀,如圖4-12-1 至 圖4-12-7。往後篇章若設定檔內容太長,筆者便不再列出,會直接說明新增與修改處,在此先說明。
(圖4-12-1)
(圖4-12-2)
(圖4-12-3)
(圖4-12-4)
(圖4-12-5)
(圖4-12-6)
/etc/postfix/main.cf 設定檔內容太長看起來太辛苦,慢慢看沒關係,筆者僅在以下提出需修改或新增的參數名稱與參數值,圖4-12-6內容最下方的 readme_directory 內的說明內容也是可以深入研究的文件。您也可以利用指令 postconf -d 印出預設值,或利用 postconf | grep ,來搜尋您設定的參數字串:
myhostname = mail.mylinux.com
/* 您的email主機名稱,就如同帳號@email主機名稱的email格式,所需的主機名稱。 */
mydomain = mylinux.com
/* 去掉主機名字,符號 . 後面的公司網路網域名稱,請詢問網域名稱提供商,如 ISP,或計算機中心 */
myorigin = $myhostname
/* 將 myorigin 值設定與 mydomain 的值相同。這樣如 root 的郵件寄出地址就是 root@mail.mylinux.com */
inet_interfaces = 192.168.100.200, localhost
/* 請設定您的 email 主機實際 IP 位址,預設僅為 localhost(127.0.0.1) 若有多個 IP ,使用 all 會利用所有的 IP 通訊埠來送 email。 */
以上設定完,請記得也要利用 vim 在 /etc/hosts 加入主機名單並儲存。如圖4-13
(圖4-13)
mydestination = $myhostname, $mydomain, localhost
/* email 郵件為帳號@主機名稱/網域名稱的格式,此為可接受的網域名稱,其他主機名稱不接受,可搭配 /etc/hosts 設定 */
mynetworks_style = subnet
或
mynetworks = 192.168.100.0/24, 127.0.0.0/8
/* Postfix 可以直接 relay 同網域主機的信件,若設定安全一些,也可以僅提供本機主機寄送,如 mynetworks_style=host 或 mynetworks=127.0.0.1, 192.168.100.200 */
relay_domains = $mydestination
/* 若要提高安全性,不 relay 無法辨認的主機名稱之信件,則設定為 relay_domains = ,即不 relay 任何來源 */
home_mailbox = Maildir/
/* 設定 mailbox 位置為個人帳號家目錄下的 Mail 資料夾,記得要於家目錄下建立 Maildir 資料夾,並確認僅使用者可讀寫 */
message_size_limit = 20971520 # 每封信件容量限制 2M
mailbox_size_limit = 107377418240 # 每個人信箱的容量限制 10G
以上設定完後,此時使用指令 servie postfix restart 來重啟 postfix,並開啟防火牆的允許 port 25 規則(如指令 $ iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT, service iptablse save ),便可使用 port 25 來用 smtp 寄信。利用傳統工具軟體 telnet (無 ssl/tls加密,上BBS當鄉民的用具,請先用 yum install telnet 下載 )測試方式如以下,如圖4-14為筆者在 localhost 下測試:
telnet 127.0.0.1 25
若有連線成功,接著再輸入虛擬機器的 IP 讓 smtp 辨認身分,如以下,按 enter 鍵
ehlo 192.168.122.1
然後再輸入以下設定寄信者,按 enter 鍵(若不使用 mail from,則為現在使用之帳號名稱)
mail from:root
然後再輸入以下設定收信者,按 enter 鍵
rcpt to:newuser
接著輸入email資料
data
鍵入資料並使用符號 . 結束,如以下
This is a test email for my smtp server
.
(圖4-14)
若要離開 telnet 請輸入以下,按 enter 鍵可離開
quit
亦可利用指令 mail ,來測試是否可送出郵件,如以下
$ mail idontknow@url.com
Subject: My Test email
This is a test email from my smtp server.
Regards,
.
EOT # email內容遇到符號 . 便會結束出現 EOT
若要測試夾附件的 email,可利用 yum install mutt,下載 Mutt 軟體來測試操作( http://www.mutt.org/ )。
以上的設定,除了設定 SMTP伺服器軟體服務網路的範圍( 參數 mynetwork )外, 此時的SMTP 無須確認主機真的有使用者名稱,便可 relay 其他遠端主機寄送信件的功能,故筆者建議架設具確認主機真實帳號密碼認證機制的 SMTP 與 POPS/IMAPS 伺服器軟體,來辨認遠端外部網域內的主機,是否為有權限使用 SMTP 服務的使用者帳號。在 Linux下可使用 SASL 架構的帳號密碼認證方式,https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer。預設的 SASL 的套件 為 cyrus-sasl,此套件是由 Cyrus 所發行,但須先利用 yum install -y cyrus-sasl 下載安裝設定後,並啟用 saslauthd 服務。亦可使用 dovecot 的 SASL 認證( https://wiki.centos.org/zh-tw/HowTos/postfix_sasl,http://www.postfix.org/SASL_README.html,http://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL )
確認 cyrus-sasl 安裝後,可以先設定SMTP需使用認證模組,如以下:
SASL 的認證設定參數如下:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,
permit_auth_destination,
permit_sasl_authenticated,
reject_unauth_destination
/* prefix permit_ 為允許條件, prefix reject_ 為禁止條件 */
設定完儲存後,再輸入以下來重載入設定,筆者利用telnet 再測試 localhost 如圖4-15
$ service saslauthd restart
$ postfix reload
(圖4-15)
圖4-15黃框處出現有認證機制的訊息,表示我們的 SASL 設定是正確的。
再來要利用 ssl/tls 的加密,如前篇的 vsftpd 架設,這裡先利用 openssl 來產生自己的主機憑證(https://en.wikipedia.org/wiki/Certificate_authority,https://technet.microsoft.com/en-us/library/hh831574(v=ws.11).aspx,一般是向憑證發行單位來購買第三方公證憑證,但筆者僅說明自行產生憑證方式,所以無第三方公正單位的憑證來追朔認證 ) 與金鑰。進入/etc/postfix 資料夾內後,執行如以下指令,並跟隨程式提示輸入您所知道的資訊:
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout mypostfix.key\ -out mypostfix.pem
/* 一樣建立 10 年的憑證與金鑰 ,亦可進入 /etc/pki/tls/certs 資料夾,在此資料夾來執行 make 可以看到產生憑證與金鑰的說明,如 make myposftix.key, make mypostfix.pem 可分別產生金鑰與憑證 */
同樣要注意檔案權限,改變金鑰權限只限使用者個人可讀寫
$ chmod 600 /etc/postfix/mypostfix.key
接著要在設定檔 /etc/postfix/main.cf 設定使用 ssl/tls 加密的參數,如以下:
smtpd_tls_security_level = may # 讓 smtpd 使用 tls,若要強制,則將 may 換成 encrypt
smtpd_tls_key_file = /etc/postfix/mypostfix.key # 金鑰位置
smtpd_tls_cert_file = /etc/postfix/mypostfix.pem # 憑證位置
smtpd_tls_received_header = yes
smtpd_tls_CAfile = $smtpd_tls_cert_file
smtpd_tls_loglevel = 1 # 使用簡易紀錄
smtpd_tls_session_cache_timeout = 3600s
/* 為了一小時內可不用在重建金鑰連線,來耗費計算資源 */
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache
/* 設定 tls session 暫存檔名 */
tls_random_source = dev:/dev/urandom # 重建加密要用的亂數種子
smtpd_tls_auth_only = yes
/* 強迫SASL僅能使用 tls 加密,而不能以純文字驗證,設定後 ,測試的 250-AUTH plain login 就不會出現 */
smtp_tls_note_starttls_offer = yes # 提醒連入使用者伺服器軟體有提供 tls 加密連線
以上參數儲存後,接著編輯 /etc/postfix/master.cf,取消內容中 Submission 的前面符號 # ,與其下方的參數前面符號 # ,來啟用模組。如圖4-15,submission inet 使用 587 port, smtps 使用 465 port,若兩種都去掉前方符號 #,則 port 587 與 port 465 會同時開啟使用。如圖4-16
(圖4-16)
以上設定完儲存後,再重載入 postfix 設定如下,筆者再測試 localhost 如圖4-16
$ postfix reload
(圖4-17)
圖4-17 如黃框處,輸入 starttls 就可以進入 tls 的加密傳輸模式。
送信的 postfix 設定完後,接下來,我們要設定收信的 dovecot。首先利用 vim 來編輯 /etc/dovecot/dovecot.conf,同樣先仔細閱讀說明後,並將內容參數如以下:
protocols = imap pop3
/* 若需 ssl/tls加密的協定,已不再需要設定成 protocols = imaps pop3s */
我們可以利用指令 dovecot -n,看到 dovecot 本身已經有產生憑證與金鑰檔放置於 /etc/pki/dovecot/certs 與 /etc/pki/dovecot/private,故可利用這些金鑰來做 ssl/tls 加密資料,如圖 4-18
(圖4-18)
要設定信件儲存位置,編輯 /etc/dovecot/conf.d/10-mail.conf ,將 /etc/dovecot/conf.d/10-mail.conf 內的 mail_location 設定與 postfix 同,如下:
mail_location = maildir: ~/Maildir
要設定帳密確認認證,修改 /etc/dovecot/conf.d/10-auth.conf 內參數
disable_plaintext_auth = yes
auth_mechanisms = plain login
要設定 ssl/tls ,修改 /etc/dovecot/conf.d/10-ssl.conf 內參數,來啟用 ssl/tls 的機制
ssl = yes # 啟用 ssl
ssl_protocols = !SSLv3 # 不使用舊版 SSL
ssl_cipher_list = ALL:!LOW:!SSLv3:!EXP:!aNULL # 加強加密機制
要設定服務 listen port,修改 /etc/dovecot/conf.d/10-master.conf 內參數,如圖4-19,來啟用 port,如以下
service imap-login{
inet_listener imap {
port = 143
}
inet_listener imaps{
port = 993
ssl = yes
}
service pop3-login{
inet_listener pop3 {
port = 110
}
inet_listener pop3s{
port = 995
ssl = yes
}
/* 以上亦可以不要開啟非 ssl/tls 加密之 port,則就不讓 imap 與 pop3 服務產生作用 */
(圖4-19)
上述參數設定完後,接著要利用防火牆擋住所有主機或僅擋住子網域外的主機連入 25(smtp),110(pop3),143(imap),僅允許有 ssl/tls 加密的 587(smtps),995(pop3s),993(imaps)
$ iptables -A INPUT -i eth0 -p tcp --dport 25 -j DROP
$ iptables -A INPUT -i eth0 -p tcp --dport 110 -j DROP
$ iptables -A INPUT -i eth0 -p tcp --dport 143 -j DROP
/* 以上為不允許連入 25, 100, 143 的封包 */
或加入僅允許內網連入使用 25, 110, 143,如以下:
$ iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 25 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 110 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 143 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 587 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 995 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 993 -j ACCEPT
/* 僅允許有 ssl/tls 加密的封包 */
$ service iptables save
$ service iptables reload
其他 postfix 詳細基本設定,可參考 postfix 網站之內容,http://www.postfix.org/BASIC_CONFIGURATION_README.html,dovecot 詳細設定,可參考http://wiki.dovecot.org/SSL/DovecotConfiguration,或http://wiki.dovecot.org/HowTo/PostfixAndDovecotSASL
重啟動 posftix 與 dovecot
$ service postfix restart # 若重設 postfix 參數要重載入,亦可使用指令 postfix reload
$ service dovecot restart
再利用指令 netstat ,來看看是否有連接埠在監聽,如圖4-20為筆者在虛擬機器下的畫面
(圖4-20)
再提醒若要開機載入,請記得以下:
$ chkconfig --level 235 postfix on
$ chkconfig --level 235 saslauthd on
$ chkconfig --level 235 dovecot on
若要建立群組收信,可以利用 vim /etc/aliases 編輯,如圖4-21,可讓使用者帳號 newuser 與 test 亦可收到寄給 root 帳號的信件:
(圖4-21)
相同地,當我們已經知道 postfix 與 dovecot 的設定方式,讀者一樣可以試著寫一鍵設定的 Script,來簡化每次的或每台機器的設定。設定完 SMTPS 與 POP3 伺服器軟體後,這時候就可以利用如 MS Outlook 或 Windows Mail (Windows 10 內稱郵件 )等收電子郵件軟體來收發信,一般來說,會再搭配網頁式的收發信系統,如 Squirrel Webmail( https://squirrelmail.org/ ) 或 Roundcube webmail( https://roundcube.net/ ),但這些 webmail 系統皆需要使用網頁伺服器軟體(如 Apache、Ngnix)與 網頁互動程式 (如 PHP )來展現,所以下節的重點,就是說明如何設定網頁伺服器軟體,來展現所要安裝的或自己開發的網頁應用程式。
(圖4-10)
(圖4-11)
接著我們利用 vim 來修改 postfix 設定檔 /etc/postfix/main.cf 。相同地,我們先閱讀設定檔內容前面的說明,postfix 的作者相當細心,每個設定前的說明很詳細,故設定檔很長,請讀者要有耐心閱讀,如圖4-12-1 至 圖4-12-7。往後篇章若設定檔內容太長,筆者便不再列出,會直接說明新增與修改處,在此先說明。
(圖4-12-1)
(圖4-12-2)
(圖4-12-3)
(圖4-12-4)
(圖4-12-5)
(圖4-12-6)
/etc/postfix/main.cf 設定檔內容太長看起來太辛苦,慢慢看沒關係,筆者僅在以下提出需修改或新增的參數名稱與參數值,圖4-12-6內容最下方的 readme_directory 內的說明內容也是可以深入研究的文件。您也可以利用指令 postconf -d 印出預設值,或利用 postconf | grep ,來搜尋您設定的參數字串:
myhostname = mail.mylinux.com
/* 您的email主機名稱,就如同帳號@email主機名稱的email格式,所需的主機名稱。 */
mydomain = mylinux.com
/* 去掉主機名字,符號 . 後面的公司網路網域名稱,請詢問網域名稱提供商,如 ISP,或計算機中心 */
myorigin = $myhostname
/* 將 myorigin 值設定與 mydomain 的值相同。這樣如 root 的郵件寄出地址就是 root@mail.mylinux.com */
inet_interfaces = 192.168.100.200, localhost
/* 請設定您的 email 主機實際 IP 位址,預設僅為 localhost(127.0.0.1) 若有多個 IP ,使用 all 會利用所有的 IP 通訊埠來送 email。 */
以上設定完,請記得也要利用 vim 在 /etc/hosts 加入主機名單並儲存。如圖4-13
(圖4-13)
mydestination = $myhostname, $mydomain, localhost
/* email 郵件為帳號@主機名稱/網域名稱的格式,此為可接受的網域名稱,其他主機名稱不接受,可搭配 /etc/hosts 設定 */
mynetworks_style = subnet
或
mynetworks = 192.168.100.0/24, 127.0.0.0/8
/* Postfix 可以直接 relay 同網域主機的信件,若設定安全一些,也可以僅提供本機主機寄送,如 mynetworks_style=host 或 mynetworks=127.0.0.1, 192.168.100.200 */
relay_domains = $mydestination
/* 若要提高安全性,不 relay 無法辨認的主機名稱之信件,則設定為 relay_domains = ,即不 relay 任何來源 */
home_mailbox = Maildir/
/* 設定 mailbox 位置為個人帳號家目錄下的 Mail 資料夾,記得要於家目錄下建立 Maildir 資料夾,並確認僅使用者可讀寫 */
message_size_limit = 20971520 # 每封信件容量限制 2M
mailbox_size_limit = 107377418240 # 每個人信箱的容量限制 10G
以上設定完後,此時使用指令 servie postfix restart 來重啟 postfix,並開啟防火牆的允許 port 25 規則(如指令 $ iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT, service iptablse save ),便可使用 port 25 來用 smtp 寄信。利用傳統工具軟體 telnet (無 ssl/tls加密,上BBS當鄉民的用具,請先用 yum install telnet 下載 )測試方式如以下,如圖4-14為筆者在 localhost 下測試:
telnet 127.0.0.1 25
若有連線成功,接著再輸入虛擬機器的 IP 讓 smtp 辨認身分,如以下,按 enter 鍵
ehlo 192.168.122.1
然後再輸入以下設定寄信者,按 enter 鍵(若不使用 mail from,則為現在使用之帳號名稱)
mail from:root
然後再輸入以下設定收信者,按 enter 鍵
rcpt to:newuser
接著輸入email資料
data
鍵入資料並使用符號 . 結束,如以下
This is a test email for my smtp server
.
(圖4-14)
若要離開 telnet 請輸入以下,按 enter 鍵可離開
quit
亦可利用指令 mail ,來測試是否可送出郵件,如以下
$ mail idontknow@url.com
Subject: My Test email
This is a test email from my smtp server.
Regards,
.
EOT # email內容遇到符號 . 便會結束出現 EOT
若要測試夾附件的 email,可利用 yum install mutt,下載 Mutt 軟體來測試操作( http://www.mutt.org/ )。
以上的設定,除了設定 SMTP伺服器軟體服務網路的範圍( 參數 mynetwork )外, 此時的SMTP 無須確認主機真的有使用者名稱,便可 relay 其他遠端主機寄送信件的功能,故筆者建議架設具確認主機真實帳號密碼認證機制的 SMTP 與 POPS/IMAPS 伺服器軟體,來辨認遠端外部網域內的主機,是否為有權限使用 SMTP 服務的使用者帳號。在 Linux下可使用 SASL 架構的帳號密碼認證方式,https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer。預設的 SASL 的套件 為 cyrus-sasl,此套件是由 Cyrus 所發行,但須先利用 yum install -y cyrus-sasl 下載安裝設定後,並啟用 saslauthd 服務。亦可使用 dovecot 的 SASL 認證( https://wiki.centos.org/zh-tw/HowTos/postfix_sasl,http://www.postfix.org/SASL_README.html,http://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL )
確認 cyrus-sasl 安裝後,可以先設定SMTP需使用認證模組,如以下:
SASL 的認證設定參數如下:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,
permit_auth_destination,
permit_sasl_authenticated,
reject_unauth_destination
/* prefix permit_ 為允許條件, prefix reject_ 為禁止條件 */
設定完儲存後,再輸入以下來重載入設定,筆者利用telnet 再測試 localhost 如圖4-15
$ service saslauthd restart
$ postfix reload
(圖4-15)
圖4-15黃框處出現有認證機制的訊息,表示我們的 SASL 設定是正確的。
再來要利用 ssl/tls 的加密,如前篇的 vsftpd 架設,這裡先利用 openssl 來產生自己的主機憑證(https://en.wikipedia.org/wiki/Certificate_authority,https://technet.microsoft.com/en-us/library/hh831574(v=ws.11).aspx,一般是向憑證發行單位來購買第三方公證憑證,但筆者僅說明自行產生憑證方式,所以無第三方公正單位的憑證來追朔認證 ) 與金鑰。進入/etc/postfix 資料夾內後,執行如以下指令,並跟隨程式提示輸入您所知道的資訊:
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout mypostfix.key\ -out mypostfix.pem
/* 一樣建立 10 年的憑證與金鑰 ,亦可進入 /etc/pki/tls/certs 資料夾,在此資料夾來執行 make 可以看到產生憑證與金鑰的說明,如 make myposftix.key, make mypostfix.pem 可分別產生金鑰與憑證 */
同樣要注意檔案權限,改變金鑰權限只限使用者個人可讀寫
$ chmod 600 /etc/postfix/mypostfix.key
接著要在設定檔 /etc/postfix/main.cf 設定使用 ssl/tls 加密的參數,如以下:
smtpd_tls_security_level = may # 讓 smtpd 使用 tls,若要強制,則將 may 換成 encrypt
smtpd_tls_key_file = /etc/postfix/mypostfix.key # 金鑰位置
smtpd_tls_cert_file = /etc/postfix/mypostfix.pem # 憑證位置
smtpd_tls_received_header = yes
smtpd_tls_CAfile = $smtpd_tls_cert_file
smtpd_tls_loglevel = 1 # 使用簡易紀錄
smtpd_tls_session_cache_timeout = 3600s
/* 為了一小時內可不用在重建金鑰連線,來耗費計算資源 */
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache
/* 設定 tls session 暫存檔名 */
tls_random_source = dev:/dev/urandom # 重建加密要用的亂數種子
smtpd_tls_auth_only = yes
/* 強迫SASL僅能使用 tls 加密,而不能以純文字驗證,設定後 ,測試的 250-AUTH plain login 就不會出現 */
smtp_tls_note_starttls_offer = yes # 提醒連入使用者伺服器軟體有提供 tls 加密連線
以上參數儲存後,接著編輯 /etc/postfix/master.cf,取消內容中 Submission 的前面符號 # ,與其下方的參數前面符號 # ,來啟用模組。如圖4-15,submission inet 使用 587 port, smtps 使用 465 port,若兩種都去掉前方符號 #,則 port 587 與 port 465 會同時開啟使用。如圖4-16
(圖4-16)
以上設定完儲存後,再重載入 postfix 設定如下,筆者再測試 localhost 如圖4-16
$ postfix reload
(圖4-17)
圖4-17 如黃框處,輸入 starttls 就可以進入 tls 的加密傳輸模式。
送信的 postfix 設定完後,接下來,我們要設定收信的 dovecot。首先利用 vim 來編輯 /etc/dovecot/dovecot.conf,同樣先仔細閱讀說明後,並將內容參數如以下:
protocols = imap pop3
/* 若需 ssl/tls加密的協定,已不再需要設定成 protocols = imaps pop3s */
我們可以利用指令 dovecot -n,看到 dovecot 本身已經有產生憑證與金鑰檔放置於 /etc/pki/dovecot/certs 與 /etc/pki/dovecot/private,故可利用這些金鑰來做 ssl/tls 加密資料,如圖 4-18
(圖4-18)
要設定信件儲存位置,編輯 /etc/dovecot/conf.d/10-mail.conf ,將 /etc/dovecot/conf.d/10-mail.conf 內的 mail_location 設定與 postfix 同,如下:
mail_location = maildir: ~/Maildir
要設定帳密確認認證,修改 /etc/dovecot/conf.d/10-auth.conf 內參數
disable_plaintext_auth = yes
auth_mechanisms = plain login
要設定 ssl/tls ,修改 /etc/dovecot/conf.d/10-ssl.conf 內參數,來啟用 ssl/tls 的機制
ssl = yes # 啟用 ssl
ssl_protocols = !SSLv3 # 不使用舊版 SSL
ssl_cipher_list = ALL:!LOW:!SSLv3:!EXP:!aNULL # 加強加密機制
要設定服務 listen port,修改 /etc/dovecot/conf.d/10-master.conf 內參數,如圖4-19,來啟用 port,如以下
service imap-login{
inet_listener imap {
port = 143
}
inet_listener imaps{
port = 993
ssl = yes
}
service pop3-login{
inet_listener pop3 {
port = 110
}
inet_listener pop3s{
port = 995
ssl = yes
}
/* 以上亦可以不要開啟非 ssl/tls 加密之 port,則就不讓 imap 與 pop3 服務產生作用 */
(圖4-19)
上述參數設定完後,接著要利用防火牆擋住所有主機或僅擋住子網域外的主機連入 25(smtp),110(pop3),143(imap),僅允許有 ssl/tls 加密的 587(smtps),995(pop3s),993(imaps)
$ iptables -A INPUT -i eth0 -p tcp --dport 25 -j DROP
$ iptables -A INPUT -i eth0 -p tcp --dport 110 -j DROP
$ iptables -A INPUT -i eth0 -p tcp --dport 143 -j DROP
/* 以上為不允許連入 25, 100, 143 的封包 */
或加入僅允許內網連入使用 25, 110, 143,如以下:
$ iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 25 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 110 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 143 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 587 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 995 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 993 -j ACCEPT
/* 僅允許有 ssl/tls 加密的封包 */
$ service iptables save
$ service iptables reload
其他 postfix 詳細基本設定,可參考 postfix 網站之內容,http://www.postfix.org/BASIC_CONFIGURATION_README.html,dovecot 詳細設定,可參考http://wiki.dovecot.org/SSL/DovecotConfiguration,或http://wiki.dovecot.org/HowTo/PostfixAndDovecotSASL
重啟動 posftix 與 dovecot
$ service postfix restart # 若重設 postfix 參數要重載入,亦可使用指令 postfix reload
$ service dovecot restart
再利用指令 netstat ,來看看是否有連接埠在監聽,如圖4-20為筆者在虛擬機器下的畫面
(圖4-20)
再提醒若要開機載入,請記得以下:
$ chkconfig --level 235 postfix on
$ chkconfig --level 235 saslauthd on
$ chkconfig --level 235 dovecot on
若要建立群組收信,可以利用 vim /etc/aliases 編輯,如圖4-21,可讓使用者帳號 newuser 與 test 亦可收到寄給 root 帳號的信件:
(圖4-21)
相同地,當我們已經知道 postfix 與 dovecot 的設定方式,讀者一樣可以試著寫一鍵設定的 Script,來簡化每次的或每台機器的設定。設定完 SMTPS 與 POP3 伺服器軟體後,這時候就可以利用如 MS Outlook 或 Windows Mail (Windows 10 內稱郵件 )等收電子郵件軟體來收發信,一般來說,會再搭配網頁式的收發信系統,如 Squirrel Webmail( https://squirrelmail.org/ ) 或 Roundcube webmail( https://roundcube.net/ ),但這些 webmail 系統皆需要使用網頁伺服器軟體(如 Apache、Ngnix)與 網頁互動程式 (如 PHP )來展現,所以下節的重點,就是說明如何設定網頁伺服器軟體,來展現所要安裝的或自己開發的網頁應用程式。