1. 程式人生 > >linux下sendmail郵件系統安裝操作記錄

linux下sendmail郵件系統安裝操作記錄

src 文件中 mage 本機 acc 現在 echo log lin

電子郵件系統的組成:

1)郵件用戶代理(Mail User Agent , MUA),MUA是一個郵件系統的客戶端程序,它提供了閱讀,發送和接受電子郵件的用戶接口。 最常用的 MUA 有: linux 中的 mail , elm , pine 等。 Windows 的 outlook , foxmail 等 
2)郵件代理器( Mail Transfer Agent , MTA ) MTA 負責郵件的存儲和轉發( store and forward )。 MTA 監視用戶代理的請求,根據電子郵件的目標地址找出對應的郵件服務器,將信件在服務器之間傳輸並且將接受到的郵件進行緩沖。 在 linux 下的 MTA 程序有: sendmail , qmail 等, 
3)郵件提交代理( Mail Submmission Agent , MSA ) MSA 負責消息有 MTA 發送之前必須完成的所有準備工作和錯誤檢測, MSA 就像在 MUA 和 MTA 之間插入了一個頭腦清醒的檢測員對所有的主機名,從 MUA 得到的信息頭等信息進行檢測。 
4)郵件投遞代理( Mail Ddlivery Agent , MDA ) MDA 從 MTA 接收郵件並進行適當的本地投遞,可以投遞個一個本地用戶,一個郵件列表,一個文件或是一個程序。 Linux 下常用的 MDA 是 mail.local , smrsh 和 procmail ( www.procmail.org ) 
5)郵件訪問代理( Mail Access Agent , MAA ) MAA 用於將用戶連接到系統郵件庫,使用 POP 或 IMAP 協議收取郵件。 Linux 下常用的 MAA 有 UW-IMAP , Cyrus-IMAP , COURIER-IMAP 等 郵件中繼: 就是當郵件向目的地址傳輸時,一旦源地址和目的地址都不是本地系統,那麽本地系統就是郵件的中繼(中轉站)。

MUA 使用者透過這個程序與郵件服務器溝通,包括收信(以 POP3 連接收信服務器程序 imapd)或寄信(以SMTP 連接 MTA),例如: Outlook Express……等。
MTA 使用 SMTP 通訊協議將信件傳遞到不同郵件主機上面,例如: sendmail, postfix, Qmail……等。
MSA 是新版 sendmail 發展給 SSMTP 進行 TLS/SSL 聯機的 client 端代理器。
MDA 收到信後將信件分配到不同使用者信箱內,算是 MTA 的一個子系統,譬如 BBS 從定義上來說也算是 MDA( BBS 功能復雜,當然不僅僅是 MDA),有些 MDA 被設計來進行濾信動作,它們必須在 local 端運作,因此又被稱為 LDA,例如: procmail……等。
MailBox 尚未被使用者下載的郵件,會暫存在服務器的硬盤空間裏,稱之為信箱。所有使用者信箱的總合必須約等於該分割區總容量的一半,以避免造成信箱尚有空間但郵件系統卻無法運作的現象。
Mail Gateway 是一種特殊的郵件服務器,通常扮演代理器的角色,負責統籌某機構內所有信件的收發,並分配郵件給下屬的郵件服務器們,透過這個機制能夠加速郵件的交換,並且能夠進行一致的濾信控制。

sendmail是linux系統中一個郵箱系統,如果我們在系統中配置好sendmail就可以直接使用它來發送郵箱。


sendmail的配置文件

/etc/mail/sendmail.cf :Sendmail的主配置文件;
/etc/mail/access :中繼訪問控制;
/etc/mail/domaintable ;域名映射;
/etc/mail/local-host-names ;本地主機別名;
/etc/mail/mailertable :為特定的域指定特殊的路由規則;
/etc/mail/virtusertable :虛擬域配置。


中繼的配置

是指一臺服務器接受並傳遞源地址和目的地址都不是本服務器的郵件。
在兩個文件中進行設置:
/etc/mail/relay-domains
/etc/mail/access。


一、安裝軟件

