Linux SMTP 架設方式

由 Derek 發表於 二月 11, 2011 / 2 則評論

SMTP server – Sendmail

安裝前先檢查套件

 


[root@test root]# rpm -qa | grep sendmail 
sendmail-cf-8.11.6-3 
sendmail-8.11.6-3 
# 若有屬性相依的問題時,請將您的原版安裝光碟拿出來, mount 上去後, 
# 仔細的,一個一個的將相依的套件安裝上去囉! ^_^ 
[root@test root]# rpm -qa | grep m4 
m4-1.4.1-5 
[root@test root]# rpm -q mailx 
mailx-8.1.1-22

 

 


1.
安裝所需套件:(若是裝系統時是全部安裝,那應該已經包含了所需套件)
   
yum -y install sendmail sendmail-cf m4 

2.設定收信的主機名稱:
   
vi /etc/mail/local-host-names

———————————-
加入 網域名稱
———————————-
3.
備份設定檔:
  
cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.bak

4.修改設定檔:
  
vi /etc/mail/sendmail.mc
———————————————————-
52
 dnl TRUST_AUTH_MECH(EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
53
 dnl define(
confAUTH_MECHANISMS', EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
#
刪掉上面兩行前面的 dnl
#
注意:TRUST_AUTH_METHdefine 前面不要留有空格
116
 dnl DAEMON_OPTIONS(
Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
#
前面加上 dnl 把這行註解起來(dnl = do not load
#
或改成下面這樣也可以
DAEMON_OPTIONS(Port=smtp,Addr=
0.0.0.0, Name=MTA')dnl
---------------------------------------------------------- 


5.備份另一個設定檔:
   
cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.bak

6. sendmail-cf 的資料轉成實際可使用的設定檔:
  
 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

7.設定是否可以 Relay 的權限設定
   
vi /etc/mail/access

---------------------------
#
加入可以RELAY(允許)IP或網域
Connect:192.168.1 RELAY
Connect:edu.tw    RELAY

#依自己狀況修改
---------------------------
8.
製作出 hash 格式的資料庫
  
makemap hash access < access       

9.啟動服務:
 
 service saslauthd start  (/etc/rc.d/init.d/saslauthd start)
  
service sendmail start   (/etc/rc.d/init.d/sendmail start)

10.設定開機時就啟動:
  
chkconfig saslauthd on
 (這是一個smtp認證服務  postfix相關 可以不用理它 詳見鳥哥網頁)
  chkconfig sendmail on

11.設定郵件別名:(可先不用特別設定)
  
 vi /etc/aliases

#左邊是『別名』右邊是『實際存在的使用者帳號或者是 email address
#以下是一個例子
root: root,ccd

# 信件會傳給rootccd這兩個帳號
root: ccd

# 從此root收不到信了,都由ccd來接受
-----------------------------------------
#
加入
#mailman aliases
mailman:postmaster
mailman-owner:mailman
#userdefined  (
以上應該可以都不用加)

to_all: abc@xyz.com,
            cia@xyz.com,
             fbi@xyz.com

#假設本機domain nameabc.astr.ccc.edu.tw, "to_all"不必為本機使用者
#
當外部送信給 to_all@abc.astr.ccc.edu.tw 會轉送給(abc,cia,fbi)@xyz.com三個mail address 
------------------------------------------
  newaliases (postalias hash:/etc/aliases)

 

 

 

測試port25-windows輸入以下指令

c:>telnet 140.137.217.226 25

     HELO yourname - 通知 SMTP Server 你是誰(linux mail server上有帳號)

    MAIL FROM: email@server.com - 寄件者電郵地址

    RCPT TO: email@smtpserver.com - 收件者電郵地址

    DATA - 以上步驟通過後,可以用 DATA 開頭並輸入信件內容,結束時用 “.”

    QUIT - 離開用 QUIT 結束  

 

 

SMTP 認證 

Red Hat SMTP 認證啟用流程:

很棒的是, Red Hat sendmail ( /usr/sbin/sendmail 執行檔 ) 已經支援 Cyrus SASL 了,只要將 sendmail.cf 裡面關於 SMTP 認證的功能啟動即可!所以,只要去編輯 /etc/mail/sendmail.mc 即可 ( 註:這個檔案在不同的版本中,也會有被放在/usr/share/sendmail-cf/cf/redhat.mc的時候!反正只要找到 sendmail.mc redhat.mc 就對啦! )  

 

 


1. 修改 m4 script : 
[root@test root]# cd /etc/mail/ 
[root@test mail]# vi sendmail.mc 
# 找到這幾行: 
dnl TRUST_AUTH_MECH(DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
dnl define(confAUTH_MECHANISMS', DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
DAEMON_OPTIONS(Port=smtp,Addr=127.0.0.1, Name=MTA')  
# 將他修改成底下這樣: 
TRUST_AUTH_MECH(
DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
define(confAUTH_MECHANISMS', DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')

2. 開始製作 sendmail.cf 檔案: 
[root@test mail]# m4 sendmail.mc > redhat.cf 
[root@test mail]# mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.bak 
[root@test mail]# cp redhat.cf /etc/mail/sendmail.cf

3. 啟動 sendmail 與測試 SMTP AUTH 
[root@test mail]# /etc/rc.d/init.d/sendmail restart 
Shutting down sendmail:                                    [  OK  ] 
Starting sendmail:                                         [  OK  ]

[root@test mail]# telnet localhost 25 
Trying 127.0.0.1… 
Connected to localhost. 
Escape character is '^]'. 
220 test.adsldns.org ESMTP Sendmail 8.11.6/8.11.6; Mon, 24 Feb 2003 11:51:04 +0800 
ehlo localhost  <==輸入本機狀態的測試 
250-test.adsldns.org Hello tsai.adsldns.org [127.0.0.1], pleased to meet you 
250-ENHANCEDSTATUSCODES 
250-8BITMIME 
250-SIZE 
250-DSN 
250-ONEX 
250-ETRN 
250-XUSR 
250-AUTH LOGIN PLAIN  <==出現這行就對啦! 
250 HELP 
quit

  

如果出現上面的 AUTH LOGIN PLAIN 那一行的話,就表示 SMTP AUTH 已經正確的啟用啦!這個時候,你就可以將 /etc/mail/access 這個檔案裡面的相關設定給他取消掉!直接以 SMTP 來抵擋囉!不過,無論如何,如果是內部的信件,使用 /etc/mail/access 的設定還是比較簡單啦! ^_^ 
  

 

最後的設定部份

 

/etc/php.ini

[mail function]

; For Win32 only.

SMTP = 網域名稱

smtp_port = 25

 

; For Win32 only.

sendmail_from = service@ 網域名稱

 

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").

;sendmail_path =

 

 

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

  1. Ping Plourd 說: 2011/05/29

    Beneficial info and excellent design you got here! I want to thank you for sharing your ideas and putting the time into the stuff you publish! Great work!

  2. xfather123 說: 2011/05/28

    MOrVRE this is delisious!
    xfather123

發表評論至 xfather123

*