REDHAT 7.1 sendmail配置FAQ (轉)

worldblog發表於2007-12-10
REDHAT 7.1 sendmail配置FAQ (轉)[@more@]

7.1 sendFAQ
1、如何獲得:
從REDHAT公司網站或你的光碟上獲得:sendmail-cf-8.11.0-8.i386.rpm
使用rpm -ihv sendmail-cf-8.11.0-8.i386.rpm安裝
從獲得sendmail.8.12.0.tar.gz包,需要自己編譯安裝。
使用:
-zxvf sendmail.8.12.0.tar.gz
cd sendmail.8.12.0
./Build
./Build install
安裝

2、它的主要配置是什麼:
/etc/sendmail.cf
此檔案可以是自帶的,你也可以使用/etc/mail/sendmail.mc檔案生成該檔案:
m4 /etc/mail/sendmail.mc >/etc/sendmail.cf

3、如何設定SMTP rules來防止他人惡意使用我的SMTP。
可以設定/etc/mail/access檔案,只允許內部或者指定範圍內的主機或IP使用伺服器作relay

4、Sendmail預設狀態下是不是可以被別人當作郵件轉發伺服器用?
預設狀態是不支援open relay,一般它只允許localhost和localain透過郵件伺服器作轉發,可以修改/etc/mail/access檔案加入你想允許的人使用,例如在裡面加入一行192.168  RELAY就可以允許所有IP以192.168開始的使用你的伺服器轉發郵件。

5、怎麼配置使sendmail使用procmail作為MDA啊?
MDA指的是MAIL DELIVERY AGENT(郵件傳輸),一般sendmail的rpm包都將procmail預設配置為其MDA,如果沒有,可以在sendmail.mc檔案中加入MAILER(procmail)這一行,然後生成sendmail.cf檔案即可。

6、如何設定自動轉發。
在主目錄下建立一個檔案.forward,寫入轉發的地址就行。

7、使用可以發信到伺服器,應該SMTP沒有問題,只是不能收信,但已把/etc/xd.d/pop3s中disable設為no,可還是不行。

首先要提醒注意的是pop3s不同於pop3,所以你設定該項並沒有作用;如果完全安裝的話,一般在/etc/xinetd.d下會有一個ipop3檔案,這個才是真正應用於pop3 110埠的,如果沒有的話,也可以自己建立一個這樣的檔案。

8、我在mailserver(IP:192.168.1.1)上裝了sendmail,機器名為mail.net,現在可收發形式的郵件,但不能收發username@192.168.1.1這種形式的郵件,該如何配置?

應該是username@[192.168.1.1]
用收發郵件只能使用]的形式,這不是使用者習慣不習慣的問題。
否則,即使你的伺服器能夠接受沒有[ ]的格式,其他伺服器還是可能不接受的。
你可以在sendmail.cf的DM項修改成
DM[a.b.c.d]
a.b.c.d是你的伺服器的IP地址,透過它發出的郵件就是]的形式了。

9、sendmail 可否建一個郵件組!
如:把幾個帳號放在一個組裡,我用這個組發郵件,這個組裡的成員都可收到相同的郵件?
建個別名就行了,sendmail中的aliases提供了這樣的功能。
舉例來說吧,如果你想使用xuser組,裡面放置兩個使用者:a和b,那麼你可以在/etc/aliases檔案中增加一行: xuser:a,b
如果你想增添更多的使用者,可以繼續在b後新增。
修改完畢之後,使用newaliases命令使修改生效。

10、如何限制使用者郵件的最大值為10M?
在sendmail.cf中設定:
# maximum message size
O MaxMessageSize=1000000

11、如何SENDMAIL的發信序列,我想知道有幾封信在等待傳送
mailq

12、pop3服務是哪個rpm包提供的?
imap

13、我使用的是RedHat 7.1,本機一切正常
telent localhost 25可以,
但是伺服器沒開25埠,從網路無法訪問,
sendmail不是由xinetd控制,從哪裡開啟25口呢?

RH7.1預設情況SMTP僅繫結127.0.0.1,因此不能從網路訪問,要開啟SMTP,如下即可:
edit /etc/sendmail.cf
找到:
# SMTP daemon options
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
新增:
# SMTP daemon options
O DaemonPortOptions=Port=smtp,Addr=你的IP, Name=MTA
儲存!

14、預設情況下的relay規則

在預設情況下,也就是安裝完系統(Sendmail伺服器)不做任何設定的情況下,則只能在本機上收發郵件,網路上(或Internet)的任何其它主機不能向該SMTP伺服器傳送郵件,若希望能實現傳送,則需滿足下面的任何一個條件即可(不需要同時滿足):

1. 傳送者身份屬於“本地或者被允許的傳送者”。
2. 接收者身份屬於“本地或者被允許的接收者”。

