安裝sendmail
1、安裝:
代碼如下 |
複製代碼 |
#yum install -y sendmail #yum install -y sendmail-cf 如果需要SMTP驗證就安裝並啟動saslauthd服務: # yum install -y saslauthd # service saslauthd start |
2、配置
(1) 配置Senmail的SMTP認證
代碼如下 |
複製代碼 |
# vi /etc/mail/sendmail.mc dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl |
將上面兩行的dnl去掉。在sendmail檔案中,dnl表示該行為注釋行,是無效的,因此通過去除行首的dnl字串可以開啟相應的設定行。
(2) 設定Sendmail服務的網路存取權限(因為我是直接本機調用所以我沒有操作這個步驟)
代碼如下 |
複製代碼 |
# vi /etc/mail/sendmail.mc DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl |
將127.0.0.1改為0.0.0.0,意思是任何主機都可以訪問Sendmail服務。如果僅讓某一個網段能夠訪問到Sendmail服務,將127.0.0.1改為形如192.168.1.0/24的一個特定網段地址。
3、組建組態檔案
Sendmail的設定檔由m4來產生,m4工具在sendmail-cf包中。如果系統無法識別m4命令,說明sendmail-cf軟體包沒有安裝。
代碼如下 |
複製代碼 |
#m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf |
4、啟動服務
代碼如下 |
複製代碼 |
#service sendmail start |
檢查服務是否加入自啟行列
代碼如下 |
複製代碼 |
#chkconfig --list |grep sendmail |
測試發送郵箱
方法1 安裝sendmail即可使用,
代碼如下 |
複製代碼 |
mail -s "test" user@sohu.com <content.txt |
bin/mail會預設使用本地sendmail發送郵件,這樣要求本地的機器必須安裝和啟動Sendmail服務,配置非常麻煩,而且會帶來不必要的資源佔用。
方法2。利用外部的smpt伺服器
而通過修改設定檔可以使用外部SMTP伺服器,可以達到不使用sendmail而用外部的smtp伺服器發送郵件的目的:
修改/etc/nail.rc (/etc/mail.rc)
代碼如下 |
複製代碼 |
set from=fromUser@domain.com 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是郵件認證的方式
配置成功後,就可以使用了
可以發送一封郵件測試一下:
代碼如下 |
複製代碼 |
mail -s "test" username@163.com <content.txt 其中-s後面的是郵件標題,user@sohu.com是收件者地址,content.txt裡面是郵件內文 |
字元編碼
在發送中文郵件中,字元編碼是一個比較重要的問題,如果設定不正確,會導致郵件標題或郵件內容顯示亂碼。
郵件內容的編碼可以在郵件標頭content-type中設定,如設定郵件內容為utf-8編碼:
代碼如下 |
複製代碼 |
Content-type: text/html;charset=utf-8 |
郵件標頭中,如From,To,Subject等,如果需要用到中文,可以這樣設定:
代碼如下 |
複製代碼 |
“=?UTF-8?B?”+base64encode(內容UTF8編碼)+"?=" From: =?UTF-8?B?5L2g5aW9?= www.111cn.nert <jdoe@machine.example> Sender: Michael Jones <mjones@machine.example> To: Mary Smith <mary@example.net> Content-type: text/html;charset=utf-8 Subject: =?UTF-8?B?5L2g5aW9?= <div style="border:solid 1px #1D448C;"> <h1>This is a message just to say hello.</h1> <p>So, "Hello".</p> </div> |
sendmail 配置參數
1.配置最少的自由塊數
配置參數:MinFreeBlocks
參數描述:檔案系統用來接受標準SMTP(簡易郵件傳輸通訊協定)郵件的隊列中的最少的自由塊數目。
越小越容易被攻擊致命。
預設值:100
推薦值:4000或者更大
2.最大郵件大小
配置參數:MaxMessageSize
參數描述:每封郵件的最大尺寸,以位元(bytes)為單位。越大越容易被攻擊致命。
預設值:不限制
推薦值:5M
3.自動重建別名
配置參數:AutoRebuildAliases
參數描述:需要的時候自動重建所有別名。如果設定為True的話,這是一個潛在的能引起拒絕服務的攻擊的危機。
預設值:False
推薦值:False
4.隊列平均負荷
配置參數:QueueLA
參數描述:單一隊列時的平均負荷。根據CPU的數量適當設定(8*CPU數量)
預設值:可變的
推薦值:10*CPU數量
5.平均負荷拒絕臨界點
配置參數:RefuseLA
參數描述:一旦平均負荷超過此臨界點,所有Incoming的SMTP串連均拒絕。
預設值:可變的
推薦值:8*CPU數量
6.最大的守護進程的子進程數
配置參數:MaxDaemonChildren
參數描述:容許Fork的最大的子進程數。超過此數目,串連就會被拒絕。如果設定值小於等於零,就意味著不限制。
預設值:沒有定義
推薦值:根據記憶體大小設定。(例如,128M記憶體建議值為40)
7.最大的前序長度
配置參數:MaxHeadersLength
參數描述:所有前序的最大總長
預設值:沒有設定
推薦值:32或者64K
8.最大MIME編碼報文長度
MIME,Multipurpose Internet Mail Extension protocol,多用途的網際郵件擴充協議
配置參數:MaxMimeHeaderLength
參數描述:經過MIME編碼的最大報文長度
預設值:沒有定義
推薦值:1024或者更小
9.每封郵件的最多接收者
配置參數:MaxRecipientsPerMessage
參數描述:如果設定了的話,每封郵件只能同時抄送給指定數量的收信人。超過此數目就會返回一個452的錯誤碼。也就是說,在郵件隊列中,會被無限期的延緩發送。
預設值:沒有設定
推薦值:10-100