關於郵件服務器的一些相關知識
一、電子郵件系統的組成
5部分:MTA,MSA,MUA,MDA,MAA
1、 郵件用戶代理(Mail User Agent,MUA)
MUA是一個郵件系統的客戶端程序,它提供了閱讀,發送和接受電子郵件的用戶接口。
最常用的MUA有:linux中的mail,elm,pine等。Windows的outlook ,foxmail等、 郵件代理器(Mail Transfer Agent,MTA)
MTA負責郵件的存儲和轉發(store and forward)。MTA監視用戶代理的請求,根據電子郵件的目標地址找出對應的郵件服務器,將信件在服務器之間傳輸並且將接受到的郵件進行緩衝。
在linux下的MTA程序有:sendmail,qmail等,、郵件提交代理(Mail Submmission Agent,MSA)
MSA負責消息有MTA發送之前必須完成的所有準備工作和錯誤檢測,MSA就像在MUA和MTA之間插入了一個頭腦清醒的檢測員對所有的主機名,從MUA得到的信息頭等信息進行檢測。、郵件投遞代理(Mail Ddlivery Agent,MDA)
MDA從MTA接收郵件並進行適當的本地投遞,可以投遞個一個本地用戶,一個郵件列表,一個文件或是一個程序。
Linux下常用的MDA是mail.local,smrsh和procmail(www.procmail.org)、郵件訪問代理(Mail Access Agent,MAA)
MAA用於將用戶連接到系統郵件庫,使用POP或IMAP協議收取郵件。
Linux下常用的MAA有UW-IMAP,Cyrus-IMAP,COURIER-IMAP等
2
3
4
5
二、電子郵件協議
1、 SMTP
2、POP3
3、IMAP
4、MIME三、電子郵件與DNS四、郵件中繼
二、aliases 別名數據庫設置 (/etc/aliases)
test: test1,test2,test3 設置test羣組別名,test不是一個實際的用戶,只是一個別名。發給
test的信,test1,2,3都可收到。
test: test,testbak 在testbak郵箱中備份test的郵件。
test: test,[email protected] 遠程郵件備份,原理同上。
test: :include: /etc/mail/userlist 使用用戶列表設置羣組。
userlist格式如下:
test1, \
test2, \
test3, \
test4
關於系統預設aliases,由於sendmail預設用mailer-daemon and postmaster作爲資料傳送者,
或郵件退回的帳號,但系統實際沒有這兩個帳號,所以要如下設置別名。
mailer-daemon: postmaster
postmaster: root
設置完成後不要忘了用newaliases命令生成數據庫。(/etc/aliases.db) 三、~/.forward文件配置
其實該文檔的作用和aliases數據庫的作差不多啦,都是配置別名,做郵件轉發的。因爲alises
只能由管理員控制,個人用戶不能修改,所以就可以在個人的目錄下建立一個轉寄文檔。以
設置個人的郵件轉寄列表。文檔格式如下:
test
test1
test2
test3
and os on
但由於個人用戶安全意識差,如果設置不當會有安全漏洞,不建議使用。 四、access訪問控制列表設置 (/etc/mail/access)
92.168 RELAY
test.NET OK
test.COM REJECT
test.COM 550 SORRY,WE DON’T ALLOW SPAMMERS HERE
test.ORG DISCARD
Ok–遠程主機可以向你的郵件服務器發送郵件;
RELAY–允許中轉;
REJECT–不能向你的郵件服務器發郵件和不能中轉;
DISCARD–發來的郵件將被丟棄,同時並不向發送者返回錯誤信息。
nnn text– 發來的郵件將被丟棄,但sendmail將會向發送者返回nnn確定的smtp代碼和text
變量確定的文本描述。
設置完成後要生成數據庫(/etc/mail/access.db)
方法1
cd /etcm/mail
make
make restart
方法2
cd /etc/mail
makemap hash access.db < access
service sendmail restart
五、幾個有關郵件命令
mailq郵件隊列查詢命令。
Q-ID 郵件id號。
Size 郵件容量。
Q-Time 郵件進入隊列(也就是/var/spool/mqueue目錄)的時間和不能郵寄的原因。
Sender/Recipient 發信和收信人的郵箱地址。 郵寄狀態查詢命令,可查詢sendmail運行作至今郵件收發總計資料。
M :
msgsfr:發送的郵件數量。
bytes_from:郵件容量
megsto:收到郵件的數量。
bytes_to:同上
msgsrej:郵件deny的次數。
msgsdis:郵件discard的次數。
Mailer :esmtp對外郵件 ,local本地郵件 。 郵件命令
mail 查看/var/spool/mail/目錄下自已郵箱內容。以q退出把看過的郵件保存在
~/mbox中。
mail [email protected] 直接發郵件給人。
mail -s ’title text’ [email protected] < mail.txt 把文檔中內容郵寄出去。
mail -f ~/mbox 查看home目錄下郵箱內容。
用mail發附件也是可行,要用到uuencode and uudecode命令進行編碼。
編碼:uuencode [file] name example:uuencode hello hello>;hello.uue default input
is stdin;default output is stdout.
解碼:uudecode [-o outfile] name example:uudecode hello.uue 可以用-o選項輸出另外一個
文件名。
# uuencode ~/.bashrc bashrc | mail -s ’test uuencode’ [email protected]
mailstats