歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> SendmailSMTPSASL認證詳盡指南

SendmailSMTPSASL認證詳盡指南

日期:2017/2/27 14:32:08   编辑:更多Linux
  一:概述  在現代網絡環境中,mail relay是個討論得非常熱烈的話題,如何在公司的郵件服務器上允許外部用戶或者移動用戶進行mail relay則是人們關注的焦點,隨著標准化的SASL認證的出現並結合開放源軟件Sendmail新版本中對SMTP AUTH的支持,問題已經逐漸變得明朗而易於解決。    二:目的  本文的主要目的是要在任何一台Linux系統上,不論是什麼版本,我們將編譯Cyrus-SASL和Sendmail 8.11來使系統支持SASL的SMTP認證,詳盡解釋如何編譯和實現該功能及相關的問題。    三:環境  我所用的編譯和測試環境是Redhat Linux 6.1和VA Linux 6.2.4,使用cyrus-SASL 1.5.24和Sendmail 8.11.4。在Redhat Linux 7.1上已經不需要再編譯,只需要生成自己的sendmail.cf即可。    四:步驟  1. 從FTP://ftp.andrew.cmu.edu/pub/cyrus-mail下載最新的cyrus-sasl-1.5.24.tar.gz放在/home/jephe目錄下    #cd /home/jephe  #tar xvfz cyrus-sasl-1.5.24.tar.gz  #cd cyrus-sasl-1.5.24  #./configure --enable-login (默認配置不支持login認證機制,但對OutlookEXPress是必需的)  #make  #make install    這將自動安裝所有的SASL庫文件在/usr/local/lib/sasl/目錄和頭文件在/usr/local/include/目?br>跡?但是Sendmail卻在/usr/lib/sasl中尋找這些文件,因此最簡單的辦法就是創建符號鏈接,做下面?br>模?  #cd /usr/lib  #ln -sf /usr/local/lib/sasl sasl  #cp -a /usr/local/lib/libsasl* /usr/lib    最後應該看上去象下面:    [jephe@smtp lib]$ ls libsasl* sasl -l  -r-x------  1 root   root     683 Jul 27 16:32 libsasl.la  lrwxrwxrwx  1 root   root      16 Jul 27 16:32 libsasl.so ->libsasl.so.7.1.8  lrwxrwxrwx  1 root   root      16 Jul 27 16:33 libsasl.so.7 ->libsasl.so.7.1.8  -r-x------  1 root   root    194079 Jul 27 16:32 libsasl.so.7.1.8  lrwxrwxrwx  1 root   root      19 Jul 27 16:32 sasl ->/usr/local/lib/sasl    現在更改文件的許可權限    #chmod -R 500 /usr/local/lib/sasl /usr/local/lib/libsasl* /usr/lib/sasl/usr/lib/libsasl*    再編輯文件/etc/ld.so.conf,加下面的行    #/usr/lib/sasl    然後運行    #/sbin/ldconfig (不應該有任何錯誤警告顯示)    2. 現在編譯Sendmail,從www.sendmail.org下載最新的Sendmail.8.11.4.tar.gz也放於/home/jephe目錄下    #cd /home/jephe  #tar xvfz sendmail.8.11.4.tar.gz  #cd /home/jephe/sendmail-8.11.4    放下面的行到devtools/Site/site.config.m4 (注意文件名不要弄錯,用vi編輯新文件site.config.m4)    APPENDDEF(`confENVDEF', `-DSASL')  APPENDDEF(`conf_sendmail_LIBS', `-lsasl')  APPENDDEF(`confLIBDIRS', `-L/usr/lib/sasl')  APPENDDEF(`confINCDIRS', `-I/usr/local/include')    再用vi編輯一個新的配置文件放在cf/cf/config.mc,內容如下:(注意沒有行號,此處的行號是為了下面對每行進行解釋的方便)    divert(-1) #  # Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.  # All rights reserved.  # Copyright (c) 1983 Eric P. Allman. All rights reserved.  # Copyright (c) 1988, 1993  # The Regents of the University of California. All rights reserved.  #    # By using this file, you agree to the terms and conditions set  # forth in the LICENSE file which can be found at the top level of  # the sendmail distribution.  #  #    1 VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $')  2 OSTYPE(linux)dnl  3 DOMAIN(generic)dnl  4 MAILER(local)dnl  5 MAILER(smtp)dnl    6 define(`confPRIVACY_FLAGS', `authwarnings,needmailhelo,novrfy,noexpn')dnl  7 define(QUEUE_DIR,`/var/spool/mqueue/q*')    8 FEATURE(`use_cw_file')dnl  9 FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl  10 FEATURE(`domaintable',`hash -o /etc/mail/domaintable')dnl  11 FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl    12 dnl FEATURE(`genericstable',`hash -o /etc/mail/genericstable')dnl  13 dnl GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')dnl  14 dnl FEATURE(allmasquerade)dnl  15 dnl FEATURE(masquerade_envelope)dnl  16 dnl MASQUERADE_AS(yourdomain.com)dnl    17 FEATURE(redirect)dnl  18 FEATURE(always_add_domain)dnl  19 FEATURE(`Access_db')dnl  20 FEATURE(`blacklist_recipients')dnl    21 define(`confAUTH_MECHANISMS', `LOGIN PLAIN GSSAPI KERBEROS_V4 DIGEST-MD5CRAM-MD5')dnl  22 TRUST_AUTH_MECH(`LOGIN PLAIN GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5')dnl  23 DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl  24 FEATURE(`no_default_msa')dnl  25 DAEMON_OPTIONS(`Port=587, Name=MSA, M=E')dnl    注: 第6行 增強sendmail的安全性  第7行 使用多個郵件隊列增加性能  第12-16行 此處被注釋了,如果你需要這些高級設置你可以去掉前面的dnl來使用它,  但你必須清楚地知道你在做什麼。  第20-25行 這些行最重要,因為它是用於SMTP AUTH的必須設置    現在你能編譯Sendmail.    #cd /home/jephe/sendmail-8.11.4  #sh ./Build  (如果你已經不是第一次編譯,則要sh ./Build -c 清除上一次編譯的內容)  #cd cf/cf  #sh ./Build config.cf    現在准備編譯Sendmail,編譯之前,請備份你原先版本的sendmail執行文件和配置文件,一般為/usr/sbin/sendmail 和 /etc/sendmail.cf    #cd ../../  #sh ./Build install  #cp -f config.cf /etc/mail/sendmail.cf  #cd /var/spool/mqueue  #mkdir q1 q2 q3 q4 q5 (你可以隨時創建更多的目錄,只要以q開頭即可被立刻當作隊列目錄使用)  #/etc/rc.d/init.d/sendmail restart    確信在編譯過程中你能看見下面的行:    ...-I /usr/lib/include -DNEWDB -DSASL    新版本的sendmail放所有的配置文件在/etc/mail下,你可能需要做下面的事情:    a. #cp /etc/aliases /etc/mail/aliases    b. #cp /etc/sendmail.cw /etc/mail/local-host-names  c. #/etc/rc.d/init.d/sendmail restart    現在,編譯應該結束,試著運行下面的命令檢查輸出    #/usr/sbin/sendmail -d0.1 -bv root grep SASL    你應該看到象下面的行    NETUNIX NEWDB QUEUE SASL SCANF SMTP USERDB XDEBUG    3. 准備設置SASL認證  用vi編輯新文件/usr/lib/sasl/Sendmail.conf放下面的行    pwcheck_method:pam    既然Redhat Linux普遍使用PAM,我們就用PAM 認證,後面再講SASLDB方式的認證。      現在放下面的行到/etc/pam.d/smtp (用vi編輯新文件smtp)    #%PAM-1.0    1 #auth required /lib/security/pam_deny  2 #auth required /lib/security/pam_shells.so    3 auth required /lib/security/pam_pwdb.so shadow md5    4 auth sufficient /lib/security/pam_listfile.so item=user sense=allow file=/etc/m  ail/smtpsuperusers.allow    5 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/mail  /smtpusers.deny  6 auth required /lib/security/pam_listfile.so item=group sense=allow file=/etc/ma  il/smtpgroup.allow    如果你有大量的POP3用戶,且想使用與POP3同樣的密碼,則可使用PAM認證方式,上面的各行解釋如下    第1行 如果你想禁止所有人mail relay時,則簡單地去掉前面的注釋即可  第2行 如果打開了,則如果用戶的登錄shell不在/etc/shells中,則禁止mail relay  第3-6行 使用PAM_listfile模塊通過外部文件控制認證    第3行必須包括此行來使用文件/etc/shadow密碼認證,放在最前面使得任何用戶首先必須通過密碼認證,再檢查後面的規則    第4行 只要用戶被列在文件/etc/mail/smtpsuperusers.allow中,則允許relay注意這裡用的是sufficient不是required,你必須放這一行在最前面,這樣只要檢測到用戶被列在該文件中,則不再往下檢查,無論如何允許mail relay    第5行 如果用戶列在/etc/mail/smtpusers.deny,一行一個用戶名,則禁止relay    第6行如果用戶所在的組列在/etc/mail/smtpgroup.allow且不在/etc/mail/smtpusers.deny中,則允許relay    現在可以用telnet來測試:    #telnet localhost 25



Copyright © Linux教程網 All Rights Reserved