SMTP基本電子郵件發送前端
1.電子郵件發送linux
客戶端發送給服務器端,postfix軟件提供MTA,MDA.vim
MTA 提供SMTP服務,接受郵件(讀取DNS的MX記錄)--》保存MDA 傳送郵件數組
MUA 用戶代理安全
1-1服務器使用SMTP協議將電子郵件提交至TCP端口25,或由本地客戶端經過/usr/bin/sendmail程序進行提交。若是該MTA是最終目標位置,郵件將傳遞至MDA。不然,將使用MX記錄在DNS中查找下一個MTA,並使用SMTP進行轉發。服務器
1-2.MDA:「郵件發送代理」。MDA將郵件發送至收件人的本地郵件存儲位置(默認狀況下是/var/spool/mail/user)。Postfix提供本身的MDA,以發送至基於文件的本地默認郵件存儲位置/usr/libexec/postfix/local.網絡
1-3.轉發:電子郵件服務器(MTA)將提交的郵件轉發至另外一個服務器,以進行發送dom
1-4.排隊:失敗的發送或轉發嘗試排隊等待,並由MTA定義重試。(默認狀況下,Postfix每小時執行此操做一次)編輯器
1-5.拒絕:在首次提交期間,電子郵件被電子郵件服務器拒絕ide
1-6.退回:遠程服務器接受電子郵件以進行發送之後,又將該電子郵件退回給始發電子郵件服務器和/或用戶電子郵件以進行發送之後,又將該電子郵件退回給始發電子郵件服務器和/或用戶
2-1Postfix由postfix RPM包提供,並經過postfix服務腳本控制。它是一個由多個協同操做程序構成的模塊化程序,它的組件由master進程控制。
2-2Postfix的主配置文件是/etc/postfix/main.cf,可使用文本編輯器或postconf命令進行編輯。postconf命令還可用於肯定Postfix的全部當前和默認配置設置或逐項肯定這些設置。
2-3默認狀況下,Postfix僅偵聽來自本地主機的傳入電子郵件。若要從新配置postfix以接收從遠程主機發送的本地郵件,必須在/etc/postfix/main.cf中設置inet_interfaces = all
2-4對電子郵件進行故障排除時,將在/var/log/maillog中保留全部與郵件相關的操做日誌,其中包括關於被事件和成功事件的信息。mailq命令(或postqueue -p)顯示已排隊的全部傳出郵件的列表。若要嘗試再次當即發送全部已排隊的郵件,能夠運行postfix flush命令(或postqueue -f);不然,postfix將大約每小時嘗試從新發送一次,直至郵件被接受或過時
3.重要的Postfix配置指令
能夠在/etc/postfix/main.cf文件中找到如下全部指令。
3-1 myorigin
重寫本地發佈的電子郵件,使其顯示爲來自該域。這樣有助於確保響應返回入站郵件服務器
默認:myorigin = $myhostname
3-2 inet_interfaces
控制Postfix偵聽傳入電子郵件的網絡接口。若是設置爲loopback-only,僅偵聽127.0.0.1和::1,
若是設置爲all,則偵聽全部網絡接口。還能夠指定特定地址。
默認:inet_interfaces = localhost
3-3 mydestination
收到地址爲這些域的電子郵件將傳遞至MDA,以進行本地發送。
默認:mydestination = $myhostname, localhost.$mydomain, localhost
3-4 mynetworks
IP地址和網絡的逗號分隔列表(採用CIDR表示法)。這些地址和網絡能夠經過此MTA轉發至任何位置,無需進一步身份驗證。
默認:mynetworks = 127.0.0.0/8
3-5 relayhost
relayhost轉發全部經過的出站郵件。一般用方括號指定,以阻止MX記錄查找。
默認:relayhost =
3-6 local_transport
收件地址爲$mydestination的郵件的發送方式。默認狀況下,設置爲local:$myhostname(使用Local MDA將傳入電子郵件發送到/var/spool/mail中的本地郵件存儲位置)
默認:local_transport = local:$myhostname
3-7
postconf -d 顯示默認值。
postconf -n顯示不一樣於默認值的更改。
4.空殼郵件客戶端(給服務端新建空殼,保護數據安全。)
實際上,大多數組織再也不只用一個郵件服務器來處理全部入站和出戰電子郵件。相反,出於安全方面的考慮郵件服務器專門針對特定角色進行了設置,以即可以面向其具體針對的應用程序更好標準角色包括:
1)null客戶端:運行本地MTA的客戶端計算機,使全部電子郵件均可以轉發至中央郵件服務器以進行發送,null客戶端不接受任何電子郵件的本地發送。
2)僅入站郵件服務器:在站點處理用戶的全部傳入電子郵件,並將之傳遞給MDA以發送至用戶郵件存儲位置的郵件服務器。在實際狀況中,一般會在僅入站郵件服務器前端安裝反垃圾郵件服務器或備,以過濾垃圾郵件而且僅將 正常郵件轉發至入站郵件服務器。
3)出站郵件轉發:出站郵件轉發(或「smarthost」)接收全部出站郵件,並使用MX記
錄和SMTP協議將郵件轉發至目標位置 。
#################環境配置
一臺主機:(IP:172.25.254.1450
hostnamectl set-hostname mailinux.linux.com
yum install bind
systemctl start named
systemctl stop firewalld.service
vim /etc/resolv.conf
vim /etc/named.conf
vim /etc/named.rfc1912.zones
cd /var/named
cp -p named.localhost westos.com.zone
vim westos.com.zone
cp -p named.localhost linux.com.zone
vim linux.com.zone
另一臺主機
hostnamectl set-hostname mailwestos.westos.com
systemctl stop firewalld 關掉火牆
vim /etc/resolv.conf
測試
兩臺主機均可以做爲測試端
dig -t mx linux.com
dig -t mx westos.com
####################遠程發送
一臺主機
vim /etc/postfix/main.cf
mydomain = linux.com #收件方看到的發送方郵件主機名
myorigin = $mydomain
inet_interfaces = all #開啓接口
#inet_interfaces = localhost #關閉只容許本地訪問
mydestination = $myhostname, $mydomain, localhost #
重啓服務 systemctl restart postfix.service
另一臺主機
vim /etc/postfix/main.cf
配置相同,只是把全部的linux改成westos
重啓服務 systemctl restart postfix.service
netstat antlpe |grep master #查看端口
測試(兩臺主機均可以)
在lmailinux主機上測
在另一臺主機上看發送結果
##############################別名
1.vim /etc/aliases(mailinux主機)
最後添加 root: admin
2.postalias /etc/aliases
3.systemctl restart postfix
4.mail admin #可直接用別名給root發郵件
測試
mailwestos發送主機
發送
mailinux主機接收
###############################羣發
1.vim /etc/moreusers(mailinux主機)
root
student
2.vim /etc/aliases
最後添加 more: :include:/etc/moreusers
3.postalias /etc/aliases
4.systemctl restart postfix
5.mail more
6.分別查看
mail -u student
測試
mailwestos發送主機
mailinux接收主機 (root和student用戶都接收到了郵件)
############################出站地址假裝
1.vim /etc/postfix/generic(mailinux主機)
2.postmap /etc/postfix/generic
3. postconf -e "smtp_generic_maps=hash:/etc/postfix/generic"
4.systemctl restart postfix.service
5.測試
mailinux發送端
mailwestos測試端
###########################遠程發送
另一臺主機上操做,從mailinux主機發送一份郵件到mailwestos主機
在mailwestos主機上查看