幫 sendmail 加入寄件認證 (SMTP AUTH) 功能
作者:Joe Horn( joehorn AT leobbs DOT net )
授權:[CC授權:姓名標示-非商業性-相同方式分享 2.5]
附註:安裝步驟適用於 FreeBSD 平台,其它 UNIX-Like OS 可能有所不同。
使用軟體:
- [sendmail]
- [Cyrus-SASL]
前言
傳統的 SMTP 主機都由 IP 來判斷使用者是否有送信權,但是這種方式對浮動 IP 的使用者就失去了效用。
若是將 SMTP 主機加入使用者帳號與密碼的認證機制,則無論是固定 IP 還是浮動 IP 都可以使用主機來寄信了。
暫停 sendmail
停掉 sendmail:
# cd /etc/mail # make stop
安裝 Cyrus-SASL
使用以下指令安裝 Cyrus-SASL 認證程式庫:
# cd /usr/ports/security/cyrus-sasl2 # make install clean
再使用以下指令安裝 Cyrus-SASL 認證服務(saslauthd):
# cd /usr/ports/security/cyrus-sasl2-saslauthd # make install clean
加入 sendmail 編譯參數
編輯 /etc/make.conf ,在最尾端加進以下四行:
## SMTP_AUTH 用 ## SENDMAIL_CFLAGS+= -I/usr/local/include -DSASL=2 SENDMAIL_LDFLAGS+= -L/usr/local/lib SENDMAIL_LDADD+= -lsasl2
重新編譯系統中的 sendmail
使用以下指令重新編譯與安裝 sendmail:
# cd /usr/src/usr.sbin/sendmail # make cleandir # make obj # make # make install # cd /etc/mail # make
設定 sendmail 執行參數
先產生主機的設定檔:
# cd /etc/mail # make
用編輯器開啟 /etc/mail/`hostname`.mc 這個檔案,例如:
# vi /etc/mail/`hostname`.mc
在 FEATURE 區段加入以下這行:
FEATURE(`delay_checks')dnl
例如:
FEATURE(blacklist_recipients) FEATURE(local_lmtp) FEATURE(mailertable, `hash -o /etc/mail/mailertable') FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') FEATURE(`delay_checks')dnl
並在檔案內容的最後面加上以下幾行:
dnl set SASL options define(`confRUN_AS_USER',`root:mail')dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS',`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confDONT_BLAME_SENDMAIL',`GroupReadableSASLDBFile')dnl
編輯 /etc/access 這個檔案,讓這個檔案只存在以下的內容(中間空白以 Tab 對齊):
127.0.0.1 RELAY (主機IP) RELAY
再來編輯 /etc/mail/local-host-names 這個檔案,填入主機的 domain name 。
例如:某主機有 aaa.bbb 跟 ccc.ddd 兩個 DN 要用來收信([email protected] 與 [email protected]),則填入以下內容:
aaa.bbb ccc.ddd
設定 Cyrus-SASLauthd 啟動狀態
請在 /etc/rc.conf 加進這行:
saslauthd_enable="YES"
安裝 sendmail 設定檔
請使用以下指令:
# cd /etc/mail # make # make cf # make install
啟動 Cyrus-SASLauthd 與 sendmail
啟動 saslauthd 與 sendmail:
# /usr/local/etc/rc.d/saslauthd.sh start # cd /etc/mail # make start
測試
要測試您的主機是否開始支援 SMTP_AUTH 請用 telnet localhost 25 這個指令,輸入以下指令:
ehlo localhost
觀察是否有以下這行出現:
250-AUTH LOGIN
若是有則代表成功。