幫 sendmail 加入寄件認證 (SMTP AUTH) 功能

出自啟示錄
跳至導覽 跳至搜尋
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

作者:Joe Horn( joehorn AT leobbs DOT net )

授權:[CC授權:姓名標示-非商業性-相同方式分享 2.5]

附註:安裝步驟適用於 FreeBSD 平台,其它 UNIX-Like OS 可能有所不同。


使用軟體:


前言

傳統的 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 要用來收信(user@aaa.bbb 與 user@ccc.ddd),則填入以下內容:

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

若是有則代表成功。