sendmail安裝

[table][tr][td]Sendmail安裝入門

[b]一.安裝sendmail[/b]

如果你在安裝LINUX的時候,選擇了E-MAIL服務,sendmail就已經安裝在LINUX系統中了,並且已經作了一些最基本的設置。假如你在安裝時沒有選擇,或者你需要升級sendmail就可以使用以下方法進行。

1.RPM包安裝方式

1) 首先在光盤上或Internet上找到下面幾個RPM包(Redhat Linux安裝光盤都有):
sendmail-8.9.3-10.i386.rpm sendmail可執行文件
sendmail-cf-8.9.3-10.i386.rpm sendmail.cf生成器
sendmail-doc-8.9.3-10.i386.rpm sendmail.cf文檔

2) 然後使用以下命令安裝或升級:
安裝: rpm –ivh sendmail-8.9.3-10.i386.rpm
升級: rpm –Uvh sendmail-8.9.3-10.i386.rpm

2.重新編譯源碼方式

1) 首先取得最新版本的源代碼:[url=http://www.sendmail.org/][color=#0000ff]http: //www.sendmail.org/[/color][/url]或[url=ftp: //ftp.dlut.edu.cn/pub/unix/mail/sendmail/][color=#0000ff]ftp://ftp.dlut.edu.cn/pub/unix/mail/sendmail/ [/color][/url],將它存放在/usr/local目錄下。
2) 執行以下命令,解壓縮:
cd /usr/local
tar –zxvf sendmail-8.9.3.tar.gz
這樣就會在/home目錄下建立一個sendmail-8.9.3目錄:
/usr/local/sendmail-8.9.3/README
/usr/local/sendmail-8.9.3/src
/usr/local/sendmail-8.9.3/cf
/usr/local/sendmail-8.9.3/doc
3) 編譯:由於sendmail自己帶了一個編譯程序Build,所以不用make命令:
cd /usr/local/sendmail-8.9.3/src
./Build install

[b]二. 用sendmail構建一個E-Mail服務器[/b]

因爲sendmail的功能強大,配置相當繁瑣,無法在一篇文章說完這個內容。我們在纛舉一個架設供一個公司使用的Internet E-Mail服務器爲例進行講述。以下的設置也能運用在較大的電子郵局應用中,但是隨着的用戶數的增多,將會使得整個郵局的性能有所下降,這時也就相應地 要進行更加深入的配置工作。有興趣的讀者可以到本網站《在線培訓》欄目中的翻譯作品子欄目中,閱讀筆者翻譯的《Sendmail》一書。
下面我們就開始吧!

1.將sendmail配置爲守候進程(daemon)啓動
如果你在安裝LINUX的時候,選擇了E-Mail服務。那麼,sendmail就已經成爲一個守候進程啓動了。所謂的守候進程,指的是它就象DOS操作 系統中的常駐內存程序一樣,運行後,它們在後臺偵聽,當需要它進行服務的時候,它就完成特定的功能和服務。在LINUX系統中有許許多多的服務就是以守衛 進程的方式啓動着的。
你可以使用以下命令來確認sendmail是否已經啓動。
ps –axuw|grep sendmail
如果啓動了sendmail,那麼這個命令將顯示出它的相關信息。否則將沒有任何提示地回到命令行。如果沒有啓動,你可以手動啓動。
如果你想讓sendmail自動在系統啓動時啓動,那麼就在/etc/rc.d/rc.net文件中加上以下幾行代碼。
if [-f /usr/lib/sendmail ]; then
(cd /usr/spool/mqueue;rm –f if *)
/usr/lib/sendmail-bd-qlh;echo –n ‘sendmail'>/dev/console
fi

2.設置sendmail.cf

sendmail.cf是sendmail的配置文件。一般說來在安裝了LINUX系統之後,它將自動生成一個適合本系統使用的sendmail.cf文 件,而且在sendmail.8.9.3/cf目錄下還有許多適應各種系統的sendmail.cf的文件樣本,根據文件名也可以
判斷出它們所適用的場合。可以選擇它們替換原有的sendmail.cf文件。也就是將它們複製到/etc目錄中去,覆蓋掉原來的sendmail.cf文件。
而且sendmail還提供了一個sendmail.cf的生成器m4,它通過一系列的人機對話來生成一個用戶定製的sendmail.cf文件。具體的用法可以閱讀m4的幫助文檔。在此就不再詳述。

3.開啓SMTP、POP端口

在Internet中,我們採用POP端口提供接收郵件服務,採用SMTP端口提供發送郵件服務。也就是說,客戶端的郵件發送、接收系統在要發送郵件的時候,就與電子郵局的SMTP端口連接;當要接收郵件的時候,就與電子郵局的POP端口連接。

而一般在所有的類UNIX系統中,SMTP端口默認是打開的,而POP端口在默認狀態下是關閉的,我們必須將它打開。

1) 用root(超級權限)登錄到服務器上;
2) 編輯文件/etc/inetd.conf;
3) 找到描述POP端口的語句;
#pop2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d
#pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d
前面的#號代表這一行是註釋語句,不生效。
POP2是早期的端口協議版本,我們現在一般使用的是POP3.
4) 將POP3的描述語句那一行的註釋號“#”去掉。確保POP2的那一行是註釋語句。
5) 如果沒有找到,就手工補上這一行;(另外,我們還可以驗證一下是否存在SMTP端口的描述語句);
6) 存盤後退出。
7) 運行inetd命令,使得設置生效。
8) 用以下命令驗證,看POP3端口是否打開(生效)。
netstat –a |grep pop
如果打開的話,可以看到以下信息:
tcp 0 0 *:pop3 *:* LISTEN

4.爲新用戶開E-Mail帳號

其實,在LINUX中,要爲一個新的用戶開E-Mail帳號是十分簡單的。只要在LINUX系統中新增一個用戶就可以了。那麼這個用戶帳號和密碼就是E-Mail的帳號和密碼。例如,我爲一個新用戶test開一個E-Mail帳號。就用以下命令:
adduser test
passwd test
這樣,這個新用戶的E-Mail地址就是:
[[email protected]][color=#0000ff][email protected][/color][/email]
密碼當然就是帳號的密碼了。

5.爲E-Mail帳號設置別名

如果,有一些用戶想使用多個E-Mail地址,是不是就要爲他開多個帳號呢?如果是這樣就會增加對帳號管理的難度。所以LINUX給我們提供了一種方法:設置別名。
比如說,一個用戶叫“李小東”,它想擁有以下的幾個E-Mail地址:
[[email protected]][color=#0000ff][email protected][/color][/email]
[[email protected]][color=#0000ff][email protected][/color][/email]
[[email protected]][color=#0000ff][email protected][/color][/email]
我們就通過以下步驟來實現這樣的別名設置。
1) 以root登錄服務器;
2) 新增一個賬號lxd;
3) 編輯文件/etc/aliases;
4) 加上兩行:
xiaodong:lxd
tigger:lxd
5) 存盤退出;
6) 執行命令:
Newaliases
這樣,發給李小東的郵件可以使用三個郵件地址,而李小東只需要使用一個E-Mail帳號:[email protected]就可以接收所有寄給以上三個E-Mail郵件地址的電子郵件。

[b]linux sendmail 安裝[/b]

[b]安裝所需軟件[/b]
sendmail.8.12.18.tar.gz   [url=http://www.sendmail.org/][color=#0000ff]http://www.sendmail.org/[/color][/url]
cyrus-sasl-2.1.18.tar.gz   [url=http://asg.web.cmu.edu/cyrus/][color=#0000ff]http://asg.web.cmu.edu/cyrus/[/color][/url]
安裝步驟
1、 先安裝cyrus-sasl-2.1.18.tar.gz,sendmail安裝時要用到sasl(簡單認證和安全層協議)的
2、 庫文件的頭文件。
解壓縮:
# tar -zxvf cyrus-sasl-2.1.18.tar.gz
編譯:
進入剛解壓的源碼目錄,運行以下命令完成安裝。
#./configure --prefix=/usr/local/sasl2 --enable-login
一定要加--enable-login,因爲SASL2默認不支持login這種驗證方式,而OUTLOOK是通過
login來進行SMTP驗證的。
#make            # 編譯
#make install # 安裝
完成以上linux程序安裝三步曲之後,就可以開始配置和測試了。
2、配置SASL
爲了把SASL應用於sendmail認證,還需進行一些配置工作。sendmail會到/usr/lib目錄下去
找SASL2庫,而我們是把程序安裝在/usr/local/sasl2中,爲什麼不把軟件安裝在/usr/lib目錄
呢?這主要是爲了好管理自已安裝的軟件啦。所以我們要在/usr/lib目錄下做一個鏈接:
# cd /usr/lib
# ln -s /usr/local/sasl2/lib/* .  
#cp -a /usr/local/lib/libsasl* /usr/lib
ok,接着要在/var/目錄下建一個目錄給saslauthd進程存在臨時數據。
# cd /var
# mkdir state
# cd state
# mkdir saslauthd
注:如果沒有這些目錄,運行saslauthd時,會提示出錯。
ok,接着爲確保CYRUS-SASL2函數庫知道怎樣驗證所收來的SASL認證請求,必須創建一
個SASL的配置文件來把MTA程序定義成一個SASL應用。配置文件名爲Sendmail.conf(注
意是大寫的S),位於/usr/lib/sasl2目錄中,也就是/usr/local/sasl2/lib/sasl2這個目錄,記得上
面新建的鏈接了嗎?在該文件中你定義你希望使用的認證數據庫方法,以下這個例子使用
saslauthd來驗證認證請求。
# cd /usr/lib/sasl2
# echo 'pwcheck_method: saslauthd' >; Sendmail.conf
3、測試
ok,現在可以運行saslauthd了,並進行測試。
# cd /usr/local/sasl2/sbin
# ./saslauthd -a shadow
用shadow的用戶和密碼進行驗證
# ./testsaslauthd -u userid -p password
0: OK "Success."
如果出現以上信息,就說明saslauthd正常運行了。testsaslauthd程序默認是沒有編譯的,你
需要在源碼目錄樹的saslauthd子目錄中運行      # make testsaslauthd命令生成。
4、sasl2安裝完成後,就要開始安裝sendmail了。
先解壓sendmail源碼。
# tar -zxvf sendmail.8.12.10.tar.gz
如果要sendmail支持SASL,需要修改源碼的位置配置文件site.config.m4。site.config.m4位
於源碼目錄樹的devtools/Site。文件中應包含以下行:
PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')
APPENDDEF(`confENVDEF', `-DTCPWRAPPERS -DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lwrap -lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/local/sasl2/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/sasl2/include')
第一行配置正則表達式相關內容
第二、三行配置表示在sendmail程序中支持sasl2和tcp_wrapper(可通過hosts.allow和
hosts.deny控制訪問)
第四、五行配置指出sasl2的庫文件和頭文件的位置。
ok,接着在編譯前要建立一些用戶和目錄,並確保有正確的權限。
sendmail必須有一個set-group-id(默認是smmsp組)的程序來在一個組可寫的目錄中查詢
排隊郵件。所以我們要建立一個smmsp用戶和組。並建立如下目錄並設置相應的權限,具
體設置要求可查詢源碼目錄樹下sendmail/SECURITY文檔。
# groupadd smmsp  
# useradd smmsp -d /var/spool/clientmqueue -s /dev/null
# mkdir /var/spool/clientmqueue
# chown -R smmsp:smmsp /var/spool/clientmqueue   
# chmod -R 770 /var/spool/clientmqueue   
# mkdir /etc/mail
# mkdir /var/spool/mqueue
# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
ok,接下來就可以進入源碼目錄樹開始編譯了。
# ./Build -c
-c選項能刪除上次編譯產生的文件。
如果編譯時出現下面錯誤:……
Including /usr/local/sendmail/sendmail-8.13.8/devtools/Site/site.config.m4
Making dependencies in /usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/libsmutil
make[2]: Entering directory `/usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/libsmutil'
rm -f sm_os.h
ln -f -s ../../include/sm/os/sm_os_linux.h sm_os.h
cc -M -I. -I../../sendmail    -I../../include   -I/opt/nph/include -I/usr/share/ssl/include -I/usr/local/sasl2/include -DNEWDB -DMAP_REGEX -DPH_MAP -UNIS -DSTARTTLS -DTCPWRAPPERS -DSASL=2 -DNOT_SENDMAIL    debug.c err.c lockfile.c safefile.c snprintf.c cf.c     >> Makefile
In file included from debug.c:11:
../../sendmail/sendmail.h:1324:23: phclient.h: No such file or directory
In file included from err.c:11:
../../sendmail/sendmail.h:1324:23: phclient.h: No such file or directory
In file included from lockfile.c:14:
../../sendmail/sendmail.h:1324:23: phclient.h: No such file or directory
In file included from safefile.c:14:
../../sendmail/sendmail.h:1324:23: phclient.h: No such file or directory
In file included from snprintf.c:14:
../../sendmail/sendmail.h:1324:23: phclient.h: No such file or directory
In file included from cf.c:11:
../../sendmail/sendmail.h:1324:23: phclient.h: No such file or directory
make[2]: *** [depend] Error 1
make[2]: Leaving directory `/usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/libsmutil'
Making in /usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/libsmutil
make[2]: Entering directory `/usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/libsmutil'
cc -O2 -I. -I../../sendmail    -I../../include   -I/opt/nph/include -I/usr/share/ssl/include -I/usr/local/sasl2/include -DNEWDB -DMAP_REGEX -DPH_MAP -UNIS -DSTARTTLS -DTCPWRAPPERS -DSASL=2 -DNOT_SENDMAIL       -c -o debug.o debug.c
In file included from debug.c:11:
../../sendmail/sendmail.h:1324:23: phclient.h: No such file or directory
In file included from debug.c:11:
../../sendmail/sendmail.h:1330: error: syntax error before "PH"
../../sendmail/sendmail.h:1330: warning: no semicolon at end of struct or union
../../sendmail/sendmail.h:1333: error: syntax error before '}' token
make[2]: *** [debug.o] Error 1
make[2]: Leaving directory `/usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/libsmutil'
make[1]: *** [/usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/libsmutil/libsmutil.a] Error 2
make[1]: Leaving directory `/usr/local/sendmail/sendmail-8.13.8/obj.Linux.2.6.9-22.ELsmp.i686/vacation'
make: *** [all] Error 2
需要安裝PH_MAP或者是openssl,如果是PH_MAP沒有安裝(即需要安裝phclientlib),下載地址爲:[url=http: //www.feep.net/nph/][color=#0000ff]http://www.feep.net/nph/[/color][/url]
openssl的下載地址爲:[url]http://www.openssl.com[/url]
# ./Build install
編譯完成後就可以進行安裝。
5、sendmail配置
          要sendmail正常運行,還需配置幾個文件,首先最重要的就是sendmail.cf 文件了。它在源 碼目錄樹下的cf/cf目錄下有很多例子可參考。你可以拷貝使用。由於sendmail.cf中的語法 很複雜,所以不建議手工修改。我們可以以sendmail.mc文檔配合sendmail-cf目錄下的宏通 過m4預處理器自動生成。m4預處理器用來從一組宏文件中創建sendmail配置文件。宏文件作爲輸入被讀進來。宏被展開,然後寫到一個輸出文件。 sendmail-cf目錄一般放在/usr/share 目錄下。其實sendmail-cf目錄的內容和源碼目錄樹下的cf目錄的內容是一樣的,所以,爲了保證sendmail-cf目錄的內容與安裝版本同 步,要把源碼目錄樹下的cf目錄的內容拷貝到/usr/share/sendmail-cf目錄。
sendmail.mc配置文檔內容如下:
divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
dnl Uncomment and edit the following line if your mail needs to be sent out
dnl through an external mail server:
dnl define(`SMART_HOST',`smtp.your.provider')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/mail/aliases')dnl
define(`STATUS_FILE', `/etc/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl               
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5  
LOGIN PLAIN')dnl
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl The '-t' option will retry delivery if e.g. the user runs over his quota.
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -T<TMPF>; -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
dnl This changes sendmail to only listen on the loopback device 127.0.0.1
dnl and not on any other network devices. Comment this out if you want
dnl to accept email over the network.
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')
dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires
dnl        a kernel patch
dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')
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 have 24x7 DNS do need this.
FEATURE(`accept_unresolvable_domains')dnl
dnl FEATURE(`relay_based_on_MX')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
記得要使以下兩個條語句有效,它的意思是如果access.db訪問控制沒有設置,則啓用以下
驗證方式進行smtp驗證。
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl               
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5  
LOGIN PLAIN')dnl
sendmail宏定義說明
divert(n) 爲m4定義一個緩衝動作,當n=-1時緩衝被刪除,n=0時開始一個新緩衝
OSTYPE 定義宏所使用的操作系統,該宏允許m4程序增加同相關操作系統相關的
文件
Domain 定義MTA將使用哪些域來傳輸郵件
Feature 定義配置文件中使用的一個特定的功能集
Define 定義配置文件中的一個特定的選項值
MASQUERADE_AS 定義sendmail來應答郵件的其它主機名
MAILER 定義sendmail使用的郵件傳輸方法
dnl 註釋
完成sendmail.mc文檔的編寫後就可以用m4程序生成正式的sendmail.cf配置文檔。語法如
下:
# m4 sendmail.mc >; sendmail.cf
也可以用源碼目錄樹下的cf/cf/Build命令生成。前提是你要在該目錄下有一個sendmail.mc
文檔。語法如下:
# ./Build sendmail.cf  
注意:如果你的sendmail.mc 文件include(`/usr/share/sendmail-cf/m4/cf.m4')配置不正確,那麼無法不編譯於安裝。

ok,接着就可以把sendmail.cf and submit.cf文檔安裝到/etc/mail目錄中的,語法如下:
# ./Build install-cf
其實也可以自已用cp命令拷貝的啦。記得把sendmail.mc文檔也拷貝一份到/etc/mail目錄,
以便以後修改配置時可重新生成sendmail.cf文檔。
ok,接着到/etc/mail目錄下配置一些文檔。
# cd /etc/mail  
# echo 'examply.com' >;>; local-host-names   接收郵件的主機名
# echo 'localhost     RELAY'   >;>; access   用來拒絕或允許來自某個域的郵件,本例允許
本地轉發。
# makemap hash access < access   生成access.db數據庫
# touch domaintable   用來把舊域名映射互新域名
# makemap hash domaintable < domaintable  
# touch mailertable   來覆蓋向指定域的路由
# makemap hash mailertable < mailertable  
# touch trusted-users  
# touch virtusertable   用來把用戶和域名映射到其它地址
# makemap hash virtusertable < virtusertable  
# chown root:wheel /var/spool/mqueue/  
# chmod 700 /var/spool/mqueue  
# touch aliases   別名數據庫,文本形式。可參照源碼目錄樹下
sendmail/aliases文件。
# newaliases                    從文本文件中創建一個新的別名數據庫文件。
# sendmail -v -bi 調試啓動。
/etc/mail/aliases: 42 aliases, longest 10 bytes, 432 bytes total
如果出現以上提示信息,則啓動成功。可用以下命令正式啓動:
# sendmail -bd -q30m
該命令以後臺進程方式(-bd)運行,並使其每隔30分鐘(-q30m)輪詢一次未發送郵件隊
列,檢查是否有新郵件。
服務器啓動後,可以用telnet連接服務器。
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 test.tigerhead ESMTP Sendmail 8.12.10/8.12.10; Tue, 30 Mar 2004 14:50:14 +0800
ehlo test 你輸入的命令,按回車結束。
250-test.tigerhead Hello LOCALHOST.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
以250-開頭的爲服務器的響應信息。注意倒數第三行,這就是成功配置smtp驗證的顯示。
輸入quit離開。

安裝完成後爲確保系統安全,還需調整一些目錄的權限。可參考sendmail源碼目錄下
sendmail/SECURITY文檔。
# chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir}
# chmod 0640 /etc/mail/*.{db,pag,dir}
# chmod 0640 /etc/mail/statistics /var/log/sendmail.st
# chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid
-r-xr-sr-x root    smmsp ... /PATH/TO/sendmail
drwxrwx--- smmsp   smmsp ... /var/spool/clientmqueue
drwx------ root    wheel ... /var/spool/mqueue
-r--r--r-- root    wheel ... /etc/mail/sendmail.cf
-r--r--r-- root    wheel ... /etc/mail/submit.cf
6、sendmail功能介紹
aliases 別名數據庫設置
test: test1,test2,test3 設置test羣組別名,test不是一個實際的用戶,只是一個別名。發給
test的信,test1,2,3都可收到。
test: test,testbak 在testbak郵箱中備份test的郵件。
test: test,[email][email protected][/email] 遠程郵件備份,原理同上。
test:    :include: /etc/mail/userlist 使用用戶列表設置羣組。
userlist格式如下:
test1, /
test2, /
test3, /
test4
關於系統預設aliases,由於sendmail預設用mailer-daemon and postmaster作爲資料傳送者,
或郵件退回的帳號,但系統實際沒有這兩個帳號,所以要如下設置別名。
mailer-daemon:   postmaster  
postmaster:      root  
設置完成後不要忘了用newaliases命令生成數據庫。
~/.forward文件配置
其實該文檔的作用和aliases數據庫的作差不多啦,都是配置別名,做郵件轉發的。因爲alises
只能由管理員控制,個人用戶不能修改,所以就可以在個人的目錄下建立一個轉寄文檔。以
設置個人的郵件轉寄列表。文檔格式如下:
test
test1
test2
test3
and os on
但由於個人用戶安全意識差,如果設置不當會有安全漏洞,不建議使用。
access訪問控制列表設置
92.168 RELAY
test.NET OK
test.COM REJECT
test.COM 550 SORRY,WE DON'T ALLOW SPAMMERS HERE
test.ORG DISCARD
Ok--遠程主機可以向你的郵件服務器發送郵件;
RELAY--允許中轉;
REJECT--不能向你的郵件服務器發郵件和不能中轉;
DISCARD--發來的郵件將被丟棄,同時並不向發送者返回錯誤信息。
nnn text-- 發來的郵件將被丟棄,但sendmail將會向發送者返回nnn確定的smtp代碼和text
變量確定的文本描述。
設置完成後要用makemap hash access.db < access命令生成數據庫。
mailq郵件隊列查詢命令。
Q-ID 郵件id號。
Size 郵件容量。
Q-Time 郵件進入隊列(也就是/var/spool/mqueue目錄)的時間和不能郵寄的原因。
Sender/Recipient 發信和收信人的郵箱地址。
mailstats郵寄狀態查詢命令,可查詢sendmail運行作至今郵件收發總計資料。
M      :
msgsfr:發送的郵件數量。
bytes_from:郵件容量  
megsto:收到郵件的數量。  
bytes_to:同上
msgsrej:郵件deny的次數。  
msgsdis:郵件discard的次數。  
Mailer :esmtp對外郵件 ,local本地郵件 。
mail郵件命令
mail 查看/var/spool/mail/目錄下自已郵箱內容。以q退出把看過的郵件保存在
~/mbox中。
mail [[email protected]][color=#0000ff][email protected][/color][/email] 直接發郵件給人。
mail -s 'title text' [[email protected]][color=#0000ff][email protected][/color][/email] < mail.txt   把文檔中內容郵寄出去。
mail -f ~/mbox 查看home目錄下郵箱內容。
用mail發附件也是可行,要用到uuencode and uudecode命令進行編碼。
編碼:uuencode [file] name           example:uuencode hello hello>;hello.uue    default input  
is stdin;default output is stdout.
解碼:uudecode [-o outfile] name     example:uudecode hello.uue 可以用-o選項輸出另外一個
文件名。
# uuencode ~/.bashrc bashrc | mail -s 'test uuencode' [[email protected]][color=#0000ff][email protected][/color][/email] 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章