第十八章 郵件伺服器架設 學習目標 介紹電子郵件伺服器 了解電子郵件傳送運作 了解SMTP與POP3協定 了解IMAP協定 第十八章 郵件伺服器架設 學習目標 介紹電子郵件伺服器 了解電子郵件傳送運作 了解SMTP與POP3協定 了解IMAP協定 架設postfix郵件伺服器 學習傳遞郵件伺服器設定 學習接收郵件設定
章節大綱 18-1 郵件伺服器概念 18-4 postfix的基礎設定 18-2 架設前的準備 18-5 SMTP帳號密碼認證 18-6 IMAP與POP3收信 備註:可依進度點選小節
郵件伺服器架設 CentOS預設使用postfix 為電子郵件伺服器 還需要DNS 網域的配合才能完成 電子郵件的傳送與接收包括了傳送者與接收者 軟體與伺服器參與整個流程 postfix 是新一代郵件伺服器 容易設定與極佳穩定性
18-1 郵件伺服器概念 架構 jack@dom.twbbs.org,代表使用者 jack 在 dom.twbbs.org主機上擁有電子郵件帳號 當jack 寄送一封電子郵件給收件人tom@snpy.org jack 會「委託」dom.twbbs.org 這台主機代表轉送
18-1 郵件伺服器概念 電子郵件的組成要素 送件者與收件者使用的軟體稱為「使用者代理軟體(Mail User Agent,MUA) 傳送與接收的伺服器稱為「郵件傳遞代理軟體(Mail Transfer Agent,MTA) 送件者與傳送伺服器的通訊協定使用SMTP,MTA 與MTA 之間亦是使用SMTP 收件者到主機去收信則採用POP3 或IMAP 等協定
18-1 郵件伺服器概念 電子郵件的組成要素
18-1 郵件伺服器概念 傳送電子郵件的作業流程 寄件人請主機傳送一封電子郵件時,主機會向DNS 伺服器查詢該封郵件上的收件人(tom@snpy.org)位址中主機(snpy.org) 的MX 記錄
18-1 郵件伺服器概念 接收電子郵件的作業流程 當有電子郵件寄達時,MTA 之間會利用SMTP 協定溝通,對方會詢問您有沒有tom 這個電子郵件帳號?若是有的話,主機會將傳送來的信件收到專門存方信件的資料夾
18-2 架設前的準備 實務運作 確認擁有該網域(dom.twbbs.org) 的所有權
18-2 架設前的準備(續) 確認該網域的MX 郵件主機設定
18-2 架設前的準備 虛擬環境 很難真的花錢註冊一個實際運作的網域名稱來做為練習的標的 可利用如twbbs.org 這類免費網域註冊的服務,註冊一個免費主網域來練習 仍需要讓架設的主機擁有一個真實對外的IP 位址 利用修改Linux 主機的DNS 主機設定檔/etc/resolv.conf,將Linux 主機的DNS 設定為本機
18-2 架設前的準備 虛擬環境 虛擬環境的設定 文字編輯器vi 或nano 修改DNS 設定檔/etc/resolv.conf,在第一行加入nameserver 192.168.1.13 在此主機內有需要查詢任何DNS 時,將會先查詢本主機的DNS 伺服器
18-2 架設前的準備 虛擬環境 管理網域dom.snpy.org 本機的DNS 主機中加入dom.snpy.org網域 其記錄檔/var/named/named.dom 中再加入一行郵件主機的資源記錄「@ IN MX 10 @」
18-2 架設前的準備 虛擬環境 啟動named 服務並測試 systemctl restart named dig 測試mx 記錄
18-3 架設安裝postfix 電子郵件運作觀念 套件安裝 修改設定檔 服務啟動與停止 驗證伺服器運作正常與否
18-3 架設安裝postfix 安裝必要條件 安裝相關套件指令 postfix dovecot 負責POP3、IMAP 提供使用者取信的通訊協定伺服器。 安裝相關套件指令
18-3 架設安裝postfix 套件的目錄與檔案 /etc/postfix/ 目錄 /var/log/maillog 檔案 伺服器的主要設定檔都放置在這個目錄下。 /var/log/maillog 檔案 電子郵件伺服器的日誌(記錄檔) /var/spool/postfix/ 目錄 當伺服器為使用者收取電子郵件後,在使用者還未連線上來讀取信件之前,將信件放置在此目錄下。 /etc/postfix/main.cf 伺服器的主設定檔 /etc/postfix/access 轉寄權限設定檔,有外來的 IP 連線至伺服器時,以此檔案內的資料判定是否要為該 IP 位址轉寄電子郵件
18-3 架設安裝postfix 設定防火牆與啟動服務 設定防火牆 啟動postfix服務 設定系統開機時啟動postfix服務 firewall-cmd --permanent --add-service=smtp firewall-cmd --permanent --add-port=110/tcp firewall-cmd --permanent --add-port=143/tcp firewall-cmd --reload 啟動postfix服務 systemctl start postfix 設定系統開機時啟動postfix服務 systemctl enable postfix
18-4 postfix的基礎設定 設定postfix 預設只允許提供本機內部送信 未開放所有外部連線 Postfix 伺服器的主要設定檔為/etc/postfix/main.cf main.cf 設定檔內是以變數的方式設定postfix 的功能
18-4 postfix的基礎設定 得到預設的設定值 「postconf -d」指令
18-4 postfix的基礎設定 設定方式 可用vi 這類文字編輯器修改/etc/postfix/main.cf 設定檔 postconf 指令加上-e 選項亦可修改設定檔中的設定值
18-4 postfix的基礎設定 常用設定值 myhostname mydomain myorigin inet_interfaces 郵件伺服器的主機名稱,應該設定為此Linux 的HOSTNAME,如centos.mycom.tw 或mail.example.com mydomain 郵件伺服器負責的網域名稱,如dom.snpy.org myorigin 由postfix 寄出的郵件中,其寄信人的欄位要顯示的網域名稱 inet_interfaces 若主機具有多個網路卡介面時,此值可設定欲接收主機裏那些網路介面傳來的郵件
18-4 postfix的基礎設定 常用設定值(續) mydestination mynetworks relay_domains 定義這台郵件伺服器自家人的網域 mynetworks 定義有那些主機或網段可以為其轉寄郵件 relay_domains 設定有那些網域是我這台郵件伺服器所信任,而且願意為其轉寄信件
18-4 postfix的基礎設定 加入網路介面「eth0」 開始設定 讓postfix 能接收從所有網路卡端的連線 postconf 修改inet_interfaces 的值為all 開始設定 postconf -e myhostname=dom.snpy.org postconf -e mydomain=dom.snpy.org systemctl restart postfix
18-4 postfix的基礎設定 轉寄郵件權限 原設定值(包括了192.168.1.0/24) [root@centos ~]# postconf mynetworks mynetworks = 127.0.0.0/8 192.168.1.0/24 [::1]/128 [fe80::%eth0]/64
18-4 postfix的基礎設定 寄送測試郵件 自我介紹 送件人 收件人 輸入EHLO localhost 輸入MAIL FROM: root@dom.snpy.org 收件人 輸入RCPT TO: jack@dom.snpy.org
18-4 postfix的基礎設定 寄送測試郵件(續) 信件內容(輸入DATA) 離開 輸入QUIT 221 2.0.0 dom.snpy.org closing connection Connection closed by foreign host.
18-4 postfix的基礎設定 切換使用者讀取測試信 使用su 指令切換為使用者jack 收信 使用mutt
18-5 SMTP帳號密碼認證 使用SMTP 認證方式,使用者連上postfix 時,提供帳號與密碼給伺服器進行驗證 postfix伺服器本身並未提供SMTP 認證功能 Cyrus-SASL 是一套專門的認證函式庫,可以提供postfix做為認證時呼叫 rpm 指令確認其是否已安裝完成
18-5 SMTP帳號密碼認證 啟動「saslauthd」服務 每次開機時自動啟動 systemctl restart saslauthd systemctl enable saslauthd
文字編輯器修改postfix的設定檔/etc/postfix/main.cf,加入 smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination 或使用postconf指令 重啟postfix systemctl restart postfix
18-5 SMTP帳號密碼認證 測試 telnet 連線至主機的25 埠號 「EHLO localhost」指令
18-5 SMTP帳號密碼認證 客戶端MUA 的設定 Outlook的設定
18-6 IMAP 與POP3 收信 CentOS 的IMAP 與POP3 協定是由「dovecot」這個伺服器所負責 yum 指令安裝 yum -y install dovecot Dovecot 伺服器的設定檔為/etc/dovecot/dovecot.conf 啟動 dovecot 伺服器 systemctl restart dovecot 設定其開機自動啟動 systemctl enable dovecot
18-6 IMAP 與POP3 收信 請在/etc/dovecot/dovecot.conf 設定檔的最尾端再加入一「mail_location」設定值 重啟dovecot 伺服器 systemctl restart dovecot 加入最後一行
18-6 IMAP 與POP3 收信(續) 將 /var/mail/ 下的所有檔案權限設為 600 chmod 600 /var/mail/*
測試 POP3 協定 以 telnet 指令連線至本機埠號 110,輸入 user 指令指定帳號 jack 與 pass 指令 IMAP 協定 以 telnet 指令連線至本機埠號 143,並輸入「a login jack abc123」指定帳號與密碼
18-7 RoundCube Web Mail 網頁上收、寄信(Web Mail) CentOS並未附帶內建的 Web Mail 套件 RoundCube、RainLoop 與 SquirrelMail 等 安裝 RoundCube 美觀的介面 功能豐富 中文介面
18-7 RoundCube Web Mail(續) 使用 PHP 與 AJAX 技術開發的一套 Web Mail 系統 安裝 PHP 相關套件 安裝、設定 MariaDB 資料庫 下載 RoundCube 設定 dovecot 收信伺服器 進行安裝步驟
18-7-1 安裝 PHP 相關套件 yum -y install php-mbstring php-intl php-mysql php-xml php-mcrypt yum -y install php-mcrypt
18-7-2 安裝、設定 MariaDB 資料庫 CentOS 7 開始使用 MariaDB 替代原本的 MySQL 使用 yum 指令安裝 mariadb 與 mariadb-server yum -y install mariadb mariadb-server 啟動 mariadb 服務並設定開機自動啟動 systemctl start mariadb systemctl enable mariadb
設定 MariaDB 資料庫 系統管理者設定密碼 使用 mysql 指令登入 mariaDB mysqladmin -u root password 'abc881' 使用 mysql 指令登入 mariaDB
設定 MariaDB 資料庫(續) 建立資料庫 建立帳號
18-7-3 下載 RoundCube 網址為:http://roundcube.net 解壓縮並安裝 更換為較短的名稱 tar xvfz roundcubemail-1.0.2.tar.gz 更換為較短的名稱 mv roundcubemail-1.0.2 rcube 檔案擁有者設定為 apache 使用者 chown apache.apache rcube -R 設定 SELinux setsebool -P httpd_unified 1 重啟 httpd 服務 systemctl restart httpd
測試 瀏覽器開啟網址 http://192.168.1.13/rcube/installer/
設定 RoundCube 一般設定
設定 RoundCube(續) 資料庫設定
設定 RoundCube(續) 產生 RoundCube 設定檔 下載正確格式的 mime.types 設定檔會自動產生在 /var/www/html/rcube/config/config.inc.php 下載正確格式的 mime.types
設定 RoundCube(續) 使用 vi 或 nano 文字編輯器開啟 config/defaults.inc.php 檔
設定 RoundCube(續)
設定 RoundCube(續) 測試
設定 RoundCube(續) 刪除安裝目錄 設定 dovecot rm -rf /var/www/html/rcube/installer/ 設定 dovecot auth_username_format = %n systemctl restart dovecot
使用 RoundCube http://192.168.1.13/rcube
使用 RoundCube(續) 登入成功後,即進入 RoundCube 的使用介面
本章結束 Q&A討論時間