postfix&dovecot搭建郵件伺服器

来源:https://www.cnblogs.com/JKding233/archive/2020/05/30/12994948.html
-Advertisement-
Play Games

郵件伺服器搭建 前言 本篇參考 https://blog.51cto.com/5001660/2377785 一個電子郵件系統應具有的三個主要組成構件,這就是用戶代理、郵件伺服器 ,以及郵件發送協議(如SMTP)和郵件讀取協議(如POP3)。POP3是郵局協議 (Post Office Protoc ...


郵件伺服器搭建

前言

本篇參考

https://blog.51cto.com/5001660/2377785


一個電子郵件系統應具有的三個主要組成構件,這就是用戶代理郵件伺服器 ,以及郵件發送協議(如SMTP)和郵件讀取協議(如POP3)。POP3是郵局協議 (Post Office Protocol)版本3

tQUvy4.jpg

用戶代理 UA(User Agent)就是用戶與電子郵件系統的介面,在大多數情況下它就是運行在用戶電腦中的一個程式。因此用戶代理又稱為電子郵件客戶端軟體 。用戶代理向用戶提供一個很友好的介面(目前主要是視窗界面)來發送和接收郵件。現在可供大家選擇的用戶代理有很多種。例如,微軟公司的Outlook Express和我國張小龍製作的Foxmail,都是很受歡迎的電子郵件用戶代理。

郵件傳輸過程

➊發件人調用電腦中的用戶代理撰寫和編輯要發送的郵件。

➋ 發件人點擊屏幕上的“發送郵件”按鈕,把發送郵件的工作全都交給用戶代理來完成。用戶代理把郵件用SMTP協議發給發送方郵件伺服器,用戶代理充當SMTP客戶,而發送方郵件伺服器充當SMTP伺服器。用戶代理所進行的這些工作,用戶是看不到的。有的用戶代理可以讓用戶在屏幕上看見郵件發送的進度顯示。用戶所使用的郵件伺服器究竟在什麼地方,用戶並不知道,也不必要知道。實際上,用戶在把寫好的信件交付給用戶代理後,就什麼都不用管了。

➌ SMTP伺服器收到用戶代理髮來的郵件後,就把郵件臨時存放在郵件緩存隊列中,等待發送到接收方的郵件伺服器(等待時間的長短取決於郵件伺服器的處理能力和隊列中待發送的信件的數量。但這種等待時間一般都遠遠大於分組在路由器中等待轉發的排隊時間)。

➍ 發送方郵件伺服器的SMTP客戶與接收方郵件伺服器的SMTP伺服器建立TCP連接,然後就把郵件緩存隊列中的郵件依次發送出去。郵件不會在互聯網中的某個中間郵件伺服器落地 。如果SMTP客戶還有一些郵件要發送到同一個郵件伺服器,那麼可以在原來已建立的TCP連接上重覆發送。如果SMTP客戶無法和SMTP伺服器建立TCP連接(例如,接收方伺服器過負荷或出了故障),那麼要發送的郵件就會繼續保存在發送方的郵件伺服器中,併在稍後一段時間再進行新的嘗試。如果SMTP客戶超過了規定的時間還不能把郵件發送出去,那麼發送郵件伺服器就把這種情況通知用戶代理。

➎ 運行在接收方郵件伺服器中的SMTP伺服器進程收到郵件後,把郵件放入收件人的用戶郵箱中,等待收件人進行讀取。

➏ 收件人在打算收信時,就運行電腦中的用戶代理,使用POP3(或IMAP)協議讀取發送給自己的郵件。

以上摘錄於《電腦網路》

郵件伺服器的搭建

centos7下使用postfix+dovecot搭建郵件伺服器(防火牆關閉,SELinux關閉下)


DNS伺服器搭建

yum install bind bind-utils

查看是否安裝成功

[root@localhost ~]# rpm -qa|grep bind

tQULWT.png

編輯主配置文件

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

tQUjlF.png

tQU7oq.png

新建區域配置文件,新建的文件名要與include包含的文件名一至,且許可權一至

tQUbF0.png

編輯配置文件

tQUqYV.png

配置正向查找區域,配置文件/var/named/named.mail.com,複製後的許可權必須一至

tQaSm9.png

tQapwR.png

配置反向查詢文件

tQaiY6.png

開啟服務

tQaFfK.png

如果報錯請檢查配置文件及許可權

測試DNS

設置功能變數名稱解析伺服器為自己

tQaASO.png

tQaElD.png

搭建郵件伺服器

配置伺服器主機名稱,需要保證伺服器主機名稱與發信功能變數名稱保持一致

tQaV6e.png

重啟生效,記得重啟功能變數名稱服務及關閉防火牆

postfix

介紹:postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟體

安裝

yum install postfix

配置配置文件

vim /etc/postfix/main.cf

第83行,修改保存郵件的功能變數名稱稱

tQaZOH.png

第99行,修改寄出郵件的功能變數名稱稱

tQammd.png

第116、119行,修改定義的網卡監聽地址

tQan0A.png

第164行,修改定義的可接收郵件的主機名或功能變數名稱列表

tQauTI.png

新建兩個用戶用於測試

tQaMkt.png

dovecot

介紹:dovecot是一款能夠為Linux系統提供IMAP和POP3電子郵件服務的開源軟體程式

yum install dovecot

編輯配置文件

vim /etc/dovecot/dovecot.conf

設置dovecot服務程式支持的電子郵件協議

允許用戶使用明文進行密碼驗證

tQaQtP.png

設置允許登錄的網段地址

tQa3p8.png

配置郵件格式和儲存路徑

vim /etc/dovecot/conf.d/10-mail.conf

