三個要點
1.smtp協議
2.搭建本地郵件伺服器
3.使用外部郵件伺服器 實現郵件功能
1.smtp協議
SMTP(Simple Mail Transfer Protocol)即簡易郵件傳輸通訊協定,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議簇,它協助每台電腦在發送或中轉信件時找到下一個目的地。通過SMTP協議所指定的伺服器,就可以把E-mail寄到收信人的伺服器上了,整個過程只要幾分鐘。SMTP伺服器則是遵循SMTP協議的發送郵件伺服器,用來發送或中轉寄出的電子郵件。
SMTP 認證,簡單地說就是要求必須在提供了賬戶名和密碼之後才可以登入 SMTP 伺服器,這就使得那些垃圾郵件的散播者無可乘之機。 增加 SMTP 認證的目的是為了使使用者避免受到垃圾郵件的侵擾。
SMTP 在 TCP 協議 25 連接埠監聽串連請求。
此外還有兩個協議需要瞭解 IMAP協議、 POP3協議
簡單地說,SMTP管‘發’, POP3/IMAP管‘收’。
IMAP協議
IMAP全稱是Internet Mail Access Protocol,即互動式郵件存取協議,它是跟POP3類似郵件訪問標準協議之一。不同的是,開啟了IMAP後,您在電子郵件用戶端收取的郵件仍然保留在伺服器上,同時在用戶端上的操作都會反饋到伺服器上,如:刪除郵件,標記已讀等,伺服器上的郵件也會做相應的動作。所以無論從瀏覽器登入郵箱或者用戶端軟體登入郵箱,看到的郵件以及狀態都是一致的。
它與POP3協議的主要區別是使用者可以不用把所有的郵件全部下載,可以通過用戶端直接對伺服器上的郵件進行操作
POP3協議
POP3是Post Office Protocol 3的簡稱,即郵局協議的第3個版本,它規定怎樣將個人電腦串連到Internet的郵件伺服器和下載電子郵件的電子協議。它是網際網路電子郵件的第一個離線協議標準,POP3允許使用者從伺服器上把郵件儲存到本地主機(即自己的電腦)上,同時刪除儲存在郵件伺服器上的郵件,而POP3伺服器則是遵循POP3協議的內送郵件伺服器,用來接收電子郵件的。 執行個體:
網易YEAH 郵箱相關伺服器資訊:
| 郵件伺服器名稱 |
伺服器位址 |
連接埠號碼 |
| POP3伺服器 |
pop.yeah.net |
110 |
| SMTP伺服器 |
smtp.yeah.net |
25 |
| IMAP伺服器 |
imap.yeah.net |
143
|
下面使用telnet 示範一下 smtp 互動過程 $telnet smtp.163. com 25 發送串連
220 163.com Anti-spam GT for Coremail System (163com[20141201]) 回應220 服務就緒 helo 66 HELO命令標記自己的身份 250 OK 回應250 請求郵件動作正確,完成
auth login 登陸驗證 334 dXNlcm5hbWU6 要求輸入username:
這裡輸入USERbase64加密後的使用者名稱
334 UGFzc3dvcmQ6 要求輸入Password: 這裡輸入 PASSbase64加密後的密碼
235 Authentication successful 回應235 :認證通過
MAILFROM:XXX@163 .COM 表示寄件者的郵件地址
250 Mail OK
RCPTTO:XXX@163 .COM 標識接收者的郵件地址
250 Mail OK
DATA
354 End data with 郵件的資料 . 以一個"."開始的行作為資料部分的結束標識
2.搭建本地郵件伺服器
首先還是三個概念
Internet的郵件系統是通過幾個複雜的部分串連而成的,對於終端使用者而言,我們熟悉的Outlook,Foxmai,linux下的mail、mailx、nail 等都是用來收信和發信的,稱之為MUA:Mail User Agent,郵件使用者代理
MUA並非直接將郵件發送至收件者手中,而是通過MTA:Mail Transfer Agent,郵件傳輸代理程式代為傳遞,Sendmail和Postfix就是扮演MTA的角色。
一封郵件從MUA發出後,可能通過一個或多個MTA傳遞,最終到達MDA:Mail Delivery Agent,郵件投遞代理,郵件到達MDA後,就存放在某個檔案或特殊的資料庫裡,我們將這個長期儲存郵件的地方稱之為郵箱。
結合第一部分所講內容,一封信件發送時從 MUA到MTA,以及MTA到MTA之間使用的協議就是SMTP協議,而收郵件時,MUA到MDA之間使用的協議最常用的是POP3或IMAP。
寄件者:MUA --發送--> MTA -> 若干個MTA... -> MTA -> MDA <--收取-- MUA:收件者
所以我們搭建本地郵件伺服器 要提供 郵件傳輸代理程式 和 郵件投遞代理 兩個服務
目前比較主流的搭配是Sendmail + Dovecot 來提供這兩個服務
不過,sendmail的配置十分複雜,因此,也有人使用另外的一些工具,如qmail、postfix等等。 例如使用Postfix + Dovecot
這裡主要講下Sendmail + Dovecot,
2.1 佈建網域名和網路
公網ip為1.1.1.1 網域名稱為 yunwei521.top 在dns服務位址添加此解析
主機記錄@ 記錄類型 MX 記錄值 1.1.1.1 這樣就可以提供 例如 xxx@yunwei521.top 的郵箱服務。
如果只是想在內網做一個測試,要先建立一台dns伺服器(192.168.1.1),並添加解析 將網域名稱解析到192.168.1.2我們要 建立的郵件伺服器 。
2.2 安裝軟體
安裝郵件伺服器
# yum install sendmail sendmail-cf
安裝pop3/imap服務
# yum install dovecot
安裝使用者認證
# yum install cyrus-sasl
# yum install cyrus-sasl-md5
# yum install cyrus-sasl-plain
# yum install cyrus-sasl-lib
開啟防火牆25(smtp)、143(imap)連接埠,關閉SELINUX
2.3軟體配置
配置sendmail 進入/etc/mail
# cd /etc/mail
3.1 配置access
# vi /etc/mail/access
通常情況下,Sendmail不會為郵件服務Relay資訊,這樣可以防止一些有惡意的人利用別人的郵件伺服器亂髮郵件,所以,access保持預設配置即可
內容如下
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
當然也可針對某段IP或某個IP做修改,如要禁止某個ip發信,則可添加
192.168.0.2 deny
儲存檔案後運行下面命令進行編譯
# makemap hash access.db < access
3.2 配置TLS(支援加密串連LLS)
首先產生sendmail.pem檔案
# cd /etc/pki/tls/certs
# make sendmail.pem
Country Name (2 letter code) [GB]:ch
State or Province Name (full name) [Berkshire]:sh
Locality Name (eg, city) [Newbury]:sh
Organization Name (eg, company) [My Company Ltd]:test.
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname)[]: server110 .com
E-mail Address []:test@ server110 .com
3.3 配置sendmail.mc
# vi /etc/mail/sendmail.mc
添加:
define(`confAUTH_OPTIONS', `A p y')dnl
define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl
如果有,則預設被dnl注釋,刪除前面的dnl注釋即可
取消如下兩行的注釋(刪除開頭的dnl)
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
修改SMTP的監聽IP為 0.0.0.0
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
不要改