以下將介紹如何在FreeBSD上安裝Mail Server(Cyrus_SASL + CA + Sendmail )

事前準備工作:

修改/etc/make.conf並加入以下設定。因為使用網路取得檔案時,預設抓取檔案的伺服器通常在國外
,因此修改/etc/make.conf並加入以下四行來指定使用國內的FTP站台。

MASTER_SITE_BACKUP?=
ftp://freebsd.csie.ncu.edu.tw/distfiles/${DIST_SUBDIR}/
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}


1.安裝 Cyrus_SASL:


#cd /usr/ports/security/cyrus_sasl
#make install



選擇DB3、OpenLDAP2,及其它選項(不包含MySQL、NDBM、OpenLDAP1),選擇ok就開始install囉~^^~

2.製作保密連線的金鑰 (key-pair) 與授權憑證與 (CA; Certification Authority)
  (節錄自 中研院 張毓麟先生之文章,http://www.ascc.net/nl/90/1713/02.txt)

安全連線至少需要三個檔案才能啟用. 請將公正單位核發的key-pair 與CA 放置於下列目錄:
server 端的key-pair, 存放於 /etc/mail/cert/mykey.pem
server 端的 CA, 存放於/etc/mail/cert/mycert.pem
公正單位的CA, 存放於 /etc/mail/cert/cacert.pem

如果想自行製作key-pair 與 CA,請依照下列指令操作

# mkdir /usr/local/CA
# cd /usr/local/CA
# mkdir certs crl newcerts private
# echo "01" > serial
# cp /dev/null index.txt
# cp /etc/ssl/openssl.cnf openssl.cnf


編輯openssl.cnf 檔案, 將檔案中約第 38 行的路徑設定由 ./demoCA 改成
/usr/local/CA。

接著執行以下指令,假裝自己是公正單位,做一個cacert.pem 出來。請按螢幕上的指示,輸入相關的系統資料,當螢幕上提示輸入公正單位密碼(PEM pass phrase)的時候,請自行設定一個密碼,並請牢記這個密碼,以便日後使用。

# cd /usr/local/CA
# openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 -config openssl.cnf


執行以下指令,建立server 端的CA 與key-pair 。請特別留意,在這個步驟中,當畫面上提示輸入Common Name 的時候,請務必輸入機器的全名(FQDN),否則以後使用者連線的時候將會出現警告訊息,造成使用者的困擾。當螢幕提示輸入PEM pass phrase 的時候,請輸入上一步驟中的公正單位密碼。

# cd /usr/local/CA
# openssl req -nodes -new -x509 -keyout mykey.pem -out myreq.pem -days 365 -config openssl.cnf
# openssl x509 -x509toreq -in myreq.pem -signkey mykey.pem -out tmp.pem
# openssl ca -config openssl.cnf -policy policy_anything -out mycert.pem -infiles tmp.pem
# rm -f tmp.pem


以下列指令,將key-pair 與CA 複製到 /etc/mail/cert 目錄之下,並設定正確:

# mkdir /etc/mail/cert
# cp /usr/local/CA/mykey.pem /etc/mail/cert/
# cp /usr/local/CA/mycert.pem /etc/mail/cert/
# cp /usr/local/CA/cacert.pem /etc/mail/cert/
# chmod og-rwx /etc/mail/cert/mykey.pem
# chmod og=r /etc/mail/cert/mycert.pem
# chmod og=r /etc/mail/cert/cacert.pem


使用以下的指令建立CA 的hash link ,請特別注意引號的方向(建議剪貼以下指令,以免不小心打字失誤)

# cd /etc/mail/cert
# ln -s cacert.pem `openssl x509 -noout -hash < cacert.pem`.0


這樣就完成了自行建立key-pair 與CA 的程序。這組key-pair 與CA 將可被 sendmail 使用於保密連線的資料加密。

3.重新編譯 Sendmail
(節錄自 中研院 張毓麟先生之文章,http://www.ascc.net/nl/90/1713/02.txt, 本單元有根據張毓麟先生的文章做一些些修改)

系統雖然內建Sendmail ,但內建的版本並沒有與Cyrus-SASL 程式庫連結,因此必須加以調整。以下的指令將為調整 Sendmail 做準備


# killall –9 sendmail
# cat >> /etc/make.conf
SENDMAIL_CFLAGS=-I/usr/local/include/sasl –DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl
^D (同時按Ctrl 鍵與D 字母鍵)


以下列指令安裝新的Sendmail 程式

# mv /usr/local/include/sasl1 /usr/local/include/sasl
# cd /usr/src/lib/libsmutil
# make clean
# make
# cd /usr/src/lib/libsm
# make clean
# make
# cd /usr/src/usr.sbin/sendmail
# make clean
# make all install


完成上述指令後,sendmail 的安全連線與身分認證已被啟動,但仍需進一部的設定才能正常運作。
編輯 /etc/mail/freebsd.mc 檔案,在檔案末端加入以下11 行設定

dnl The following lines are used to enable the STARTTLS function
define(`CERT_DIR', `/etc/mail/cert')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/cacert.pem')dnl
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/mykey.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')dnl
dnl The following lines are used to enable CYRUS-SASL function
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl


請特別注意大小寫,以及引號的方向,建議使用複製的方式將以上11 行設定貼入 /etc/mail/freebsd.mc 檔案的末端,以免發生意外的打字錯誤。

接下來以下列指令,建立新的sendmail 控制檔案(cf file)

# cd /etc/mail
# make cf
# make instal
l


完成以上設定程序之後,sendmail 的保密連線與身分認證弁鄐w經被正確的設定完成,可以進行下一步驟,檢查是否正確運作。

4.檢查保密連線與身分認證的功能否正確運作
(節錄自 中研院 張毓麟先生之文章,http://www.ascc.net/nl/90/1713/02.txt)

首先,以下列指令重新啟動sendmail

# killall -9 sendmail
# /usr/sbin/sendmail -bd -q30m


以下列指令檢查保密連線與身分認證功能是否正確啟動

# telnet localhost 25
ehlo localhost


若螢幕上出現的訊息包含以下兩行,則表示保密連線與身分認證都已經正確啟動了。

250-AUTH LOGIN PLAIN
250-STARTTLS


若沒有出現這兩個訊息,表示前述的操做發生了錯誤,請檢查sendmail 的記錄檔 /var/log/maillog 內的訊息,了解錯誤發生的詳細狀況
arrow
arrow
    全站熱搜

    Bojack 發表在 痞客邦 留言(0) 人氣()