您好,登錄后才能下訂單哦!
本篇內容介紹了“如何配置Sendmail”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
下載及安裝
Sendmail的最新版本為:8.11.3,文件大小為1.2MB。
1.解壓縮
# tar -zxvf Sendmail-8.11.3.tar.gz
#cd Sendmail-8.11.3
如果軟件包是rpm格式,則解壓安裝如下:
#rpm -ivh Sendmail-8.11.3-src.rpm
2.編譯
# ./Build
如果不出什么問題,編譯通過,編譯完成后會自動生成目錄:obj.Linux.2.2.18.i686(這是筆者的核心名稱,也許你的內核名稱與此不同)。
3.安裝
#./Build install
如果是rpm 格式的軟件包,則應編譯如下:
# rpm -ba Sendmail-8.11.1.spec
#rpm -ivh Sendmail*.rpm
至此編譯、安裝完成
配置策略
sendmail.cf是Sendmail的配置文件,它全權決定了Sendmail的屬性。這個文件定義郵件服務器為哪個域工作。其中的內容為特定宏,大多數人對它都抱有恐懼心理,因為文件中的宏代碼實在是太多。sendmail.cf通常是由一個以mc結尾的文件編譯產生。如Redhat自帶一個redhat.mc,用戶可以自己修改其中的一些設置,使之適合自己。筆者的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/lib/Sendmail-cf/m4/cf.m4')
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')
編譯sendmail.mc以產生需要的sendmail.cf文件:# m4 /etc/sendmail.mc > /etc/mail/sendmail.cf。
生成sendmail.cf以后,編輯sendmail.cf。在文件中,查找DS,在其后加入郵件服務器名、域名,這樣可以保證當你以username@mail.domain.com或username@domain.com發信時,用戶都可以收到,如下所示:
# Alias for this host
Cw mail.domain.com domain.com
然后,就可以啟動Sendmail了:# /usr/sbin/Sendmail -bd -q20m。
Sendmail 8.9.x以后的版本,在缺省情況下,都默認不對未驗證的計算機進行轉發(Relay),所以如果要為本機以外的其他計算機進行郵件轉發,這時,應該在相應的配置文件中明確告訴Sendmail要對哪幾個主機進行轉發。如果不考慮驗證,對任何主機都進行轉發的話,可以在sedmail.mc文件中加入一行:FEATURE(promiscuous_relay)。
不過,如果你的計算機是放在公網上的話,建議你不要這樣做,因為這樣做了以后,任何人都可以使用你的計算機進行轉發郵件了,特別是一些別有用心的人或一些兜售客(spammer,垃圾郵件制造者)會利用你的郵件服務器的轉發功能亂發大量的垃圾郵件。
使用說明
通常情況下,Sendmail不會為郵件服務Relay信息,這樣可以防止一些有惡意的人利用別人的郵件服務器亂發郵件。缺省情況下,Sendmail關閉了Relay功能。如果你要為別的服務器Relay郵件,可以進行如下設置——在access文件中加入要為其Relay信件的機器,格式為:
hostname RELAY
ipaddress RELAY
如果要為一個域內多個機器Relay信件,則可以在/etc/mail/access文件中直接加入其子網IP或域名,如下所示:
access文件內容:
domainname.com RELAY(允許為域domainname的所有計算機relay郵件)
localhost RELAY
192.168.1.0 RELAY (為192.168.1.0此網內所有機器relay郵件)
此文件惟一決定了哪些機器、哪個域可以使用郵件服務器轉發郵件。完成后需要進行編譯:#makemap hash access.db < access。
其他配置的文件關系不是很大,可以暫時使用缺省安裝的內容。至此,Sendmail應該可以正常工作了。
接下來是測試郵件服務器的郵件發送功能,注意:測試時,不要只對本地用戶進行測試,如:你的域為abc.com,測試時,不要只在郵件服務器上測試user1@abc.com用戶。因為,此時user1是本地用戶,所以郵件服務器可以對其進行Relay。你應該從局域網上的另一臺機器使用Outlook等郵件客戶端對服務器進行測試。
固定IP用戶(包括跨國性公司的用戶)沒有問題,可以在數據庫中加入其固定IP。對于經常出差在外的人,不適用。
排錯
錯誤1.在Outlook中正確配置POP及SMTP服務器的地址后,出現如下錯誤:
無法連接到服務器。賬號: '192.168.0.1',服務器: '192.168.0.1',
協議: POP3,端口: 110,安全(SSL): 否,套接字錯誤: 10061,
錯誤號: 0x800CCC0E
產生錯誤的原因:主要原因是沒有運行POP3D 和 IMAPD
解決方法:打開 /etc/inetd.conf 查找到
# pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
把#號刪掉。
打開 /etc/services 查找到
#pop3 110/tcp
#pop3 110/udp
將兩行最前面的#號刪掉。
這樣,在restart inetd后,pop3 110端口就可以收信了!如果還是不行,請檢查是否安裝POP3服務軟件包!
錯誤2:很多撥號用戶會碰到以下問題:
由于服務器拒絕收件人之一,無法發送郵件。被拒絕的E-mail地址是“lcl@lettee.com.cn”。主題 'ffd', 賬號: 'mailns.lettee.com.cn (1)', 服務器: 'mailns.lettee.com.cn', 協議: SMTP, 服務器響應: '551 we do not relay', 端口: 25, 安全(SSL): 否, 服務器錯誤: 551, 錯誤號: 0x800CCC79
此錯誤表示:Sendmail不能為你正在使用的客戶機Relay郵件。
錯誤原因:Sendmail 8.9.3以后,缺省限制了Relay功能,主要是為了防止Spammer。使用此服務器的本地用戶可以發信,而以外的用戶不可以通過它發信了。解決方法:在access中加入客戶機的IP,重新編譯access即可。
很多朋友常犯的錯誤是“我已經在access中加入了郵件服務器的IP地址,也對數據庫文件進行了makemap工作,可依然還是不行”。其實你搞錯了,應該加入的是客戶機的IP——試著將你的撥號PC的IP加入到access中,makemap后,你不必重新啟動Sendmail,試試,發信成功了!
正如前面所說的,如果你是撥號上網,下次撥號,你的IP就會改變,當然你的郵件服務器就又不讓你發信了。如果公司的員工常要出差,到外地后,經常是撥通當地ISP來收發郵件。收郵件肯定沒有問題,但是,郵件目前SMTP沒有進行口令驗證,而郵件服務器又要進行轉發控制,不對未記錄在數據庫中的主機轉發。所以,郵件是發不出去了。在這種情況下,如果像本文前面所說的那樣設置全部轉發功能的話,倒是可以讓撥號用戶發信,但同時,帶來的問題就是會有很多Spam,實在是難以做到兩全其美。
解決以上問題有兩種方案,一種為采用SMTP認證,即用戶發送郵件以前,郵件服務器進行用戶身份認證,通過則服務器為其發送郵件,否則拒絕發信;第二種方案是采用動態轉發授權控制(Dynamic Relay authorization control),其工作原理為:撥號用戶撥號上網后,首先收郵件,如果用戶能正確收郵件,則DRAC自動在access.db中加入剛才收郵件用戶的IP,并允許此IP可以發信。不過,30分鐘內,此IP不發/收郵件的話,DRAC將從access.db中刪除此IP。此種機制保證撥號用戶在沒有SMTP認證的情況下,也可以通過遠程郵件服務器發送E-mail。
“如何配置Sendmail”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。