溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【我的Linux,我做主!】動手搭建Postfix郵件服務器

發(fā)布時間:2020-07-03 05:50:31 來源:網絡 閱讀:1893 作者:Tom王 欄目:系統(tǒng)運維

目錄:
(一)了解郵件的整個收發(fā)流程
(二)配置postfix郵件服務器
(三)使用圖形客戶端收發(fā)郵件


(一)了解郵件的整個收發(fā)流程

(1.1)電子郵件在我們的日常生活中,屬于經常用到的一種信息傳輸服務。我們使用的可能是自己公司的郵件服務器,也可能使用的是互聯(lián)網中提供的知名郵件服務器,例如QQ郵箱、163郵箱、126郵箱等,它們收發(fā)郵件的流程都是一樣的。假設現(xiàn)在有一個126郵件服務器,在郵件服務器上有兩個帳戶,分別是tom@126.com和bob@126.com,此時如果tom想要發(fā)送郵件給bob,那么他發(fā)送郵件后,郵件首先會到達126郵件服務器,并標注“to:bob@126.com”,此時126服務器發(fā)現(xiàn)發(fā)送的郵件是屬于自己的注冊用戶,那么126郵箱就會將這封郵件投遞到bob的郵箱中,當bob進入到自己的郵箱后發(fā)現(xiàn)自己有一封未讀的郵件,此時tom用戶就完成了發(fā)送郵件給bob的需求,這是在同一臺郵件服務器中發(fā)送郵件的過程。

現(xiàn)在我們的環(huán)境中又出現(xiàn)了一臺QQ的郵件服務器mail.qq.com,在QQ的域中還存在著域名解析服務器ns.qq.com,對域中的所有主機進行域名解析的操作,假設在QQ服務器上存在著一個mary@qq.com的賬戶。tom@126.com準備給mary@qq.com用戶發(fā)送一封郵件并標注“to:mary@qq.com”,此時126服務器接收到郵件后發(fā)現(xiàn)mary@qq.com并不是自己服務器中的賬戶,因此126服務器需要知道QQ郵件服務器的IP地址,126服務器首先會將查詢IP地址的請求發(fā)送給自己域中的DNS服務器,126域中的郵件服務器向DNS服務器查詢的方式主要是通過遞歸查詢。此時126域中的DNS服務器會去向全球13臺根域名服務器進行查詢,通過迭代查詢的方式,經歷了根域、頂級域、一級域、二級域...最終找到了QQ域中的DNS服務器,此時126域中的DNS服務器會向QQ域中的DNS服務器發(fā)送查詢請求:“請問你知道QQ域中的郵件服務器是那一臺嗎?”此時QQ域中的DNS服務器便會去查詢自己服務器上的MX記錄找到優(yōu)先級高的郵件服務器,并向126域中的DNS服務器回應:“知道,域中的郵件服務器是mail1.qq.com”,接著126域中的DNS服務器繼續(xù)詢問:“請問mail1.qq.com主機的A記錄是什么呢?”此時QQ域中的DNS服務器會回答:“知道,mail1.qq.com的A記錄是xxx”,這個時候126域中的DNS服務器便會將查詢的結果告訴給126域中的郵件服務器,126域中的郵件服務器知道了QQ域中的郵件服務器后,便會把服務器中的“to:mary@qq.com”郵件發(fā)送到QQ域中的郵件服務器上,此時QQ郵件服務器發(fā)現(xiàn)mary是自己服務器中的一個賬戶,此時就會將這封郵件投遞到mary的賬戶中,mary通過瀏覽器或者郵件客戶端便可以查收自己賬戶中的郵件了,這就是整個郵件服務器的工作流程。
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(1.2)平時我們在收發(fā)郵件的時候都會使用一些客戶端,比如Outlook郵箱、Foxmail郵箱、Thunderbird郵箱等,對于這些客戶端工具來說,我們將其稱之為MUA(郵件用戶代理)。我們在發(fā)郵件的時候,使用的協(xié)議是SMTP(簡單郵件傳輸協(xié)議),其中簡單郵件傳輸協(xié)議所使用的是TCP的25號端口;在收郵件的時候,我們所使用的協(xié)議是POP3(郵局協(xié)議版本3)或者IMAP(交互郵件訪問協(xié)議),對于POP3來說所使用的是TCP的110端口,對于IMAP來說所使用的是TCP的143端口。如果我們想要將一臺主機搭建為一臺郵件服務器,那么就需要安裝相對應的軟件,比如postfix、sendmail、Exchange?Server等,這些軟件我們稱之為MTA(郵件傳輸代理)。當126的用戶tom發(fā)送了一封給bob或者mary的郵件后,郵件首先會到達126郵件服務器,接著126郵件服務器會進行郵件投遞的操作,郵件投遞的這個過程,我們稱之為MDA(郵件投遞代理),在postfix中它是一個進程。在客戶端我們所使用的協(xié)議是POP3或者IMAP,它是由dovecot提供的,安裝之后用戶才可以正常的接收郵件,這個我們把它稱之為MRA(郵件接收代理)。126郵箱接收到tom發(fā)送的郵件后,發(fā)現(xiàn)需要將郵件轉發(fā)給mary,這個轉發(fā)的過程我們稱為relay(轉發(fā))。這時候就會引出一個概念openrelay,表示一個郵件服務器不作任何的限制,全球任何人都可以向我的服務器發(fā)送轉發(fā)郵件,甚至不用在我的郵件服務器上注冊,也可以直接讓我的服務器發(fā)送轉發(fā)郵件,此時我們的郵件服務器就是出于openrelay的狀態(tài)。在互聯(lián)網中會有一個訂閱RBL(實時黑名單),它會將互聯(lián)網中異常的郵件服務器添加到RBL的實時黑名單中,此時如果目標郵件服務器訂閱了RBL后,就不會再接收到我們的異常郵件服務器發(fā)送的郵件了。


