歡迎您光臨本站 註冊首頁

Sendmail環境下實現SMTP認證拒絕垃圾郵件

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  摘要:本文討論了如何利用sendmail 郵件伺服器軟體,配合 cyrus sasl 身分認證程序庫,建立對sendmail的SMTP認證功能以防止伺服器被垃圾郵件發送者濫用。


前言

傳統的郵件傳送協定 (SMTP)不具備對使用者身份進行認證的功能,此相當容易被惡意用戶濫用,而導致自己的郵件伺服器成為廣告郵件或垃圾郵件的轉送點,這是歷史原因造成的。而沒有身分認證功能的郵件傳送機制,也造成系統管理或是網路管理人員,處理問題郵件追蹤時的困難。

因此大多數的郵件系統都拒絕為內部可信賴的園區網以外的使用者轉發郵件(mail relay),但這種限制也造成了合法使用者使用上的不方便。例如出差或是下班回家之後,無法繼續使用公司的郵件伺服器發信。學生放假離開學校之後也不能使用學校的郵件主機發出信件,如果設定郵件伺服器為open relay模式的,則可能會造成伺服器轉發功能被濫用。對於那些免費郵件服務提供商來說也存在著這樣的問題。

以往要解決這個問題,必須購買一些昂貴的商業郵件伺服器,以便在使用者發出信件前先進行身份的認證。但是現在使用新版本的sendmail 郵件服務軟體,搭配 cyrus sasl身分認證程序庫,即可達成往日商業軟體才有的身分認證功能。

請在閱讀本文之前先閱讀本站的「sendmail快速指南一文」。


軟體環境

cyrus-sasl-1.5.24 ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ 本地下載
sendmail.8.11.4 http://www.sendmail.org/8.11.html 本地下載

操作系統為:Redhat 6.2

硬體環境:HP E60 單網卡


安裝認證庫

如果先前已經安裝有舊版本的 Cyrus SASL 請先將其移除,方法是手工刪除/usr/lib/sasl或/usr/local/lib/sasl目錄。

安裝過程如下:

[root@mail src]# cd /usr/src/
[root@mail src]# tar xvfz cyrus-sasl-1.5.24.tar.gz
[root@mail src]# cd cyrus-sasl-1.5.24
[root@mail cyrus]# ./configure -prefix=/usr --enable-login --with-pwcheck --with-digest
[root@mail cyrus]# make
[root@mail cyrus]# make install

安裝完成後,建立一個/var/pwcheck目錄,pwcheck程序要用此目錄。

接下來必須設置 sendmail 的使用者身分查驗方式,這裡使用系統帳號與密來進行驗證:

[root@mail cyrus-sasl-1.5.24]# cd /usr/lib/sasl/
[root@mail sasl]# cat > Sendmail.conf
pwcheck_method: shadow
^D

請特別留意Sendmail.conf開頭的S字母必須為大寫。

關於 Cyrus SASL 認證程序庫更詳細的說明,請參閱 Cyrus SASL for System Administrators。 <http://www.sendmail.org/%7Eca/email/cyrus/sysadmin.html>


編譯及配置Sendmail

如果系統中正在執行舊版的sendmail請先將其停止,停止 sendmail 的方法是 killall sendmail 或是先找出 sendmail 的 pid 然後 kill pid 將其停止。

解壓軟體包:

[root@email src]# tar xvfz sendmail.8.11.4.tar.gz
[root@email src]# cd sendmail-8.11.4

在子目錄devtools/Site/下創建site.config.mc文件,內容如下

PREPENDDEF(`confMAPDEF',`-DMAP_REGEX')
PREPENDDEF(`confOPTIMIZE',`-O6')
PREPENDDEF(`confOPTIMIZE',`-O6')
APPENDDEF(`confENVDEF',`-DSASL')
APPENDDEF(`conf_sendmail_LIBS',`-lsasl')
APPENDDEF(`confLIBDIRS',`-L/usr/local/lib -L/usr/local/lib/sasl')
APPENDDEF(`confINCDIRS',`-I/usr/local/include -I/usr/local/include/sasl')

編譯sendmail:

[root@mail sendmail-8.11.4]# /usr/src/sendmail-8.11.4/sendmail
[root@mail sendmail]# sh Build -c -f ../devtools/Site/site.config.mc

安裝:

[root@mail sendmail]# sh Build install

生成配置文件:

[root@mail sendmail-8.11.4]# cd cf/cf/

創建文件sendmail.mc文件,內容如下:

divert(-1)
dnl This is the macro config file used to generate the /etc/sendmail.cf
dnl file. If you modify thei file you will have to regenerate the
dnl /etc/sendmail.cf by running this macro config through the m4
dnl preprocessor:
dnl m4 /etc/sendmail.mc > /etc/sendmail.cf
dnl You will need to have the Sendmail-cf package installed for this to work.
include(`/usr/src/sendmail-8.11.4/cf')
define(`confDEF_USER_ID',`8:12')
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
define(`confAUTO_REBUILD')
define(`confTO_CONNECT', `1m')
define(`confTRY_NULL_MX_LIST',true)
define(`confDONT_PROBE_INTERFACES',true)
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
FEATURE(`smrsh',`/usr/sbin/smrsh')
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(smtp)
MAILER(procmail)
FEATURE(`access_db')
FEATURE(`blacklist_recipients')
dnl We strongly recommend to comment this one out if you want to protect
dnl yourself from spam. However, the laptop and users on computers that do
dnl not hav 24x7 DNS do need this.
FEATURE(`accept_unresolvable_domains')
dnl FEATURE(`relay_based_on_MX')
TRUST_AUTH_MECH(`LOGIN PLAIN ')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
FEATURE(`no_default_msa')dnl turn off default entry for MSA
DAEMON_OPTIONS(`Port=25, Name=MSA, M=E')dnl

然後運行:

[root@email cf]# sh Build sendmail.cf

再對原有的配置文件備份以後,將新生成的sendmail.cf拷貝到目錄/etc/mail中。

最後啟動sendmail:

[root@email mail]# /usr/sbin/sendmail -bd -q20m


測試

檢查SASL是否已經生效。過程如下:

[root@mail cf]# sendmail -d0.1 -bv root | grep SASL
NETINET NETUNIX NEWDB QUEUE SASL SCANF SMTP USERDB XDEBUG

其中有SASL,表示Sendmail確實支持SASL了。


[火星人 ] Sendmail環境下實現SMTP認證拒絕垃圾郵件已經有588次圍觀

http://coctec.com/docs/security/show-post-72830.html