RHCE(十三)用postfix搭建郵件服務器

postfix

postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件。Postfix試圖更快、更容易管理、更安全,同時還與sendmail保持足夠的兼容性,因此它是免費的。現在主流郵件服務都在採用postfix. 當需要一個輕量級的的郵件服務器時,postfix也是一種選擇。

郵件系統的組成

每個郵件系統主要由4部分組成:

  • MUA:郵件用戶代理,客戶端收發郵件的軟件——寫信人
  • MDA:郵件投遞代理,在郵件服務器上將郵件存放到相應的位置——郵件投遞
  • MTA:郵件傳輸代理,服務器上的部署郵件服務器的軟件——郵件裝箱發送
  • MRA:郵件收取代理,爲MUA讀取郵件提供標準接口,主要使用POP3和IMAP協議——收件人

郵件服務工作流程

  1. 兩個不同的域的用戶進行郵件收發
  2. 使用客戶端或者編輯器寫郵件發送到自己域內的郵件服務器
  3. 郵件服務器通過域內的客戶端發送郵件到目標域
  4. 客戶端通過DNS查詢MX記錄和A記錄解析對方的IP地址,多個MX記錄就找優先級高的——10
  5. 目標服務端的服務正常監聽在指定端口上來接收客戶端的請求
  6. 確認郵件的目標用戶是否在本域
  7. 如果在域內,通過郵件投遞代理把郵件存放到指定的郵件目錄 /var/spool/mail/redhat
  8. 該用戶登錄系統後進行郵件檢測,然後收取郵件即可

三種協議

郵件服務器採用的是C/S工作模式,通過SMTP,POP,IMAP協議來是實現郵件的發送和接收的。

SMTP

SMTP 的全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協議。它是一組用於從源地址到目的地址傳輸郵件的規範,通過它來控制郵件的中轉方式。SMTP 協議屬於 TCP/IP 協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP 服務器就是遵循 SMTP 協議的發送郵件服務器。 SMTP 認證,簡單地說就是要求必須在提供了賬戶名和密碼之後纔可以登錄 SMTP 服務器,這就使得那些垃圾郵件的散播者無可乘之機。 增加 SMTP 認證的目的是爲了使用戶避免受到垃圾郵件的侵擾。

ESMTP:(Extended SMTP) 是對標準 SMTP 協議進行的擴展。它與 SMTP 服務的區別僅僅是,使用 SMTP 發信不需要驗證用戶帳戶,而用 ESMTP 發信時,服務器會要求用戶提供用戶名和密碼以便驗證身份。在所有的驗證機制中,信息全部採用Base64編碼。驗證之後的郵件發送過程與 SMTP方式沒有兩樣。

POP3

POP3是Post Office Protocol 3的簡稱,即郵局協議的第3個版本,它規定怎樣將個人計算機連接到Internet的郵件服務器和下載電子郵件的電子協議。它是因特網電子郵件的第一個離線協議標準,POP3協議允許電子郵件客戶端下載服務器上的郵件,但是在客戶端的操作(如移動郵件、標記已讀等),不會反饋到服務器上,比如通過客戶端收取了郵箱中的3封郵件並移動到其他文件夾,郵箱服務器上的這些郵件是沒有同時被移動的 。

(與IMAP有什麼區別?)
Pop3是從郵件服務器中下載郵件存起來支持不在線用戶,基於TCP/IP,明文,使用110端口 問題:不能同步

IMAP

IMAP全稱是Internet Mail Access Protocol,即交互式郵件存取協議,
它是跟POP3類似郵件訪問標準協議之一。不同的是,開啓了IMAP後,您在電子郵件客戶端收取的郵件仍然保留在服務器上,同時在客戶端上的操作都會反饋到服務器上,如:刪除郵件,標記已讀等,服務器上的郵件也會做相應的動作。所以無論從瀏覽器登錄郵箱或者客戶端軟件登錄郵箱,看到的郵件以及狀態都是一致的。

(與POP3有什麼區別?)
將郵件留在服務器端直接對郵件進行管理、操作,比POP3更先進支持郵件頭部預覽主題來源,基於TCP/IP,使用143端口