(二)配置postfix郵件服務器
(2.1)首先我們在vms001主機上配置好DNS服務,在/etc/unbound/local.d目錄中創(chuàng)建一個aa.conf的配置文件,并且填寫好相應的DNS解析條目。接著在vms002主機上我們將DNS服務器設置為192.168.26.101后,我們可以查詢到example.com域的主機名為vms002.example.com,然后通過主機名查詢A記錄,便可以查詢到vms002主機的IP地址為192.168.26.102,查詢的結果是正確的。
# host -t mx example.com
# host -t A vms002.example.com
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(2.2)postfix服務在我們系統(tǒng)中默認是已經安裝好的,進入到/etc/postfix目錄下,可以查看main.cf文件。當然main.cf文件中的配置參數并不是包含全部的內容,如果我們想要查看所有的參數信息,可以使用postconf命令,其中postconf是列出所有參數的當前值,而postconf -d是列出所有參數的默認值。Postconf中一共有816個參數,main.cf文件中只放置了常用的參數。
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(2.3)在vms002主機的main.cf文件中主要包含的是常見的參數,具體的格式如下,同時我們在配置文件中進行參數定義的時候一定要頂格開始,否則會被系統(tǒng)默認為時上一行的延續(xù)。myhostname是一個很重要的參數,如果我們沒有設置具體的值,那么postconf中會有默認值存在,默認值一般是主機名。
格式:
Key1=value1,value11
Key2=value2
Key3=$key1,value3
此時key3=value1,value11,value3
# postconf myhostname
# postconf | grep ^myhost
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(2.4)在main.cf文件中mydomain的默認值會取myhostname第一個點之后的部分,如果我們通過postconf -e參數對myhostname進行修改,那么修改的結果會直接記錄到main.cf文件中,且此時使用postconf查詢mydomain時,會發(fā)現(xiàn)結果也隨之修改為myhostname第一個點之后的部分。如果是通過配置文件進行修改那么需要重啟服務才會生效,而通過命令行進行修改,則會立刻生效。
# postconf | grep ^mydom
# postconf -e myhostname=aa.bb.cc.dd.ee.com

