淺析郵件服務器原理

上面的架構圖中包含兩組郵件系統、兩個客户端和一個DNS服務器,其中的郵件系統是企業中比較經典的架構形式,下面我將依據此圖來簡述郵件服務器的工作流程。

名詞解釋:

  • MUA 接收郵件所使用的郵件客户端,使用IMAP或POP3協議與服務器通信,常見的有:outlook、foxmail;
  • MTA 通過SMTP協議發送、轉發郵件,常見的有:sendmail、postfix、qmail;
  • MDA 將MTA接收到的郵件保存到磁盤或指定地方,通常會進行垃圾郵件及病毒掃描;
  • MRA 負責實現IMAP與POP3協議,與MUA進行交互;
  • SMTP 傳輸發送郵件所使用的標準協議;
  • IMAP 接收郵件使用的標準協議之一;
  • POP3 接收郵件使用的標準協議之一;
  • MailBox 用户郵箱;
  • cyrus-SASL及courier-authlib 提供用户認證相關的支持。
  • SQL 數據庫,用於存儲用户身份信息

前面的架構圖中,MUA想發送郵件,就要將郵件通過SMTP協議送到MTA上,MTA通常會要求用户認證身份(也可不認證),認證通常使用SASL,認證源可以是像上面的架構圖中那樣使用SQL數據庫也可以使用其他方式。MTA收到郵件後會檢查郵件目的地址的郵件域,此時會產生兩種情況。
情況一,目的郵件域是本服務器:
如果發現是本服務器的郵件域則將郵件送到MDA,由MDA將其投遞到用户的郵箱(MailBox)中。最後用户在MUA上使用POP3/IMAP協議鏈接MRA,MRA通常也會要求用户認證身份,其認證源同MTA一樣可以是SQL也可以是其他方式,若認證通過,則允許MUA讀取郵件信息。
情況二,目的郵件域非本服務器:
若是郵件域是其他郵件服務器的,則MTA會發送UDP報文向DNS服務器查詢郵件域對應的郵件主機,並最終解析出其IP地址,隨後MTA會查詢本服務器的轉發控制策略,若允許轉發,則將郵件轉發到該域對應的服務器上,最終會重複情況一中MTA收到郵件後的處理方式。

CentOS 6下郵件接收代理程序——dovecot配置教程

介紹:
dovecot是開源的pop3和imap郵件服務器(MRA,郵件接收代理),用於支持客户端從服務器讀取郵件。
軟件安裝:

[root@localhost ~]# yum install -y dovecot

dovecot配置部分
使用vim文本編輯器編輯dovecot主配置文件

[root@localhost ~]# vim /etc/dovecot/dovecot.conf

找到# protocols = imap pop3 lmtp這條配置語句,去掉前面的註釋(#)。這裏是開啓dovecot的pop3和imap服務。

修改後如圖:

保存並退出。
編輯/etc/dovecot/conf.d/10-auth.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-auth.conf

找到# disable_plaintext_auth = yes,去掉前面的註釋(#)並將= yes改為= no。這裏是定義允許使用明文密碼登陸imap/pop3。

修改後如圖:

保存並退出
編輯/etc/dovecot/conf.d/10-mail.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.conf

找到# mail_location = mbox:~/mail:INBOX=/var/mail/%u,去掉前面的註釋(#)。這裏是定義郵件存儲路徑。

修改後如圖:

保存並退出,至此dovevot部分配置完成。
現在在保證selinux及防火牆已關閉的情況下啓動dovecot服務。

[root@localhost ~]# service dovecot start

添加兩個郵件賬户測試用:

[root@localhost ~]# useradd -s /sbin/nologin user1
[root@localhost ~]# useradd -s /sbin/nologin user2
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2

創建完賬户後要賦予賬號對應的郵箱777的權限,否則接收不到郵件。

[root@localhost ~]# chmod 777 /var/mail/*

測試服務可以使用outlook、fixmail等郵件客户端。
推薦配置完MTA(郵件傳輸代理)和MRA(郵件接收代理)後一起測試,會方便很多。
關於MTA(郵件傳輸代理)的配置教程可以參考以下文章:

CentOS 6下使用sendmail搭建簡單郵件傳輸服務器