[root@localhost ~]# yum install -y sendmail
[root@localhost ~]# yum install -y sendmail-cf

啟動saslauthd服務進行SMTP驗證(默認是安裝的,如果沒有,就手動安裝)

[root@localhost ~]# service saslauthd start
Starting saslauthd: [ OK ]


二、郵件服務配置

1)配置Senmail的SMTP認證
將下面兩行內容前面的dnl去掉。在sendmail文件中,dnl表示該行為註釋行,是無效的,因此通過去除行首的dnl字符串可以開啟相應的設置行。
[root@localhost ~]# vim /etc/mail/sendmail.mc
......
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

2) 設置Sendmail服務的網絡訪問權限(如果是直接本機調用,可以不用操作,采用默認的127.0.0.1。不過最後還是改成0.0.0.0)
將127.0.0.1改為0.0.0.0,意思是任何主機都可以訪問Sendmail服務。
如果僅讓某一個網段能夠訪問到Sendmail服務,將127.0.0.1改為形如192.168.1.0/24的一個特定網段地址。
[root@localhost ~]# vim /etc/mail/sendmail.mc
......
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

3)生成配置文件
Sendmail的配置文件由m4來生成,m4工具在sendmail-cf包中。如果系統無法識別m4命令,說明sendmail-cf軟件包沒有安裝
[root@localhost ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

4)啟動服務
[root@localhost ~]# service sendmail start
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
[root@localhost ~]# service saslauthd restart
Stopping saslauthd: [ OK ]
Starting saslauthd: [ OK ]

將服務加入自啟行列
[root@localhost ~]# chkconfig sendmail on
[root@localhost ~]# chkconfig saslauthd on
[root@localhost ~]# chkconfig --list |grep sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# chkconfig --list |grep saslauthd
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off


三、測試發送郵箱

(1)第一種方式:安裝sendmail即可使用。
[root@localhost ~]# yum -y install mailx

創建一個郵件內容文件,然後發郵件(註意-s參數後的郵件標題要用單引號,不能使用雙引號,否則發郵件會失敗!)
[root@localhost ~]# echo 'This is test mail'>/root/content.txt 
[root@localhost ~]# cat /root/content.txt 
This is test mail
[root@localhost ~]# mail -s 'Test MAIL' ******@163.com < /root/content.txt 

查看已收到郵件:

技術分享圖片


如果不想通過文件發送郵件內容也可以這麽發送,也可以使用管道符直接發送郵件內容,效果同文件發送郵件內容一樣.

[root@localhost ~]# echo "This is test mail." | mail -s 'Mail Test' ******@163.com

查看已收到郵件:

技術分享圖片


如果是發送給多個郵件,就使用-c參數,如下:

[root@localhost ~]# echo "This is test mail" | mail -s 'test' -c ******@sina.com ******@163.com
(2)第二種方式:利用外部的smpt服務器
上面第一種方式中,/bin/mail命令會默認使用本地sendmail發送郵件,這樣要求本地的機器必須安裝和啟動Sendmail服務,配置非常麻煩,而且會帶來不必要的資源占用。
而通過修改配置文件可以使用外部SMTP服務器,可以達到不使用sendmail而用外部的smtp服務器發送郵件的目的。

修改/etc/mail.rc文件(有的版本叫/etc/nail.rc,添加下面內容:
set [email protected] smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login

參數說明:
from是發送的郵件地址
smtp是發生的外部smtp服務器的地址
smtp-auth-user是外部smtp服務器認證的用戶名。註意一定要填寫郵件全稱!!
smtp-auth-password是外部smtp服務器認證的用戶密碼
smtp-auth是郵件認證的方式

配置完成後,就可以正常發送郵件了,如下
[root@localhost ~]# vim /etc/mail.rc                     //在文件底部添加
set from=******@3dmedcare.com smtp=smtp.3dmedcare.com smtp-auth-user=******@3dmedcare.com smtp-auth-password=3DMed123 smtp-auth=login

現在開始發郵件:
[root@localhost ~]# echo "hello world" |mail -s 'test666' ****[email protected]

技術分享圖片

linux下sendmail郵件系統安裝操作記錄