那麼什麼是“本地/被允許的傳送者”呢?
實際上只有一種,就是列在檔案/etc/mail/relay-domains(預設安裝後無此檔案,你可以建立它)或者/etc/mail/access中的域名或者IP地址行,如:

abc.(/etc/mail/relay-domains)
abc.com relay (/etc/mail/access)
如果在relay-domains/access檔案中列出的是域名,則對傳送者的IP地址先查詢/etc/hosts檔案(一般是如此,因為預設情況下對伺服器來說,查詢DNS是先查詢/etc/hosts檔案看是否有此IP地址對應的主機域名,如無再做反向DNS查詢,如果能夠反向查詢出來,且查詢出來的主機的域部分屬於上面兩個檔案中列出的域名,再對該主機名做正向DNS查詢出的IP地址(主機的A記錄)與傳送者IP地址相同,則允許relay郵件,這表明傳送者屬於被允許的傳送者。

也就是說,先看/etc/host.conf檔案中的定義,一般是這樣:
order hosts,bind
multi on

其中的order行指明先查/etc/hosts,再找DNS。
如果在/etc/hosts中找不到與傳送者IP地址對應的行,則再查詢DNS,對傳送者IP做反向解析,如果能在反向DNS資料庫中找到對應傳送者IP的主機記錄,且找出來的主機名再從DNS中正向查詢若兩者一致,則允許relay,跟上面的情況一樣,屬於第一種被允許的relay規則。
需要注意的是,必須正反向解析都需要能解析且一致才行,否則不允許relay,且會在/var/log/maillog中記錄一行警告資訊說"may be forged"(可能被偽造的)
但也並非所有記錄"may be forged"資訊到/var/log/maillog檔案中的情況都不允許relay,也有的情況下雖然記錄了一條警告訊息說"may be forged",但郵件仍然被接收了,是在下面的情況下:

例如: 在B機上/etc/mail/relay-domains中有下面兩行
abc.com
.com

若A向B傳送郵件到 . 在B機的/etc/hosts中沒有相應的對應於192.168.11.12的記錄行。
且在B機(DNS伺服器)上不能對IP地址192.168.11.12做反向查詢,或者能做反向查詢如查詢出來為jephe.abc.com但在正向查詢(對abc.com域的主DNS資料庫中查詢對應於主機jephe的A記錄)中沒有對應於主機jephe的A記錄,或者有但找出來的IP地址不是192.168.11.12的話。
但是。接收者是,域yahoo.com在/etc/mail/relay-domains中。則還是允許relay。
但就會記錄警告訊息may be forged到/var/log/maillog檔案中,這種允許屬於第二種mail relay規則:
接收者是被允許的接收者。
什麼是“本地的或者被允許的接收者”?

這個比較簡單,也就是接收者的地址的域部分被列在/etc/mail/relay-domains或者/etc/mail/access
檔案中,如上面的情況,發到@yahoo.com域的任何接收者都被允許接收。
注意一個範圍問題,如果傳送者的域名(根據前面說的/etc/hosts或者正反向DNS一致的解析)被列在這兩個檔案中,則該傳送者可以傳送給任何人的郵件,都能被接收,但若不是這種情況,則只能傳送到接收者的email地址的域名在這兩個檔案中的那些接收者。後者的情況接收的範圍要比前者小。

再引出另一個值得注意的問題,就是在檔案relay-domains或者access中列出的域名既是針對傳送者來說的,也是針對接收者而言的。對於傳送者來說,檢查/etc/hosts,和正反向DNS,對於接收者而言,僅檢查接收者郵件地址的域部分。

還有,對於第二種mail relay規則,還多一種情況,即:
若接收者的域名部分被列在/etc/sendmail.cw中,則該接收者也屬於本地接收者。
(預設情況下,sendmail.cw是在/etc下,當然你也可以直接更改/etc/sendmail.cf中的sendmail.cw路徑)
然後檢查別名檔案aliases (具體路徑靠你的定義)去擴充套件別名。

15、什麼是SMTP
SMTP(Simple Mail Traner Protocol)即簡單郵件傳輸協議,它主要規定基礎的電子郵件提交系統怎麼傳遞報文。對於電子郵件系統怎麼從使用者接受電子郵件,使用者介面怎麼給使用者顯示接到的電子郵件,電子郵件如何以及電子郵件系統以怎樣的頻度傳送報文等問題卻沒有作出規定。
  在SMTP中,客戶機與伺服器之間的通訊是由可讀文字構成的。開始,客戶機透過三次握手與伺服器(通常是TCP
25埠)建立一個TCP連線,然後等待伺服器傳送220 READY FOR MAIL。在收到220報文後,客戶機傳送HELO命令。之後,電子郵件互動以MAIL命令開始,在MAIL命令中,有一個“FROM:”欄位,用於在出錯是通知發信人。伺服器收到MAIL命令後,傳送250
OK作為響應,表示一切正常。MAIL命令成功後,客戶方就可以將收信人地址告訴伺服器,這是用一連串RCPT命令來實現。伺服器接收到每個RCPT命令後,傳送250
OK作為響應,表示正確接收;或者傳送550 No such user here作為響應,表示沒有這個使用者。客戶方的RCPT命令得到正確響應後,就可以DATA命令傳送資料。伺服器收到DATA命令後,傳送354
Start mail input;end with . 給予響應。其中end with .
規定了用於結束電子郵件報文的五個連續字元,即:回車,換行,圓點,回車,換行,這就是為什麼用MAIL傳送郵件時,最後只含有一個圓點的行表示結束的緣故。

16、sendmail.cf配置檔案的主要內容
Local Information
定義有關個人主機的資訊
General Macr
定義有關本地網路的宏
Classes
定義用於特殊郵件傳輸的主機名群或域名群
Version Number
標識sendmail.cf檔案的版本號
Special Macros
定義由sendmail所用的一些特殊的宏
Option
定義sendmail選項
Message Precedence
定義sendmail所用的各種訊息的優先順序值
Trusted Users
定義在傳送郵件時可忽略傳送者地址的使用者
Format of Headers
定義sendmail插入的郵件首部格式
Rewriting Rules
定義用於重寫郵件地址的規則
Mailers
定義sendmail用來郵件傳輸程式的指令
Ruleset Zero
定義一組稱為Ruleset Zero的特殊重寫規則
Machine-dependent part  of Ruleset Zero
定義與配置相關的Ruleset Zero部分

17、sendmail中所有的內部宏
a
s822格式的原始日期
b
RFCs822格式的當前日期
c
Hop計數
d
格式的日期
e
SMTP資料項資訊
f
“來自”地址的傳送者
g
相對於接收者的傳送者的地址
h
接收主機
i
佇列標識
j
節點的正式域名
l
UNIX的行格式
n
用於錯誤資訊中的名字
o
地址中的運算子集合
p
sendmail的PID
q
預設的傳送者地址格式
r
所用的協議
s
傳送者主機名
t
當前時間的數值表示
u
接收方使用者
v
sendmail的版本號
w
該節點的主機名
x
傳送者全名
z
接收者宿主目錄

18、sendmail.mc檔案中各個指令的意義:
divert(-1)
管理輸出字元
dnl
在define後通常會自動產生空格,可以用dnl來刪除
include
包含一個檔案
define arg
1 arg 2
定義宏argument1設為值argument2
undifine
arg 1
取消arg1的定義
OSTYPE(Linux)
定義的型別
FEATURE
功能選項,對應到/usr/lib/sendmail-cf/feature裡面的 檔名稱所定義者
MAILER
定義所有必要的郵件遞送代理程式,MTA
MASQUERADE_AS
用來處理多主機名稱問題

19、sendmail別名

  別名是sendmail最重要的功能之一。它在aliases中定義。aliases檔案的位置由sendmail.cf中的選項A指定,一般位於/etc目錄中。aliases是一個文字檔案,其中每一行的格式如下:
alias:recipeint[,recipeint,...]
其中alias為郵件中地址的名字,recipient為郵件目的地址的名字。郵件目的地址名可以有很多,每個之間用逗號符隔開。下面介紹別名的幾種主要用法:
  ◆ 保護登陸帳號
許多網路進攻網路計算機的第一步是獲取目標機上合法使用者的帳號,而電子郵件帳號一般和登陸帳號相同,這就使駭客有機可乘。但是可以用別名來保護合法使用者的帳號。如一位合法使用者的登陸帳號為xiaoniao,而他的電子郵件帳號可以是aaabbb。只要在別名檔案中加入“aaabbb:xiaoniao”就可以達到這一目的。
  ◆ 電子郵件轉發
 如果想要將發給xiaoniao使用者的電子郵件自動轉發給使用者,只需在別名檔案中加入“xiaoniao:root”。又如使用者xiaoniao離開這個單位。從角度上講應該將他的使用者帳號刪除。但是由於他不可能馬上將新的電子郵件帳號通知所有人,所以希望將他原來的電子郵件帳號保留一段時間。這隻要在別名檔案中加入“xiaoniao:新的電子郵件地址”。
  ◆ 郵件列表的實現
別名最重要的功能就是實現郵件列表。透過它可以實現填寫一個接收者地址而將信發給許多人。例如在主機上設定一個郵件列表xn_group,包括xiaoniao,lyong,twang
和lwang。只需在別名檔案中加入:
    xn_group:xiaoniao,lyong,twang,lwang
    owner_xn_group:xiaoniao
  當接收者是xn_group時,信會自動發給xiaoniao,lyong,twang和lwang。當傳送郵件給xn_group是如果出錯,將把錯誤資訊發給xiaoniao。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990888/,如需轉載,請註明出處,否則將追究法律責任。

相關文章