tQa81S.png

開啟服務

[root@mail ~]# systemctl start postfix
[root@mail ~]# systemctl start dovecot

可以看到郵件的存放位置,這是未發郵件前

tQaG6g.png

發件測試

tQaJXQ.png

[root@mail mail]# telnet mail.com 25
Trying 127.0.0.1...
Connected to mail.com.
Escape character is '^]'.
220 mail.com ESMTP Postfix
helo mail.com             聲名本機
250 mail.com
mail from:[email protected]  聲明發件人
250 2.1.0 Ok
rcpt to:[email protected]     聲明收件人
250 2.1.5 Ok
data                       寫正文
354 End data with <CR><LF>.<CR><LF>
user1
.                           正文結束標記
250 2.0.0 Ok: queued as 12A27206C86E
quit                        退出
221 2.0.0 Bye
Connection closed by foreign host.

發件後,可以看到user2已經收到郵件

tQatmj.png

看一下內容

tQaN0s.png

也可以登錄查看郵件

tQaU7n.png

[root@mail mail]# telnet mail.com 110
Trying 127.0.0.1...
Connected to mail.com.
Escape character is '^]'.
+OK Dovecot ready.
user user2             用戶
+OK
pass 54321             密碼
+OK Logged in.
list                   列表查看郵件
+OK 1 messages:
1 380
.
retr 1                  讀取編號為1的郵件

遇到的問題

1、賬號密碼正確因許可權問題被拒絕

報錯

-ERR [SYS/PERM] Permission denied
Connection closed by foreign host.

tQadkq.png

解決

[root@mail mail]# chmod 0600 /var/spool/mail/*

埠介紹

SMTP 簡單郵件傳輸協議 TCP 25埠 ,加密時使用TCP 456埠
POP3 第三版郵局協議  TCP  110埠 ,加密時使用955埠
IMAP4 第四版互聯網消息訪問協議 TCP 143埠 , 加密時使用993埠

防火牆開啟情況下允許埠通過

firewall-cmd  -add-port 25/tcp --permanent
firewall-cmd  -add-port 465/tcp --permanent
firewall-cmd  -add-port 110/tcp --permanen
firewall-cmd  -add-port 995/tcp --permanent
firewall-cmd  -add-port 143/tcp --permanent
firewall-cmd  -add-port 993/tcp --permanent
firewall-cmd  --reload 重啟防火牆 

SMTP相關命令

helo
客戶端為標識自己的身份而發送的命令(通常帶功能變數名稱)
mail from
標識郵件的發件人;以 mail from: 的形式使用
rcpt to 
標識郵件的收件人;以 rcpt to: 的形式使用
data
客戶端發送的,用於啟動郵件內容傳輸的命令
turn
允許客戶端和伺服器交換角色,併在相反的方向發送郵件,而不必建立新的連接

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我寫了一個Winform測試程式,用的System.Timers.Timer,在事件里,設置label1.Text,然後,居然句柄泄漏、用戶對象泄漏! 百思不得其解,最後換成System.Windows.Forms.Timer,居然不泄漏了! 最近睡眠不足,哪怕一個很小的問題,隨便搞搞,都半夜了! ...
  • 0. 前言 這是一個新的系列,名字是《ASP.NET Core 入門到實戰》。這個系列主講ASP.NET Core MVC,輔助一些前端的基礎知識(能用來實現我們需要的即可,並非主講)。同時這個系列也會在後續介紹ASP.NET Core 平臺的其它類型的項目,並帶領大家以各個類型的項目為主要架構開發 ...
  • 0. 前言 前幾天FreeSql的作者向我推薦了FreeSql框架,想讓我幫忙寫個文章介紹一下。嗯,想不到我也能帶個貨了。哈哈,開個玩笑~看了下覺得設計的挺有意思的,所以就謝了這篇文章。 簡單介紹一下,FreeSql 是NCC組織的沙盒級項目,是一款功能強大的 ORM 組件,支持 .NET Core ...
  • 首先創建實體類 1 public class MacState 2 { 3 /// <summary> 4 /// 請求狀態 5 /// </summary> 6 public string success { get; set; } 7 /// <summary> 8 /// 錯誤信息 9 /// ...
  • 上一篇(https://www.cnblogs.com/meowv/p/12966092.html)文章使用AutoMapper來處理對象與對象之間的映射關係,本篇主要圍繞定時任務和數據抓取相關的知識點並結合實際應用,在定時任務中迴圈處理爬蟲任務抓取數據。 開始之前可以刪掉之前測試用的幾個Hello ...
  • 一:背景 1. 講故事 如果你常翻看FCL的源碼,你會發現這裡面有不少方法藉助了C/C++的力量讓C#更快更強悍,如下所示: [DllImport("QCall", CharSet = CharSet.Unicode)] [SecurityCritical] [SuppressUnmanagedCo ...
  • tmux簡單使用Tmux ("Terminal Multiplexer"的簡稱), 是一款優秀的終端復用軟體,類似 GNU screen,但比screen更出色。tmux來自於OpenBSD,採用BSD授權。使用它最直觀的好處就是, 通過一個終端登錄遠程主機並運行tmux後,在其中可以開啟多個控制台 ...
  • 在常用感測器中,模數轉換器是其中至關重要的環節,模數轉換器的精度以及系統的成本直接影響到系統的實用性。因此。如何提高模數轉換器的精度和降低系統的成本是衡量系統是否具有實際應用價值的標準。 圖 1 ADC工作流程 一、ADC簡單介紹 ADC可分為SAR型、積分型、Σ-Δ型、摺疊型等方式。SAR ADC ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...