【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.5)在main.cf文件中myorigin參數的主要作用是自動補齊收件人郵箱的后綴名稱信息,我們查詢到myorigin參數的默認值為$myhostname?,F(xiàn)在我們在vms002主機上使用root用戶對jerry用戶發(fā)送一封郵件,我們嘗試使用jerry或者是jerry@vms002.example.com作為收件人,此時我們發(fā)現(xiàn)使用兩種方式發(fā)送過來的郵件都可以正常的看到如下的郵件信息。所以如果遇到了不是標準郵件格式的收件人,比如jerry,那么此時postfix會自動補齊為jerry@$myorigin即jerry@vms002.example.com
# mail -u jerry
# echo "Hello I'm root" | mail -s "Hello jerry" jerry@vms002.example.com
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(2.6)在main.cf文件中的inet_interfaces表示的是當前服務所監(jiān)聽的端口,默認是監(jiān)聽在主機回環(huán)接口上的,此時我們應該設置為監(jiān)聽在所有的接口之上。最后還要記得將防火墻添加SMTP可以通過。
# systemctl restart postfix.service
# netstat -tunlp | grep :25
# firewall-cmd --add-service=smtp --permanent

【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.7)在main.cf文件中的inet_protocols表示監(jiān)聽的協(xié)議,可以自己選擇監(jiān)聽ipv4或者監(jiān)聽ipv6,默認是監(jiān)聽所有的all

(2.8)在main.cf文件中的mydestination表示的是當郵件服務器將需要發(fā)送的郵件進行投遞的時候判斷郵件的收信人是否是自己的注冊用戶的列表庫,例如root用戶使用jerry@vms002.example.com作為收件人名是可以正常的將郵件投遞到jerry用戶的郵箱的,但是使用jerry@example.com作為收件人名時默認是不能投遞到jerry用戶的郵箱的,如果我們希望接收到類似于jerry@example.com這樣常規(guī)格式的收件人名,就需要將$mydomain參數添加進來,因為mydomain表示的是myhostname第一個點之后的所有內容,所以開啟mydestination第二行的配置(圖2-20)。當在/etc/postfix/目錄下main.cf文件中mydestination參數后添加了$mydomain的選項并重啟服務后,此時便可以正常的識別jerry@example.com收件人信息,并正確的投遞郵件(圖2-22)。如果不添加$mydomain參數的話,此時vms002郵件服務器會不停的詢問DNS服務器發(fā)送郵件的主機地址是多少,而DNS服務器會回復是vms002主機自己,轉發(fā)給自己后發(fā)現(xiàn)郵件后綴并不是自己域名內地注冊用戶,這樣又會向DNS詢問,形成了一個死循環(huán),所以建議一般情況下是需要添加這個參數的。
# tailf /var/log/maillog---查看郵件發(fā)送的后臺日志
# echo "Hello I'm root" | mail -s 'Hello jerry' jerry@example.com

