佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > linux系統(tǒng)下郵件服務(wù)器sendmail的配置

linux系統(tǒng)下郵件服務(wù)器sendmail的配置

熱門標(biāo)簽:網(wǎng)站建設(shè) 太平洋壽險(xiǎn)電話營銷 記事本 IT外包 呼叫外包 外呼線路 人工座席 呼叫中心解決方案
安裝所需軟件
sendmail.8.12.10.tar.gz   http://www.sendmail.org/
cyrus-sasl-2.1.18.tar.gz  http://asg.web.cmu.edu/cyrus/
安裝步驟
1、        先安裝cyrus-sasl-2.1.18.tar.gz,sendmail安裝時(shí)要用到sasl(簡單認(rèn)證和安全層協(xié)議)的庫文檔的頭文檔。
解壓縮:
# tar -zxvf cyrus-sasl-2.1.18.tar.gz
編譯:
進(jìn)入剛解壓的源碼目錄,運(yùn)行以下命令完成安裝。
#./configure --prefix=/usr/local/sasl2 --enable-login
一定要加--enable-login,因?yàn)镾ASL2默認(rèn)不支持login這種驗(yàn)證方式,而OUTLOOK是通過
login來進(jìn)行SMTP驗(yàn)證的。
#make           # 編譯
#make install        # 安裝
完成以上linux程式安裝三步曲之后,就能夠開始配置和測試了。
2、配置SASL
為了把SASL應(yīng)用于sendmail認(rèn)證,還需進(jìn)行一些配置工作。sendmail會(huì)到/usr/lib目錄下去
找SASL2庫,而我們是把程式安裝在/usr/local/sasl2中,為什么不把軟件安裝在/usr/lib目錄
呢?這主要是為了好管理自已安裝的軟件啦。所以我們要在/usr/lib目錄下做一個(gè)鏈接:
# cd /usr/lib
# ln -s /usr/local/sasl2/lib/* .
ok,接著要在/var/目錄下建一個(gè)目錄給saslauthd進(jìn)程存在臨時(shí)數(shù)據(jù)。
# cd /var
# mkdir state
# cd state
# mkdir saslauthd
注:假如沒有這些目錄,運(yùn)行saslauthd時(shí),會(huì)提示出錯(cuò)。
ok,接著為確保CYRUS-SASL2函數(shù)庫知道怎樣驗(yàn)證所收來的SASL認(rèn)證請求,必須創(chuàng)建一
個(gè)SASL的配置文檔來把MTA程式定義成一個(gè)SASL應(yīng)用。配置文檔名為Sendmail.conf(注
意是大寫的S),位于/usr/lib/sasl2目錄中,也就是/usr/local/sasl2/lib/sasl2這個(gè)目錄,記得上
面新建的鏈接了嗎?在該文檔中您定義您希望使用的認(rèn)證數(shù)據(jù)庫方法,以下這個(gè)例子使用
saslauthd來驗(yàn)證認(rèn)證請求。
# cd /usr/lib/sasl2
# echo 'pwcheck_method: saslauthd' >; Sendmail.conf
3、測試
ok,現(xiàn)在能夠運(yùn)行saslauthd了,并進(jìn)行測試。
# cd /usr/local/sasl2/sbin
# ./saslauthd -a shadow               
用shadow的用戶和密碼進(jìn)行驗(yàn)證
# ./testsaslauthd -u userid -p password
0: OK "Success."
假如出現(xiàn)以上信息,就說明saslauthd正常運(yùn)行了。testsaslauthd程式默認(rèn)是沒有編譯的,您
需要在源碼目錄樹的saslauthd子目錄中運(yùn)行     # make testsaslauthd命令生成。
4、sasl2安裝完成后,就要開始安裝sendmail了。
先解壓sendmail源碼。
# tar -zxvf sendmail.8.12.10.tar.gz
假如要sendmail支持SASL,需要修改源碼的位置配置文檔site.config.m4。site.config.m4位
于源碼目錄樹的devtools/Site。文檔中應(yīng)包含以下行:
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')
第一行配置正則表達(dá)式相關(guān)內(nèi)容
第二、三行配置表示在sendmail程式中支持sasl2和tcp_wrapper(可通過hosts.allow和
hosts.deny控制訪問)
第四、五行配置指出sasl2的庫文檔和頭文檔的位置。
ok,接著在編譯前要建立一些用戶和目錄,并確保有正確的權(quán)限。
sendmail必須有一個(gè)set-group-id(默認(rèn)是smmsp組)的程式來在一個(gè)組可寫的目錄中查詢
排隊(duì)郵件。所以我們要建立一個(gè)smmsp用戶和組。并建立如下目錄并配置相應(yīng)的權(quán)限,具
體配置需要可查詢源碼目錄樹下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,接下來就能夠進(jìn)入源碼目錄樹開始編譯了。
# ./Build -c
-c選項(xiàng)能刪除上次編譯產(chǎn)生的文檔。
# ./Build install
編譯完成后就能夠進(jìn)行安裝。
5、sendmail配置
sendmail正常運(yùn)行,還需配置幾個(gè)文檔,首先最重要的就是sendmail.cf 文檔了。他在源
碼目錄樹下的cf/cf目錄下有很多例子可參考。您能夠拷貝使用。由于sendmail.cf中的語法
很復(fù)雜,所以不建議手工修改。我們能夠以sendmail.mc文檔配合sendmail-cf目錄下的宏通
過m4預(yù)處理器自動(dòng)生成。m4預(yù)處理器用來從一組宏文檔中創(chuàng)建sendmail配置文檔。宏文
件作為輸入被讀進(jìn)來。宏被展開,然后寫到一個(gè)輸出文檔。sendmail-cf目錄一般放在/usr/share
目錄下。其實(shí)sendmail-cf目錄的內(nèi)容和源碼目錄樹下的cf目錄的內(nèi)容是相同的,所以,為
了確保sendmail-cf目錄的內(nèi)容和安裝版本同步,要把源碼目錄樹下的cf目錄的內(nèi)容拷貝到
/usr/share/sendmail-cf目錄。
sendmail.mc配置文檔內(nèi)容如下:
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; -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
記得要使以下兩個(gè)條語句有效,他的意思是假如access.db訪問控制沒有配置,則啟用以下
驗(yàn)證方式進(jìn)行smtp驗(yàn)證。
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定義一個(gè)緩沖動(dòng)作,當(dāng)n=-1時(shí)緩沖被刪除,n=0時(shí)開始一個(gè)新緩沖
OSTYPE                        定義宏所使用的操作系統(tǒng),該宏允許m4程式增加同相關(guān)操作系統(tǒng)相關(guān)的
文檔
Domain                        定義MTA將使用哪些域來傳輸郵件
Feature                        定義配置文檔中使用的一個(gè)特定的功能集
Define                        定義配置文檔中的一個(gè)特定的選項(xiàng)值
MASQUERADE_AS                定義sendmail來應(yīng)答郵件的其他主機(jī)名
MAILER                        定義sendmail使用的郵件傳輸方法
dnl                        注釋
完成sendmail.mc文檔的編寫后就能夠用m4程式生成正式的sendmail.cf配置文檔。語法如
下:
# m4 sendmail.mc >; sendmail.cf
也能夠用源碼目錄樹下的cf/cf/Build命令生成。前提是您要在該目錄下有一個(gè)sendmail.mc
文檔。語法如下:
# ./Build sendmail.cf
ok,接著就能夠把sendmail.cf and submit.cf文檔安裝到/etc/mail目錄中的,語法如下:
# ./Build install-cf
其實(shí)也能夠自已用cp命令拷貝的啦。記得把sendmail.mc文檔也拷貝一份到/etc/mail目錄,
以便以后修改配置時(shí)可重新生成sendmail.cf文檔。
ok,接著到/etc/mail目錄下配置一些文檔。
# cd /etc/mail
# echo 'examply.com' >;>; local-host-names         接收郵件的主機(jī)名
# echo 'localhost    RELAY'  >;>; access                 用來拒絕或允許來自某個(gè)域的郵件,本例允許
本地轉(zhuǎn)發(fā)。
# makemap hash access 生成access.db數(shù)據(jù)庫
# touch domaintable                                 用來把舊域名映射互新域名
# makemap hash domaintable 來覆蓋向指定域的路由
# makemap hash mailertable 用來把用戶和域名映射到其他地址
# makemap hash virtusertable 別名數(shù)據(jù)庫,文本形式??蓞⒄赵创a目錄樹下
sendmail/aliases文檔。
# newaliases                                          從文本文檔中創(chuàng)建一個(gè)新的別名數(shù)據(jù)庫文檔。
# sendmail -v -bi                                調(diào)試啟動(dòng)。
/etc/mail/aliases: 42 aliases, longest 10 bytes, 432 bytes total
假如出現(xiàn)以上提示信息,則啟動(dòng)成功??捎靡韵旅钫絾?dòng):
# sendmail -bd -q30m
該命令以后臺進(jìn)程方式(-bd)運(yùn)行,并使其每隔30分鐘(-q30m)輪詢一次未發(fā)送郵件隊(duì)
列,檢查是否有新郵件。
服務(wù)器啟動(dòng)后,能夠用telnet連接服務(wù)器。
# 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                您輸入的命令,按回車結(jié)束。
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-開頭的為服務(wù)器的響應(yīng)信息。注意倒數(shù)第三行,這就是成功配置smtp驗(yàn)證的顯示。
輸入quit離開。
安裝完成后為確保系統(tǒng)安全,還需調(diào)整一些目錄的權(quán)限??蓞⒖?b>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 別名數(shù)據(jù)庫配置
test:        test1,test2,test3        配置test群組別名,test不是個(gè)實(shí)際的用戶,只是個(gè)別名。發(fā)給
test的信,test1,2,3都可收到。
test:        test,testbak                在testbak郵箱中備份test的郵件。
test:        test,test@163.com        遠(yuǎn)程郵件備份,原理同上。
test:   :include: /etc/mail/userlist        使用用戶列表配置群組。
userlist格式如下:
test1, \
test2, \
test3, \
test4
關(guān)于系統(tǒng)預(yù)設(shè)aliases,由于sendmail預(yù)設(shè)用mailer-daemon and postmaster作為資料傳送者,
或郵件退回的帳號,但系統(tǒng)實(shí)際沒有這兩個(gè)帳號,所以要如下配置別名。
mailer-daemon:  postmaster
postmaster:     root
配置完成后不要忘了用newaliases命令生成數(shù)據(jù)庫。
~/.forward文檔配置
其實(shí)該文檔的作用和aliases數(shù)據(jù)庫的作差不多啦,都是配置別名,做郵件轉(zhuǎn)發(fā)的。因?yàn)閍lises
只能由管理員控制,個(gè)人用戶不能修改,所以就能夠在個(gè)人的目錄下建立一個(gè)轉(zhuǎn)寄文檔。以
配置個(gè)人的郵件轉(zhuǎn)寄列表。文檔格式如下:
test
test1
test2
test3
and os on
但由于個(gè)人用戶安全意識差,假如配置不當(dāng)會(huì)有安全漏洞,不建議使用。
access訪問控制列表配置
92.168 RELAY
test.NET        OK
test.COM REJECT
test.COM        550 SORRY,WE DON'T ALLOW SPAMMERS HERE
test.ORG        DISCARD
Ok--遠(yuǎn)程主機(jī)能夠向您的郵件服務(wù)器發(fā)送郵件;
RELAY--允許中轉(zhuǎn);
REJECT--不能向您的郵件服務(wù)器發(fā)郵件和不能中轉(zhuǎn);
DISCARD--發(fā)來的郵件將被丟棄,同時(shí)并不向發(fā)送者返回錯(cuò)誤信息。
nnn text-- 發(fā)來的郵件將被丟棄,但sendmail將會(huì)向發(fā)送者返回nnn確定的smtp代碼和text
變量確定的文本描述。
配置完成后要用makemap hash access.db 命令生成數(shù)據(jù)庫。
mailq郵件隊(duì)列查詢命令。
Q-ID                        郵件id號。
Size                        郵件容量。
Q-Time                        郵件進(jìn)入隊(duì)列(也就是/var/spool/mqueue目錄)的時(shí)間和不能郵寄的原因。
Sender/Recipient        發(fā)信和收信人的郵箱地址。
mailstats郵寄狀態(tài)查詢命令,可查詢sendmail運(yùn)行作至今郵件收發(fā)總計(jì)資料。
M     :
msgsfr:發(fā)送的郵件數(shù)量。
bytes_from:郵件容量
megsto:收到郵件的數(shù)量。
bytes_to:同上
msgsrej:郵件deny的次數(shù)。
msgsdis:郵件discard的次數(shù)。
Mailer :esmtp對外郵件 ,local本地郵件 。
mail郵件命令
mail                                查看/var/spool/mail/目錄下自已郵箱內(nèi)容。以q退出把看過的郵件保存在
~/mbox中。
mail test@example.com                直接發(fā)郵件給人。
mail -s 'title text' test@example.com 把文檔中內(nèi)容郵寄出去。
mail -f ~/mbox                        查看home目錄下郵箱內(nèi)容。
用mail發(fā)附件也是可行,要用到uuencode and uudecode命令進(jìn)行編碼。
編碼: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選項(xiàng)輸出另外一個(gè)
文檔名。
# uuencode ~/.bashrc bashrc | mail -s 'test uuencode'
test@example.com
五、其他配置。
要想更好的使用sendmail,常用到的一些配置:
1、限制最大郵件。
vi /etc/sendmail.cf
# maximum message size
O MaxMessageSize=5000000    (注:5M)
2、最大的群發(fā)數(shù)目。
vi /etc/sendmail.cf
# maximum number of recipients per SMTP envelope
O MaxRecipientsPerMessage=20  (注:20個(gè))
3、域名文檔----local-host-name
能夠用他來實(shí)現(xiàn)虛擬域名或多域名支持。
/etc/mail/local-host-name
v1mail.com
v2mail.com
.......
4、mail別名文檔--aliases。
vi /etc/aliases
系統(tǒng)內(nèi)部別名:peng:zpeng,hero,mmmn,yt   peng是我的用戶名,其他的是別名,用逗號隔開。
轉(zhuǎn)發(fā)到其他的郵箱:peng:zpeng@sina.com,yt.sohu.com
#newaliases   --寫到庫中
5、郵件控制文檔--access
relay、ok、reject和discard。relay能夠?qū)崿F(xiàn)轉(zhuǎn)發(fā)。ok是用來允許用戶的任意訪問,他會(huì)覆蓋任何其他已建立的檢查(實(shí)際配置中,最好別設(shè)這項(xiàng),除非您對該用戶是絕對信任的);reject能夠?qū)崿F(xiàn)對來訪地址的拒絕,他根本就不容許該地址和您的郵件服務(wù)器進(jìn)行連接通信;discard的作用是在接收到傳輸?shù)泥]件消息后,偷偷地把他丟棄掉(在發(fā)送者看來,他的郵件的確是接收了,但他并不知道,發(fā)送的目的地址根本不可能接收到他的郵件,服務(wù)器巧妙地欺騙了他。
vi /etc/mail/access.
localhost.localdomain    RELAY      ---允許
localhost                        RELAY
127.0.0.1                       RELAY
peng@sina.com              ok
@sexgirl.net                   reject
211.77.22.45                  discard
#makemap hash access.db 寫入庫中
6、虛擬用戶文檔---virtusertable.
這個(gè)文檔能夠mail重名問題。
例如:您有兩個(gè)域名,virt1.com and virt2.com,但是都有peng這個(gè)用戶:
peng@virt1.com and peng@virt2.com,這是兩個(gè)用戶。但對于系統(tǒng)用戶來說,他只認(rèn)系統(tǒng)用戶peng,只能通過一下改:
vi /etc/mail/virtusertable
peng@virt2.com   r010
這樣就能夠了。在新開一個(gè)用戶r010,但是peng@virt2.com在客戶端的pop3 and smtp server的用戶名和口令要用r010的。
#makemap hask virtusertable.db
# /usr/sbin/sendmail -d0.1 -bv root |grep SASL
        NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS QUEUE SASL SCANF
我的問題已找到了是/usr/lib/sasl/Sendmail.conf的文檔名中的S沒有大寫,問題已解決
 

標(biāo)簽:那曲 綏化 延安 那曲 淮北 泰安 山南 常州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux系統(tǒng)下郵件服務(wù)器sendmail的配置》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    高青县| 左贡县| 松滋市| 华宁县| 平南县| 平罗县| 威远县| 翼城县| 甘孜县| 铜陵市| 宜君县| 滨海县| 漾濞| 东海县| 尼木县| 青龙| 蓬莱市| 理塘县| 柏乡县| 城口县| 定安县| 金昌市| 开阳县| 长宁县| 海南省| 沙洋县| 盱眙县| 班玛县| 潼南县| 莱阳市| 柳林县| 思茅市| 休宁县| 轮台县| 米脂县| 嘉祥县| 霍林郭勒市| 沙洋县| 大足县| 马公市| 敦化市|