POP3 和 IMAP 區別

  1. IMAP客戶端上收取郵件後郵件依舊保留在服務器上,同時在客戶端上的操作也會保留在服務器端,POP3不會;
  2. IMAP更好的支持從多個設備中隨時訪問新郵件;
  3. IMAP提供的摘要遊覽功能可以讓你閱讀完所有的郵件到達時間、主題、發件人、大小等信息後才作初是否下載的決定;
  4. pop3需要下載所有的郵件,IMAP不能將所有的郵件下載,而是通過客戶端直接對服務器上的郵件進行操控。所有的IMAP可以對數據進行加密從而保證通信安全;
  5. IMAP整體上爲用戶帶來了更爲便捷和可靠的的體驗,pop3 更容易丟失郵件或者多次重複下載相同的郵件;

常用端口

	25		smtp 	發送郵件
	110		pop3 	接收郵件
	143		imap	接收郵件
	995		pop3s
	993		imaps
	465		smtps

mail命令

#寫郵件給redhat
mail to redhat	 
#輸入郵件的主題,冒號前的爲提示信息
Subject:test
#輸入主題後會返回空白提示,輸入郵件內容
mail body,mail content.
#按下CTRL+d按鍵保存發送,回顯一個標記
EOT
#到redhat用戶查收郵件
su - redhat
#使用mail命令查看自己的郵件,返回以下信息:
mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/redhat": 1 message 1 new
>N  1 root                  Sun Apr 24 02:18  19/640   "test"
&_(下劃線爲提示符)
#輸入1查看編號爲1的郵件
1
Message  1:
From root@localhost.localdomain  Sun Apr 24 02:18:54 2016
Return-Path: <root@localhost.localdomain>
X-Original-To: redhat
Delivered-To: redhat@localhost.localdomain
Date: Sun, 24 Apr 2016 02:18:54 +0800
To: redhat@localhost.localdomain, to@localhost.localdomain
Subject: test
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@localhost.localdomain (root)
Status: R

郵件羣發

以root發送 workgroup組中的用戶都可以收到郵件

#編輯文件
vim /etc/aliases
#加入以下內容
Workgroup:	user1,user2,redhat
workgroup1:	redhat,user3
#使用postalias命令將別名文件轉換成數據庫
[root@mail ~]# postalias /etc/aliases

#羣發郵件
mail to workgroup
#進入各自家目錄驗證
su - user1
su - user2

搭建框架

在linux7.X 版本上搭建基於Postfix SASL 以及Dovecot搭建一個功能完整的郵件服務器。

服務器   postfix   +SASL + dovecot
客戶端
  • Postfix 發送郵件服務
  • SASL 全稱Simple Authentication and Security
    Layer,是一種用來擴充C/S模式驗證能力的機制。在Postfix可以利用SASL來判斷用戶是否有權使用轉發服務,或是辨認誰在使用你的服務器。
  • Dovecot 接受郵件服務
  • 客戶端我們通過使用FOXmail軟件測試

Linux系統上搭建郵件服務器

1、配置postfix服務 (自定義郵件域信息)

#配置郵件服務器主機名
76 myhostname = mail.qq.com

#配置域名(這個郵件服務器管理的是哪個區域範圍的郵件發送)
83 mydomain = qq.com

#指定郵件發送時的域名
99 myorigin = $mydomain

#指定網絡接口(默認只監聽本地但是如果要與外界通信那麼就要監聽所有地址)
113 inet_interfaces = all
116 註釋掉

#指定服務器的目標區域  設置郵件可以發送到哪些域名
164 mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain

#指定允許網絡網段地址,設置信任的郵件客戶端地址
264 mynetworks = 192.168.0.0/24

#轉發域   設置郵件轉發到哪去
296 relay_domains = $mydestination

解讀postfix 主配置文件

安裝postfix,默認已經安裝
yum install postfix -y
主配置文件——/etc/postfix/main.cf

command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix  所有在master.cf中用到的服務程序存放的路徑
data_directory = /var/lib/postfix    存放緩存。隨機數等可寫的書籍文件存放位置
mail_owner = postfix
default_privs=nobody 本地投遞代理的運行身份
myhostname=host.domain.tld設置郵件服務器的完全合格的域名
mydomain=domian.tld  本地域名
myorigin=$mydomain 發送郵件時設置的發件人的域名
inet_interfaces = localhost  設置postfix從哪個接口接受郵件
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost  設置郵件可以發送到哪些域名
unknown_local_recipient_reject_code = 550 拒絕郵件的錯誤代碼550
mynetworks=168.100.189.0/28,127.0.0.0/8 設置信任的郵件客戶端地址
relay_domains=$mydestination 設置郵件轉發到哪去
alias_maps = hash:/etc/aliases   設置別名數據庫
alias_database = hash:/etc/aliases
Header_checks=regexp:/etc/postfix/header_checks 檢查郵件有的 設置
sendmail_path = /usr/sbin/sendmail.postfix   postfix發送郵件的程序路徑
newaliases_path = /usr/bin/newaliases.postfix    postfix完整的別名程序路徑
mailq_path = /usr/bin/mailq.postfix      postfix的mailq程序路徑
setgid_group = postdrop   設置郵件提交和隊列管理的命令
html_directory = no  本地沒有安裝postfix的html文檔
manpage_directory = /usr/share/man     幫助手冊的位置
sample_directory = /usr/share/doc/postfix-2.10.1/samples   示例目錄的位置
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES 自述目錄位置

2、配置dovecot服務

dovecot: 郵件接收服務器

#配置dovecot主配置文件
[root@localhost ~]# vi /etc/dovecot/dovecot.conf  (本地郵件傳輸協議)
24 protocols = imap pop3 lmtp     
48 login_trusted_networks = 192.168.0.0/24  允許登錄接受的ip段

#配置dovecot子配置文件
[root@localhost ~]# vi /etc/dovecot/conf.d/10-mail.conf
25 mail_location = mbox:~/mail:INBOX=/var/mail/%u
添加用戶之後,需要在用戶目錄下建立INBOX文件夾,否則後面在收信的時候會報錯。

注意:有的系統可能沒有權限

chmod 600 /var/mail/*

如果不執行上面這個命令,可能會出現在系統中可以收到郵件,但是客戶端無法收到郵件,注意查看系統/var/log/maillog日誌

3、開啓SASL認證

開啓SASL認證sasl auth model
編輯main.cf配置文件,追加如下行:

[root@localhost ~]# vi /etc/postfix/main.cf
broken_sasl_auth_clients = yes                                                                                                                                           
#啓用SASL對客戶端進行認證
smtpd_sasl_auth_enable = yes                                                                                                                                            
#啓用SASL認證
smtpd_sasl_security_options = noanonymous                                                                                                                  
#匿名用戶
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
#定義收件人限定   =允許sasl接收限制l認證,允許mynetworks,拒絕unauth目的地

#配置完成後,重啓以下服務
systemctl restart postfix
systemctl restart dovecot
systemctl restart saslauthd

如果有問題可以查看日誌修改

tail -f /var/log/maillog   查看日誌信息

4、配置DNS服務器

yum install bind -y	安裝軟件 

修改dns配置文件
[root@localhost ~]# vim /etc/named.conf
在這裏插入圖片描述
創建對應資源文件
[root@localhost ~]# vim /var/named/named.qq.com

在這裏插入圖片描述
修改dns服務器地址
[root@localhost ~]# vim /etc/resolv.conf
在這裏插入圖片描述

5、創建用戶

[root@localhost mail]# useradd xixi
[root@localhost mail]# useradd haha
[root@localhost mail]# useradd hehe
[root@localhost mail]# echo redhat | passwd --stdin xixi
更改用戶 xixi 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost mail]# echo redhat | passwd --stdin hehe
更改用戶 hehe 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost mail]# echo redhat | passwd --stdin haha
更改用戶 haha 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。

6、驗證

在window安裝foxmail,打開foxmail,手動添加用戶,用戶間互發郵件進行驗證

虛擬別名域

在qq域的主配置文件中添加如下內容:

[root@mail ~]# vi /etc/postfix/main.cf
virtual_alias_domains = work.com 	 (虛擬)
virtual_alias_maps = hash:/etc/postfix/virtual     ---映射

在虛擬別名域中添加如下內容

#vim /etc/postfix/virtual
@work.com     @qq.com        #work對應的是qq域

注意:如果是本域用戶不需要加後綴。

每次改變該文件,需要執行以下兩個命令

#重新生成虛擬別名域數據庫
[root@mail ~]# postmap /etc/postfix/virtual
#重新加載虛擬別名域數據文件
[root@mail ~]# systemctl reload postfix

測試 —— 以一個用戶身份發送郵件給設定好的虛擬用戶發送郵件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章