【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.9)在main.cf文件中的mynetworks表示的是允許使用openrelay的IP地址范圍,mynetworks值表示的是默認IP地址范圍,在此范圍內的主機才可以使用openrelay進行郵件轉發(fā)的操作(圖2-29),現(xiàn)在我們創(chuàng)建一個新的主機MailTest(192.168.26.103),然后配置好郵件測試主機的相關光盤鏡像掛載、YUM源等信息。此時vms002主機上并不存在xxyy用戶,但是我們可以在MailTest主機上使用xxyy賬號發(fā)送郵件,我們在MailTest主機上安裝好telnet軟件,并編輯發(fā)送的郵件信息(圖2-27),此時我們在vms002主機上便發(fā)現(xiàn)jerry用戶已經接收到了不存在的xxyy賬號發(fā)送過來的郵件了(圖2-28)。不過一般我們使用公司的郵箱收發(fā)郵件,如果我們回到家后在IP地址可能就不在mynetworks的范圍中了,此時如果不能進行郵件的轉發(fā)會非常的麻煩,所以mynetworks允許的范圍還是盡量要大一些,不過這個時候我們是可以使用SMTP的認證解決openrelay的問題的,使用了SMTP的認證,使得用戶必須要輸入用戶名和密碼信息。
# telnet 192.168.26.102 25
\>helo example.com
\>mail from:xxyy@example.com
\>rcpt to:jerry@example.com
\>data
\>haha,I'm xxyy
\>.---結束符
\>quit
# postconf | grep ^mynetworks---查詢mynetworks默認的網段范圍

【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.10)在main.cf文件中的relayhost表示的是指明我們的轉發(fā)主機是哪一臺,我們在vms002主機上配置relayhost轉發(fā)的主機地址是192.168.26.103。我們在MailTest主機上配置好郵件服務器的相關內容,首先設置MailTest主機的inet_interfaces可以監(jiān)聽所有的地址,接著將參數mydestination加上$mydomain變量,并創(chuàng)建一個用戶jerry,在MailTest主機上將服務重啟一下,同時還要將MailTest主機的防火墻開放一下。此時我們在vms002主機上將服務重啟完成后,雖然vms002主機并不能解析MailTest主機的域名,但是發(fā)送的郵件仍然可以正常的到達MailTest主機的jerry用戶的郵箱中年,主要是因為設置了relayhost的值(圖2-35),雖然vms002主機發(fā)現(xiàn)了jerry@server.example.com并不是自己域名內的注冊用戶,但是由于設置了轉發(fā)地址relayhost,所以vms002主機直接將郵件發(fā)送給了MailTest主機,而MailTest主機通過mydestination發(fā)現(xiàn)郵件是自己域名內的注冊用戶,所以直接將郵件投遞到了jerry用戶的郵箱中了。
# firewall-cmd --add-service=smtp --permanent

【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.11)此時如果vms002主機上的root用戶發(fā)送給jerry@example.com的郵件地址時,雖然MailTest主機的域名是example.com(圖2-37),但是vms002主機自己的域名也是example.com,雖然此時我們在vms002主機上已經配置了relayhost轉發(fā)的主機地址是192.168.26.103,但是最終發(fā)送的郵件會在本機的jerry用戶的郵箱進行接收(圖2-36)。這是由于對于vms002主機來說,雖然設置了relayhost,但是只有在發(fā)送的郵件不是vms002主機的注冊用戶的時候才會生效。
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.12)如果我們希望從vms002主機發(fā)出的郵件全部都轉發(fā)到MailTest主機上,那么此時我們應該將mydestination的值設置為空值即可,在vms002主機上將main.cf文件里的mydestination設置為空值后,將郵件服務重啟一下。我們發(fā)現(xiàn)在vms002主機上并沒有收到任何的郵件,但是MailTest主機上卻收到了發(fā)送給jerry@example.com地址的郵件了。這種郵件轉發(fā)的功能一般是在企業(yè)中郵件服務器數量非常多的時候使用的,例如公司有三臺郵件服務器,我們并不希望郵件服務器直接接入互聯(lián)網,此時我們可以配置一個郵件網關,此時郵件服務器發(fā)送的所有郵件都直接轉發(fā)給郵件網關,我們在郵件網關上可以做更多的安全策略,垃圾過濾策略等,以此來保護我們內部郵件服務器的安全性。例如在Exchange服務器中五大組件之一的邊緣傳輸服務器就是起到這個作用的。

【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.13)在main.cf文件中的alias_maps表示的是在/etc/aliases文件中配置別名信息,使得發(fā)送郵件的時候可以向同一類用戶發(fā)送郵件。我們在/etc/aliases文件中定義別名all代表的是root、jerry、marry三個用戶的一個集合,當給all發(fā)送郵件時jerry@vms002.example.com便會接收到郵件(圖2-42)。如果我們希望是以常規(guī)的格式jerry@example.com接收到郵件,則可以設置myorigin=$mydomain,此時向all發(fā)送郵件,我們便可以在本機的所有用戶郵箱中看到已經接收的郵件信息了(圖2-44)。當然如果all代表的用戶數量非常大時,我們可以使用/etc/userlist文件,然后將用戶列表寫入到userlist文件中。
# newaliases
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器

(2.14)在main.cf文件中的home_mailbox表示的是定義用戶的郵件存放的文件名,定義完成后一般這個文件會存在用戶的家目錄下,在默認情況下我們的郵件都是/var/spool/mail目錄下存放的(圖2-46)。我們設置home_mailbox的值為Mailbox,然后將郵件服務重啟一下,此時便會在所有用戶的家目錄下產生一個Mailbox文件用來接收郵件信息(圖2-48),如果我們將home_mailbox的參數修改為Maildir/后,則重啟郵件服務后,所有發(fā)送的郵件便會都存放在用戶的自己家目錄下的Maildir目錄中。
# systemctl restart postfix.service

【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器


(三)使用圖形客戶端收發(fā)郵件
(3.1)一般情況下,用戶在收發(fā)郵件的時候都是習慣使用圖形化界面操作的,在客戶端接收郵件的時候一般是使用POP3或者IMAP協(xié)議,分別監(jiān)聽的是110端口和143端口,客戶端如果需要連接到服務器接收郵件的話,則需要在vms002主機上安裝dovecot軟件。同時需要將pop3和imap服務的端口在防火墻打開。
# yum install dovecot -y
# grep imap /etc/services---查詢imap協(xié)議使用的端口
# grep pop3 /etc/services---查詢pop3協(xié)議使用的端口
# firewall-cmd --add-port=110/tcp --permanent
# firewall-cmd --add-port=143/tcp --permanent
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(3.2)接著我們還需要進入/etc/dovecot/目錄查看dovecot.conf配置文件,其中這里系統(tǒng)protocols的默認值就是這三個參數,其中l(wèi)mtp表示的是本地郵件傳輸協(xié)議。然后可以進入到/etc/dovecot/conf.d/目錄下,編輯10-auth.conf配置文件,是否禁用明文發(fā)送,這里我們應該設置為no;然后進入到/etc/dovecot/conf.d/目錄下,編輯10-mail.conf配置文件設置mail_location的值為maildir:~/Maildir,設置用戶接收到文件后自動將郵件接收到家目錄下的Maildir/目錄下,同時我們需要在vms002主機上的/etc/postfix/目錄下的main.cf文件中將home_mailbox的值設置為Maildir/(圖3-5-1);最后在/etc/dovecot/conf.d/目錄下,編輯10-ssl.conf配置文件,由于我們并不需要SSL驗證,所以設置ssl的值為no
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(3.3)接著我們找到一臺Win7系統(tǒng),并在Win7系統(tǒng)上安裝客戶端Foxmail的客戶端軟件,接著我們選擇手動設置連接到vms002主機的郵件服務器上,并將marry賬戶的郵箱創(chuàng)建出來。
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(3.4)接著我們繼續(xù)將jerry用戶的郵箱也創(chuàng)建在Win7的郵箱客戶端上,此時我們便可以嘗試在圖形界面的客戶端上使用jerry用戶向marry用戶發(fā)送郵件了。
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
【我的Linux,我做主!】動手搭建Postfix郵件服務器
(3.5)此時我們發(fā)現(xiàn)marry用戶在客戶端工具上也能夠正常的接收到jerry用戶發(fā)送過來的郵件了。
【我的Linux,我做主!】動手搭建Postfix郵件服務器

—————— 本文至此結束,感謝閱讀 ——————

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI