Sendmail是一個很受歡迎的SMTP服務器,在企業環境中,無論是只有少量用戶還是數以千計的雇員它都可以靈活的給以足夠支持
。它也是個復雜的軟件,在你的Linux服務器上配置Sendmail以使它運行起來並不是一件容易的事。盡管Sendmail的開發者一直試圖使配置過程簡單化,但你所在公司的需求將最終決定配置一個高效的Sendmail服務器的難度。
我的文章“在Linux中配置Sendmail服務器”回顧了最初的安裝過程以及在Linux中配置和運行Sendmail所要用到的一些基礎配置文件。這篇文章將告訴你怎樣進一步掌握基礎的配置文件並且解釋將Sendmail配置成一台可靠的SMTP服務器的步驟。
配置文件
從8.9版本開始,Sendmail所必需的所有配置文件都放在目錄/etc/mail/下,而且命名規則有些改變。如果你用的是老版本,請注意表格A。
Pre-Sendmail 8.9 location
/etc/sendmail/sendmail.cw
/etc/aliases
/etc/sendmail.ct
/etc/sendmail.hf
Sendmail 8.9+ location
/etc/mail/local-host-names
/etc/mail/aliases
/etc/mail/trusted-users
/etc/mail/helpfile
主配置文件還是/etc/mail/sendmail.cf。這個文件是在初始安裝時由sendmail.mc創建的。它允許Sendmail根據諸如OSTYPE和MAILER這樣的一些選項來推斷自己的初始配置。
雖然大多數人都不需要重新編輯主配置文件,但有些人還是要通過這些晦澀難懂的語法來創建新的Sendmail管理員賬戶。然而,振作起來,事情並不象開始看到的那麼糟。
首先,我們默認Sendmail已經安裝並且是初始的設置狀態。普通人在第一次安裝使用Sendmai時,總是會運行一個開放的中繼,這樣做使得很容易被無聊的人發現並利用。現在你通過修改/etc/mail/relay-domains文件可以很容易的指定可以通過你的服務器的地址。在這個文本文件中列出了可以通過你的服務器發送電子郵件的主機名。對大多數公司而言,只需要列出本地主機名和別名,但大一些的公司可能需要添加大量主機。
這一步很重要,設置Realtime Blackhole Lists(RBLs)添加權限。如果你一個想搗亂的人使用你的服務器並且利用列表中的信息來發送垃圾郵件,就會引起發送失敗和550錯誤,直到你將其從列表中刪去。所以最好是只將那些有權訪問Sendmail權限的主機寫在列表中。
對服務器而言,/etc/mail/local-host-names文件是很有用的
。將FEATURE(use_cw_file)包含在你的sendmail.mc文件當中,Sendmail將用本地主機名來作為你的本地別名。
# local-host-names - aliases for your server
example.com
www.example.com
mail.example.com
otherdomain.com
如果Sendmail沒有在收件列表中發現相應的主機名,它將拒絕接受對方發來的郵件。請記住在修改了這個或其他任何配置文件後你必須重啟Sendmail。這些修改可以這樣完成,重新啟動/etc/init.d/sendmail或發送命令kill –1
別名
文件/etc/mail/aliases允許為本地用戶,應用程序,甚至其他別名提供虛擬郵箱:
# Basic system aliases
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts
bin: root
daemon: root
# Well-known aliases
manager: root
webmaster: tnooning, bmarley, hsimpson
complaints: /var/log/complaints
sysadmin: root
你會發現Web管理員別名有多重收件人列表。這是正確的。只要確保所有的本地用戶名都是用逗號隔開的。而且,有關別名的意見將會以電子郵件的形式發到/var/log/complaints文件中。這是我最近發現的並且已經開始大量應用。需要注意的事,在你修改了別名文件之後,你必須執行新的別名。這是Sendmail自帶的程序,可以根據別名文件創建必要的數據庫。
設置可信任用戶
這個可選的特性在sendmail.mc中的名稱為use_ct_file
。這個列表中的用戶可以改變電子郵件的寄件人。在/etc/mail/trusted-users文件中每個用戶名占一行。這對運行在你的服務器上的腳本或應用程序給某個人或組發信息是非常有用的。它可以更容易的快速識別一個電子郵件的信息。例如,一個查詢DNS服務器的腳本和郵件錯誤可以由
[email protected]發出。
虛擬用戶表格
虛擬用戶表格(/etc/mail/virtusertable)向你服務器上的真實郵箱發送虛擬域和郵箱的郵件。這些郵箱可以是本地的,遠程的,或是由/etc/mail/aliases定義的別名。這些是在你的sendmail.mc文件中一命令行的形式進行初始配置的。這個文件一般為:
[email protected] root
[email protected] [email protected]
@example.com tom
在以上的例子中,我們已經有了一個example.com文件。第一行
[email protected]用來定位本地郵箱位置。下一行的
[email protected]是指遠程郵件地址
[email protected]。@example.com是一個通配符,它允許任何用戶名接受以@example.com結尾發送來的郵件。因此,任何向example.com發送的郵件都存放在本地郵箱中。
RBLs
RBLs是由公眾組織維護的數據庫,他們的目標是努力阻止服務器被持續不斷的無聊的垃圾郵件所淹沒。即使是今天,這樣的事情還是時常發生,包括很受歡迎的http://www.orbz.org/, http://relays.osirusoft.com/, 和http://mail-abuse.org/rbl/,你可以通過以下的命令讓Sendmail訪問這些站點:
FEATURE(rbl, `rbl.example.org', `Rejected – see http://example.org/')
如果這個特性成功執行,它將檢驗每個發向你的服務器的郵件,在RBL中查找對方的地址,以決定是否接受這封郵件。在上面的例子中,當有郵件被拒絕時,將出現一個失敗信息,然後引導用戶在http://example.org/上查找相應原因。由於這些信息保存在磁盤上,對經常收到海量信息的大型站點特別有用。
管理Sendmail
如果你習慣於在Linux中執行程序,你可能也會經常檢查日志文件
。Sendmail很好的利用的它的日志文件,你可以追捕到大部分問題的所在。mail.log和mail.err是你需要注意的兩個主要文件,還有就是ail.warn和mail.info。這些文件有許多共同之處,所以我一般只看前兩個文件。一般而言,你可以在 /var/log/下找到這些文件,對特定的系統和Linux版本,可能在其他目錄下。如果必要的話,你可以察看/etc/syslog.conf文件。典型的電子郵件成功發送一般是這樣的:
Oct 25 18:22:14 example sendmail[29322]: SAA29322: from=user, size=193, class=0, pri=60193, nrcpts=2, msgid=<
[email protected]>, relay=user@local
Oct 25 18:22:14 example sendmail[29324]: SAA29322:
[email protected], ctladdr=user (500/1000), delay=00:00:00, xdelay=00:00:00, mailer=local, stat=Sent
你可以在mail.log看到和下面類似的拒絕信息:
Oct 23 14:23:51 example sendmail[27467]: OAA27467: ruleset=check_rcpt, arg1=, relay=west1.mail-abuse.org [204.152.186.193], reject=550 ... Relaying denied
通常,你所需要的所有信息都存儲在這些日志文件中,包括用戶名,主機名,出錯代碼。這些出錯代碼很有用處,可以通過這些讓你對自己有更好的了解。
總結
Sendmail是我們目前使用的最流行的SMTP服務器之一。無論是只有少數用戶還是對有數千雇員的大公司它都顯得游刃有余。通過使用集中式的結構目錄和不斷增強的語法功能,整個結構變得簡單明了。你現在應該可以更好的了解Sendmail的配置和使用的日志文件,可以為你的公司配置一個SMTP服務器了。
你可以在mail.log看到和下面類似的拒絕信息:
Oct 23 14:23:51 example sendmail[27467]: OAA27467: ruleset=check_rcpt, arg1=, relay=west1.mail-abuse.org [204.152.186.193], reject=550 ... Relaying denied
通常,你所需要的所有信息都存儲在這些日志文件中,包括用戶名,主機名,出錯代碼。這些出錯代碼很有用處,可以通過這些讓你對自己有更好的了解。
總結
Sendmail是我們目前使用的最流行的SMTP服務器之一。無論是只有少數用戶還是對有數千雇員的大公司它都顯得游刃有余。通過使用集中式的結構目錄和不斷增強的語法功能,整個結構變得簡單明了。你現在應該可以更好的了解Sendmail的配置和使用的日志文件,可以為你的公司配置一個SMTP服務器了。