郵件伺服器之sendmail的簡單配置
安裝軟體名
1、 sendmail sendmail主程式
2、 sendmail-cf 可以說是幫助了解sendmail文法配置
3、 m4 轉換工具
rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm
Sendmail和m4系統預設應經安裝(我的是RedHat5.4的版本)
[root@RHEL mail]# service sendmail start
啟動 sendmail:
[root@RHEL mail]# chkconfig sendmail on 開機啟動
[root@RHEL mail]# netstat -tupln |grep 25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2774/sendmail: ace
先添加一個使用者
[root@RHEL mail]# useradd user1
[root@RHEL mail]# echo "123" |passwd --stdin user1 設定密碼
檢視主機名
[root@RHEL mail]# hostname
localhost
用系統root賬戶給user1賬戶發一封郵件,并檢視
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183326558.png"></a>
q 退去時,再次用mail指令檢視時就會“No mail for user1”郵件被儲存在自己的家目錄下的mbox檔案中,如上圖:
x 退去時,不變。。。
此時監聽的ip為127.0.0.1,就是自能監聽本機,其它的客戶機不能用該機的25端口發郵件:如下:
編輯/etc/mail/sendmail.mc 将127.0.0.1改為0.0.0.0如下:
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
重新開機sendmail服務,用客戶機給root發一封垃圾郵件,并檢視
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183530753.png"></a>
以上可以看出sendmail 無身份驗證,無加密、無防垃圾郵件的功能。但它簡單易用,可以配合第三方軟體來實作以上功能。是以市場佔有率占據50%左右
下面通過一個小執行個體再來深入一下:
Ip位址為192.168.2.100的mail伺服器的域名為wsm.com 和兩個郵件使用者分别為user1、user2
Ip位址為192.168.2.200的mail伺服器的域名為qq.com和兩個郵件使用者分别為user3、user4
拓撲圖如下:
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183439351.png"></a>
1、 首先安裝DNS服務 相關rpm包如下:
rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
cd /var/named/chroot/etc
cp -p named.caching-nameserver.conf named.conf
vim named.conf 修改為如下:
listen-on port 53 { any; };
allow-query { any; };
allow-query-cache { any; };
match-clients { any; };
match-destinations { any; };
vim named.rfc1912.zones 添加如下5行
zone "qq.com" IN {
type master;
file "qq.com.zone";
allow-update { none; };
};
cd /var/named/chroot/var/named/
cp -p localhost.zone qq.com.zone
vim qq.com.zone 如下:
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183549721.png"></a>
注:vim /etc/resolv.conf 確定自己的DNS的指向為本機
啟動DNS服務
(關于DNS的詳細配置請參考http://abc16810.blog.51cto.com/3177586/1032963一文)
在郵件用戶端中如outlook讓user1給自己發一封郵件(確定客戶機的dns指向為192.168.2.200即DNS伺服器) 在用戶端測試一下DNS配置是否成功。
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183605634.png"></a>
客戶機能解析mail.qq.com的位址 ok
Outlook配置完成後就基本上是這樣的
好嘞,下面用user1給自己發一封郵件!!!!!!!!!
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183722761.png"></a>
點選“發送” 由日志可以看出已經成功發送
Sep 23 14:05:48 localhost sendmail[3007]: q8N65mPe003007: from=<[email protected]>, size=427, class=0, nrcpts=1, msgid=<001301cdc0d1$0fffe9a0$0a02a8c0@wsmkiss>, proto=SMTP, daemon=MTA, relay=[192.168.2.10]
Sep 23 14:05:48 localhost sendmail[3009]: q8N65mPe003007: to=<[email protected]>, ctladdr=<[email protected]> (501/501), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30594, dsn=2.0.0, stat=Sent
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183743363.png"></a>
在mail伺服器上User1接收到了
編輯vim /etc/mail/local-host-names 添加兩句話如下:(域名為qq.com的郵件伺服器)
qq.com
mail.qq.com
編輯vim /etc/mail/local-host-names 添加兩句話如下:(域名為wsm.com的郵件伺服器)
wsm.com
wsm.qq.com
在outlook上user1能不能接受呢,答案是肯定不能,因為mail伺服器才監聽了25端口即smtp協定,pop3和imap4相應的協定還沒安裝,這要靠dovecot來支援啦。。最好yum安裝,
yum -y install dovecot
service dovecot start 開啟dovecot服務
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183800202.png"></a>
2、 配置域名為wsm.com的mail伺服器,這與步驟1、基本相同,這裡我就不詳細說了
在底下我已經配置好了,并為域名為qq.com的mail伺服器再建一個user3使用者
3、 按照我們的要求,user1使用者給user3使用者發送一封郵件,user3使用者再給user1使用者發送一封郵件,使彼此都能夠發送郵件。
Sep 13 02:59:48 localhost sendmail[17190]: q8CIxlRW017190: ruleset=check_rcpt, arg1=<[email protected]>, relay=[192.168.2.20], reject=450 4.4.0 <[email protected]>... Relaying temporarily denied. Cannot resolve PTR record for 192.168.2.20
Sep 13 02:59:48 localhost sendmail[17190]: q8CIxlRW017190: from=<[email protected]>, size=0, class=0, nrcpts=0, proto=SMTP, daemon=MTA, relay=[192.168.2.20]
基本意思就是沒有中繼 這是因為預設不中繼
編輯域名為wsm.com的mail伺服器的/etc/mail/access 中繼檔案添加如下内容:
wsm.com OK
qq.com RELAY
編輯域名為qq.com的mail伺服器的/etc/mail/access 中繼檔案添加如下内容:
qq.com OK
wsm.com RELAY
分别重新開機兩台mail伺服器的sendmail服務
分别修改兩台主機的主句名如下:
vim /etc/sysconfig/network 修改為如下
HOSTNAME=mail.qq.com
hostname mail.qq.com
vim /etc/sysconfig/network
HOSTNAME=mail.wsm.com
hostname mail.wsm.com
Sep 13 03:08:35 localhost sendmail[17254]: q8CJ8YDa017254: from=<[email protected]>, size=1221, class=0, nrcpts=1, msgid=<782BF4FBF3144C00AB87568CB8C82DDB@wsm5511ffd55a4>, proto=SMTP, daemon=MTA, relay=[192.168.2.20]
Sep 13 03:08:35 localhost sendmail[17254]: q8CJ8YDa017254: to=<[email protected]>, delay=00:00:00, mailer=esmtp, pri=31221, dsn=4.4.3, stat=queued
這與上變的錯誤已經不一樣了,這可能是DNS轉發的問題:
編輯wsm.com的mail伺服器的/var/named/chroot/etc/named.conf DNS的主配置檔案 在option中添加如下内容:
forwarders { 192.168.2.200; };
編輯qq.com的mail伺服器的/var/named/chroot/etc/named.conf DNS的主配置檔案 在option中添加如下内容:
forwarders { 192.168.2.100; };
分别重新開機兩台mail伺服器的named服務
大約1-2分鐘後可以看到日志已經發送成功。
<a target="_blank" href="http://blog.51cto.com/attachment/201211/183819515.png"></a>
這樣速度很慢,我們要配合反向DNS解析動能 (mail伺服器需要配合DNS反向解析)
兩台mail伺服器的DNS反向解析的區域檔案分版本 添加一個PTR指針如下:
域名為qq.com的mail伺服器 200 IN PTR mail
域名為wsm.com的mail伺服器 100 IN PTR mail
重新開機DNS服務,,
再次發送就沒問題了。
如有疑問,,歡迎回複。。。
本文轉自 abc16810 51CTO部落格,原文連結:http://blog.51cto.com/abc16810/1059234