未分類

FreeBSD 6.1 安裝 sendmail+cyrus-sasl+pop3

FreeBSD 6.1 的 sendmail+cyrus-sasl+pop3

安裝 Cyrus SASL

SASL (Simple Authentication and Security Layer) 具有身份認證的功能,讓你可以無論在任何地方
都可以順利寄出信件

// 安裝 ncftp, 若有安裝過跳過這裡
# cd /usr/ports/ftp/ncftp
# make install clean
// 安裝好執行檔在 /usr/local/bin/ncftp1

// 設定 alias
# vi /etc/profile
alias ncftp=”ncftp1″

// 沒時間重開機了,直接執行
# alias ncftp=”ncftp1″

// 到 ftp 抓檔案
# ncftp ftp://ftp.andrew.cmu.edu/pub/cyrus-mail
ncftp>get cyrus-sasl-2.1.22.tar.gz
ncftp>quit

# tar zxvf cyrus-sasl-2.1.22.tar.gz
# cd cyrus-sasl-2.1.22
# ./configure –enable-login –enable-plain
# make
# make install
# cd /usr/lib
# ln -s /usr/local/lib/sasl2 .
# ln -s /usr/local/lib/sasl2 sasl
# ln -s /usr/local/lib/libsasl* .
# echo “pwcheck_method: saslauthd ” > /usr/lib/sasl2/Sendmail.conf

// 接著我們要在一開機時就執行 saslauthd 這支認證用的程式,請新增檔名為 /usr/local/etc/rc.d/saslauthd.sh 的執行檔,內容如下:

#!/bin/sh

case $1 in
“start”)
echo “Starting saslauthd”
/usr/local/sbin/saslauthd -a pam
;;
“stop”)
echo “Stoping saslauthd”
killall saslauthd
;;
*)
echo “Usage $0 start|stop”
;;
esac
// 然後將該檔案屬性變為可執行,並建立一個 saslauthd 所需使用的工作目錄:

# chmod 755 /usr/local/etc/rc.d/saslauthd.sh
# mkdir -p /var/state/saslauthd

安裝 Sendmail

在安裝 Sendmail 之前,如果系統中正在執行舊版的 Sendmail,請先使用以下指令將它
停掉:

# kill -9 `cat /var/run/sendmail.pid|head -1`
// 確認一下/etc/group和/etc/passwd,已經有smmsp這個群組跟使用者,若沒有請加入
# cat /etc/group | grep smmsp
smmsp:*:25:
# cat /etc/passwd | grep smmsp
smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin

// 到ftp抓檔案

# ncftp ftp://www.sendmail.org/pub/sendmail
ncftp>get sendmail.8.13.8.tar.gz
ncftp>quit

# tar zxvf sendmail.8.13.8.tar.gz

// 接著建立檔案並加入下列內容:
# vi sendmail-8.13.8/devtools/Site/site.config.m4
PREPENDDEF(`confENVDEF’, `-DMAP_REGEX’)
PREPENDDEF(`confOPTIMIZE’, `-O2′)
APPENDDEF(`confENVDEF’, `-DTCPWRAPPERS -DSASL=2′)
APPENDDEF(`conf_sendmail_LIBS’, `-lwrap -lsasl2′)
APPENDDEF(`confLIBDIRS’, `-L/usr/local/lib’)
APPENDDEF(`confINCDIRS’, `-I/usr/local/include’)
APPENDDEF(`confENVDEF’, `-DMILTER’)

// 這邊解釋一下,如 `confENVDEF’,第一個`是鍵盤左上角數字1的左邊那個符號,接下來的’才是單引號

//完成後就可以開始安裝 Sendmail 了:
# cd sendmail-8.13.8/
# sh Build
# sh Build install

// 為了要讓本地的使用者不必經由身份認證使用 SMTP,還須再做下列設定:

# cd sendmail-8.13.8/obj*
# cd mail.local
# make force-install
# chown root /usr/libexec/mail.local
# chmod u+s /usr/libexec/mail.local

接下來編輯 sendmail 設定範本檔案以便產生出具有身分認證功能的 sendmail.cf 設定檔,請以下列指令執行:

# cd sendmail-8.13.8/cf/cf/
# cp generic-bsd4.4.mc MYCF.mc
# cd ../feature
# cat access_db.m4 >> ../cf/MYCF.mc
# cat delay_checks.m4 >> ../cf/MYCF.mc
# cat virtusertable.m4 >> ../cf/MYCF.mc
# cd ../cf
# cat >> MYCF.mc
TRUST_AUTH_MECH(`LOGIN PLAIN’)dnl
define(`confAUTH_MECHANISMS’, `LOGIN PLAIN’)dnl
^D(同時按Ctrl+D)

接著我們要建立 sendmail.cf:

# sh Build MYCF.cf
# cp MYCF.mc /etc/mail/sendmail.mc
# cp MYCF.cf /etc/mail/sendmail.cf

接下來請編輯 /etc/mail/access 這個檔案,我們可以在 access 指定哪些 IP 或 domain 來源的機器是否可以經由我們的伺服器寄信。如果您希望自己內部網域的機器可以不必使用身份認証,你可以在這個檔案中加入內部網域的 IP。
# cd /etc/mail
# vi access
127.0.0.1 RELAY
# 內部網路不需要認証
192.168.0 RELAY

// 接著請產生二個 sendmail 所需要的檔案:

# touch /etc/mail/virtusertable
# touch /etc/mail/aliases

// 然後請新增 /etc/mail/local-host-names 的檔案,裡面填入 localhost 以及機器的完整名字

# vi local-host-names
localhost
test.edu.tw

// 當收到信的收件者不是給 test.edu.tw 時便會拒絕

接著,再新增一個檔名為 /etc/mail/relay-domains 的檔案填入本地的 domainname,
例如: edu.tw
這樣一來由本地的 domain 發信時便不需再一次做使用者認證。然後將這些檔案做成 sendmail 能接受的 DB 格式:
# vi relay-domains
edu.tw

# cd /etc/mail
# makemap hash access.db < access # makemap hash virtusertable.db < virtusertable # newaliases 這樣就完成了。您可以執行 # sendmail -d0.1 -bv root | grep SASL 應該會出現 SASL 的字樣,表示己可認証。 最後,我們可以使用下列指令來啟動認證所需的程式及 Sendmail: // 啟動 sasl # /usr/local/etc/rc.d/saslauthd.sh start // 啟動 sendmail # /usr/sbin/sendmail -bd -q30m 在啟動 Sendmail 之後,如果執行 # telnet localhost 25 再打 ehlo localhost 我們應該看到一堆 250- 開頭的訊息,其中有一行 250-AUTH LOGIN PLAIN 就代表 Sendmail己經具有身份認證的功能,此時請輸入 quit 結束。萬一沒有出現,請閱讀 /var/log/maillog 裡面的訊息可以知道錯在哪裡。 如果我們希望在一開機便啟動 Sendmail,請在 /etc/rc.conf 中加入 # vi /etc/rc.conf sendmail_enable="YES" // 安裝 POP3 伺服器 POP3 的設定很簡單,我們只要選一個喜歡的 pop3 軟體,以 ports 安裝完後再做一些設定就好了。在這裡我選用 popa3d: # cd /usr/ports/mail/popa3d # make install clean // 接著編輯 /etc/inetd.conf,找到 pop3 的部份,將開頭的 # 拿掉後,並加以修改如下: # vi /etc/inetd.conf pop3 stream tcp nowait root /usr/local/libexec/popa3d popa3d // 接著重新跑 inetd 即可: # kill -HUP `cat /var/run/inetd.pid`

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *