配置Sendmail
要生成sendmail.cf文件
一般是編譯sendmail.mc來生成sendmail.cf,這樣的好處是通過編譯,會查看出一些sendmail的設(shè)置錯誤和漏洞。
# cd /etc/mail # vi sendmail.mc
(1)找到:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
打開注解,啟用相應(yīng)的認證機制,主要是為了支持Outlook。
(2)找到:
DAEMON_OPTIONS(`Port=25, Name=MSA,M=Ea')dnl 這樣sendmail將在25端口進行強制身份認證
dnl DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
dnl DAEMON_OPTIONS(`Port=587, Name=MSA,M=a')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
打開注解,啟用相應(yīng)的認證機制,主要是為了支持Outlook。
(3)在(2)后添加兩行:
設(shè)置MTA和MSA端口。
(4)找到:
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
將該行注釋掉,以允許通過網(wǎng)絡(luò)連接Sendmail。
(5)找到:
dnl FEATURE(`accept_unresolvable_domains')
禁止不可解析域名的轉(zhuǎn)發(fā)郵件。
最后保存退出。
編譯sendmail.mc生成sendmail.cf文件
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf # /etc/rc.d/init.d/sendmail restart --重起sendmail服務(wù)。
如果在執(zhí)行m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 報錯的話,那么檢查是否安裝sendmail-cf.*.rpm是否安裝:
# rpm -qa | grep sendmail-cf
如果沒有安裝,則需要在安裝光盤中找到sendmail-cf包,并安裝:
# rpm -ivh sendmail-cf*.rpm
檢測編譯結(jié)果
1、檢測SASL被編譯到sendmail中。
#/usr/sbin/sendmail -d0.1 -bv root |grep SASL
輸出類似如下:
NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS
保證你看到SASL就是正確的。
2、檢測25端口:
# telnet localhost 25
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 fyhtest.163.net ESMTP Sendmail 8.12.5/8.12.5; Thu, 10 Apr 2003 16:35:42 -0400 ehlo test 250-fyhtest.163.net Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-DELIVERBY 250 HELP
quit ---退出
只要輸出有LOGIN PLAIN就可以了。
到這里,sendmail就配置完了,你可以添加一個用戶進行測試:
#useradd test #passwd test 設(shè)置密碼
把你服務(wù)器的域名添加到/etc/mail/local-host-names中。
其他設(shè)置
要想更好的使用sendmail,常用到的一些設(shè)置:
1、限制最大郵件。
# vi /etc/mail/sendmail.cf # maximum message size MaxMessageSize=5000000 (注:5M)
2、最大的群發(fā)數(shù)目。
# vi /etc/mail/sendmail.cf # maximum number of recipients per SMTP envelope MaxRecipientsPerMessage=20 (注:20個)
3、域名文件----local-host-name 可以用他來實現(xiàn)虛擬域名或多域名支持。
# vi /etc/mail/local-host-name test.com test1.com
4、mail別名文件--aliases。
# vi /etc/aliases 系統(tǒng)內(nèi)部別名:discuz:bbsadmin discuz是我的用戶名,其他的是別名,用逗號隔開。 轉(zhuǎn)發(fā)到其他的郵箱:discuz:bbsadmin@discuz.com # newaliases --寫到庫中
5、郵件控制文件
relay、ok、reject和discard。
relay: 可以實現(xiàn)轉(zhuǎn)發(fā)。
ok: 是用來允許用戶的任意訪問,它會覆蓋任何其它已建立的檢查(實際設(shè)置中,最好不要設(shè)為這項,除非你對該用戶是絕對信任的);
reject: 可以實現(xiàn)對來訪地址的拒絕,它根本就不容許該地址與你的郵件服務(wù)器進行連接通信;
discard: 的作用是在接收到傳輸?shù)泥]件消息后,把它丟棄掉。在發(fā)送者看來,他的郵件的確是接收了,但他并不知道,發(fā)送的目的地址根本不可能接收到他的郵件,服務(wù)器巧妙地欺騙了他。
# vi /etc/mail/access6、Sendmail環(huán)境下的防止郵件relay
localhost.localdomain RELAY ---允許 localhost RELAY 127.0.0.1 RELAY peng@sina.com ok @sexgirl.net reject 211.77.22.45 discard
# makemap hash /etc/mail/access.db < /etc/mail/access --寫到庫中
從8.9版本開始,缺省的是不允許郵件轉(zhuǎn)發(fā)(mail relay)的。最簡單的允許郵件轉(zhuǎn)發(fā)的方法是在文件/etc/mail/relay-domains中進行設(shè)置。該文件中列出的域名內(nèi)的信件都允許通過本地服務(wù)器進行郵件轉(zhuǎn)發(fā)。
為了更精確的設(shè)置,可以在sendmail.mc中添加如下幾個參數(shù)允許被用來設(shè)置郵件轉(zhuǎn)發(fā):
· FEATURE(relay_hosts_only). 通常情況下,在文件/etc/mail/relay-domains中列出的域名的主機都允許通過本地機轉(zhuǎn)發(fā),而該設(shè)置指示指定必須羅列出每個允許通過本機轉(zhuǎn)發(fā)郵件的主機。
· FEATURE(relay_entire_domain). 該參數(shù)指示允許所有本地域通過本機進行郵件轉(zhuǎn)發(fā)。
· FEATURE(access_db). 該參數(shù)指定利用哈希數(shù)據(jù)庫/etc/mail/access來決定是否允許某個主機通過本地進行郵件轉(zhuǎn)發(fā)。
· FEATURE(blacklist_recipients).若該參數(shù)被設(shè)置,則在決定是否允許某個主機轉(zhuǎn)發(fā)郵件時同時察看郵件發(fā)送著地址和郵件接受者地址。
· FEATURE(rbl).允許基于maps.vix.com由黑名單(Realtime Blackhole List)進行郵件拒絕,以防范垃圾郵件。
· FEATURE(accept_unqualified_senders).允許接受發(fā)送者地址不包括域名的郵件,例如user,而不是user@B.NET。
· FEATURE(accept_unresolvable_domains).通常來講,sendmail拒絕接受發(fā)送者郵件地址指定的主機通過DNS不能解析的郵件,而該參數(shù)允許接收這種郵件。
· FEATURE(relay_based_on_MX).該參數(shù)允許轉(zhuǎn)發(fā)郵件接受者地址的MX記錄指向本地的的郵件,例如,本地接收到一個發(fā)送目的地址為user@b.com的郵件,而b.com域名的MX記錄指向了本地機器,則本地機器就允許轉(zhuǎn)發(fā)該郵件。
下面幾個特性可能會有安全漏洞,一般當郵件服務(wù)器位于防火墻后時才應(yīng)該使用,因為這些參數(shù)可能導致你的系統(tǒng)易于被垃圾郵件發(fā)送者利用。
·FEATURE(relay_local_from).該參數(shù)指定若消息自稱源于本地域,則允許轉(zhuǎn)發(fā)該郵件。 |
7.設(shè)置完成后outlook發(fā)送郵件要求驗證時,出現(xiàn)錯誤
Jan 30 14:45:57 qiuding sendmail[13908]: o0U6jvs1013908: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:45:58 qiuding sendmail[13909]: o0U6jw4h013909: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:38 qiuding sendmail[13918]: o0U6lcCc013918: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:41 qiuding sendmail[13919]: o0U6lefW013919: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:42 qiuding sendmail[13920]: o0U6lfoF013920: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:43 qiuding sendmail[13921]: o0U6lgtZ013921: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:43 qiuding sendmail[13922]: o0U6lh53013922: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:44 qiuding sendmail[13923]: o0U6li7I013923: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
大量查找資料原來是
認證進程沒有啟動 SASLAUTHD服務(wù)一定要啟動否則無法進行用戶驗證
etc/rc.d/init.d/saslauthd start
配置下載
sendmail -bd -q1h
Sendmail的命令參數(shù)的含義如下:
-b:指定Sendmail在后臺運行,并且監(jiān)聽端口25的請求。
-d:指定Sendmail以Daemon方式運行(守護進程)。
-q:當Sendmail無法將郵件成功地發(fā)送到目的地時,它會將郵件保存在隊列里。該參數(shù)指定郵件在隊列里保存的時間。例子里的1h表示保留1小時。
在終端命令窗口運行以下命令來重新啟動Sendmail服務(wù):
[root@ahpeng root]#/etc/rc.d/init.d/sendmail restart
在終端命令窗口運行以下命令來關(guān)閉Sendmail服務(wù):
[root@ahpeng root]#/etc/rc.d/init.d/sendmail stop
我們還可以在終端命令窗口運行以下命令來檢測Sendmail服務(wù)器的運行狀態(tài):
[root@ahpeng root]# /etc/rc.d/init.d/sendmail status
系統(tǒng)應(yīng)該顯示:
sendmail (pid 3251) 正在運行…
/etc/mail目錄下操作
makemap hash access.db<access
killall -9 sendmail
etc/rc.d/init.d/saslauthd start
sendmail -bd -q30m
posted on 2007-10-18 23:26 強強 閱讀(816) 評論(0) 編輯 收藏 所屬分類: sendmail