Linux系列-Red Hat5平臺下的Postfix郵件服務搭建(一)

構建Postfix電子郵件系統
上次我們說了Sendmail.今天來看一下PostfixMailPostfix最大的好處在於它採用了模塊化的設計,有多個不一樣的程序集合而成,分別用於實現不一樣的功能。還有就是能夠結合mysql數據庫使用虛擬郵件用戶。如今就來看看如何構建Postfix電子郵件系統。
前面概念我會稍微囉嗦一點,畢竟理解概念纔是最重要的。後面我就主要以配置爲主嘍,下面我們邊作邊說。
第一部分:編譯安裝Postfix
由於RHEL5系統中默認安裝了sendmail,因此在安裝Postfix前先將sendmail服務中止,以避免發生衝突。RHEL5也帶有Postfix軟件的RPM包,但功能太少了,它不支持MySQL數據庫,因此咱們採用Postfix的源碼包進行編譯安裝。首先從官方站點中下載程序文件包postfix- 2.4.6 .tar.gz ,地址以下:
而後下載相應版本的vda補丁包postfix-2.4.6-vda-ng.patch.gxvda補丁用於支持對虛擬郵件用戶設置郵箱空間配額,地址以下:
1.    建立運行postfix服務的用戶(postfix)、組(postfixpostdrop
 
說明:指定用戶postfixUID1000,所屬組爲postfix,附加組爲postdrop,且不建立宿主目錄,禁止直接登陸到本地系統。
2.    解壓並釋放源碼包、合併補丁包
 
3.    預配置編譯參數
咱們採用源碼編譯安裝的AMP平臺,並使用RHEL5系統自帶的eyrus-sasl認證軟件,所以根據mysqlcyrus-sasl的庫文件和頭文件安裝位置對編譯參數CCARGSAUXLIBS進行適當調整,配置命令及參數以下:
 
說明:在編譯前須要使用「make maekfiles」命令調整編譯參數,以便Postfix支持SASL認證和查詢MySQL數據庫。
其中,編譯參數CCARGSAUXLIBS的做用以下:
CCARGS參數:爲編譯器提供額外的參數。「-I」選項指出標準的額外頭文件的存放目錄。例如,mysqlcyrus-sasl的頭文件分別位於目錄:/usr/local/mysql/lib/mysql/usr/include/sasl.
AUXLIBS參數:指出位於標準位置以外的額外函數庫。若是須要連接SASLMySQL或任何附加的函數庫,並且他們不是存在標準位置(/usr/lib目錄),則必須在AUXLIBS參數中指出這些函數庫的路徑,例如,mysqlcyrus-sasl的庫文件分別位於目錄:/usr/local/mysql/lib/mysql/usr/lib/sasl2
4.編譯並進行安裝
 
執行「make install」命令之後,期間會須要設置一些安裝參數,例如
 
說明:別看它問了這麼多,一路回車就能夠了,咱按照默認的來,呵呵!
如今Postfix算是裝好了,我們不急着作。先來看一下Postfix的目錄、配置文件及啓動控制,所謂磨刀不誤砍柴工!
Postfix的目錄及配置文件:
1.    Postfix的相關目錄
/etc/postfix:該目錄中包括Postfix服務的主配置文件、各種腳本、查詢表等。
/usr/libexec/postfix/:該目錄中包括Postfix服務的各個服務器程序文件。
/var/spool/postfix/:該目錄中包括Postfix服務的郵件隊列相關的子目錄。
其中每一個隊列子目錄用於保存不一樣的郵件,好比說:
1>.Incoming(傳入):剛接收到的郵件。
2>.Active(活動):正在投遞的郵件。
3>.Deferred(推遲):之前投遞失敗的郵件。
4>.Hold(約束):被阻止發送的郵件。
5>.Corrupt(錯誤):不可讀或不可分析的郵件。
/usr/sbin/:該目錄中包括Postfix服務的管理工具程序,這些程序文件名以post開頭。其中,主要的幾個程序文件及其做用以下。
1>.Postalias:用於構造、修改和查詢別名表。
2>.Postalias:用於顯示和編輯main.cf配置文件。
3>.Postfix:用於啓動、中止postfix,要求有root用戶權限。
4>.Postmap:用於構造、修改或者查詢查詢表。
5>.Postqueue:用於管理郵件隊列,通常用戶使用。
6>.Postsuper:用於管理郵件隊列,要求有root用戶權限。
2.    Postfix的配置文件
Postfix系統最主要的配置文件包括:/etc/postfix/main.cf/etc/postfix/master.cf,前者是Postfix服務的配置文件,後者是master程序的配置文件。
使用postconf工具能夠查看當前Postfix服務所使用的配置參數
使用postconf工具還能夠簡化main.cf文件,只保留與默認配置不一樣的參數,以下:
[root@mail postfix]# postconf -n > main.cf
[root@mail postfix]# mv main.cf main.cf.bak   //備份
[root@mail postfix]# mv main2.cf main.cf
3.    Postfix的日誌文件
Postfix系統的日誌文件位於「/var/log/maillog,此文件記錄了Postfix服務器的運行狀態信息。咱們能夠常用帶「-f」選項的tail命令查看日誌。若是日誌太多了咱們可發使用egrep命令進行過濾。
4.    postfix的啓動控制
Postfix系統的啓動控制主要經過「/usr/sbin/postfix」命令進行,後面添加相應的startstopcheckreload參數便可分別啓動、中止、檢查、重載postfix服務。用法很簡單我這就不作演示了哈!
第二部分:配置Postfix服務器
好了!如今該說的基本都說到了,咱們開始作吧!首先我把環境簡單描述一下:
1>.郵件服務器IP地址:192.168.1.1 主機名:mail.zpp.com
2>.郵件域:@zpp.commail.zpp.com
3>.AMP平臺:使用已編譯安裝好的ApacheMySQLPHP,對應的安裝目錄分別是:
4>./usr/local/apache2/usr/local/mysql/usr/local/php5
5>. 使用已安裝好的DNS,的配置步驟我這就很少說了,上次搭建sendmail時有說到DNS,以及這個系列也專門寫過一篇DNS方面的
下面是具體的步驟:
1.    編輯main.cf文件,調整Postfix的基本運行參數
[root@mail ~]# cat /etc/postfix/main.cf
… …(此處我省略原來的內容)
inet_interfaces = 192.168.1.1,127.0.0.1   //設置監聽的IP
myhostname = mail.zpp.com    //設置主機名
mydomain = zpp.com        //設置郵件域
myorigin = $mydomain     //設置外發郵件時發件人地址中的郵件域名
mydestination = $mydomain,$myhostname  //設置可接收的郵件地址中的域名
home_mailbox =Maildir/     //設置郵件存儲位置和格式
2.    添加郵件用戶的賬號
[root@mail ~]# groupadd zoupanpan
[root@mail ~]# useradd -g zoupanpan -s /sbin/nologin zpp001
[root@mail ~]# useradd -g zoupanpan -s /sbin/nologin zpp002
[root@mail ~]# passwd zpp001
Changing password for user zpp001.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@mail ~]# passwd zpp002
Changing password for user zpp002.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
3.    測試SMTP發送郵件
[root@mail ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.zpp.com ESMTP Postfix
helo localhost   //宣告客戶端地址
250 mail.zpp.com
mail from:zpp001@zpp.com   //告知服務器發件人地址
250 2.1.0 Ok
rcpt to:zpp002@zpp.com     //告知服務器收件人地址
250 2.1.5 Ok
Data    //告知服務器要傳送數據了
354 End data with <CR><LF>.<CR><LF>
subject:I Love You!    //主題
hello!
You are my super star! he he he !    //郵件內容以點結束
.
250 2.0.0 Ok: queued as 27ECCE01ED
Quit     //退出
221 2.0.0 Bye
Connection closed by foreign host.
如今咱們到郵件用戶zpp002的宿主目錄下進行查看,能夠看到剛剛接收到的郵件保存在Maildir子目錄中。
[root@mail ~]# cat /home/zpp002/Maildir/new/1611777596.Vfd00I258020M248704.mail.zpp.com
Return-Path: <zpp001@zpp.com>   //退信地址
X-Original-To: zpp002@zpp.com   //來源地址
Delivered-To: zpp002@zpp.com    //目標地址
Received: from localhost (localhost.localdomain [127.0.0.1])
        by mail.zpp.com (Postfix) with SMTP id 27ECCE01ED  //通過的MTA
        for <zpp002@zpp.com>; Thu, 28 Jan 2021 03:57:40 +0800 (CST)
subject:I Love You!
Message-Id: <20100127195752.27ECCE01ED@mail.zpp.com>
Date: Thu, 02 Tuesday 2010 03:57:40 +0800 (CST)   //時間
From: zpp001@zpp.com   //發件人地址
To: undisclosed-recipients:;
hello!
You are my super star! he he he !
如今Postfix服務器已經搭建好了,下面咱們來看一下dovecot服務器是如何搭建的。
第二部分:構建Dovecot服務器
1.    編譯安裝Dovecot軟件包
Dovecot其實Red Hat5自帶的有,但我這仍是源碼編譯安裝一個吧。從下面這個連接能夠下載到我接下來要用到的源碼包:
安裝的步驟很簡單以下:
[root@mail ~]# useradd -M -s /sbin/nologin dovecot
[root@mail ~]# tar zxf dovecot-1.1.4.tar.gz
[root@mail ~]# cd dovecot-1.1.4
[root@mail dovecot-1.1.4]# ./configure --sysconfdir=/etc --with-mysql
[root@mail dovecot-1.1.4]# make ; make install
說明:若是dovecot用戶沒法建立,說明系統中默認就有了直接用就能夠了
2.    配置Dovecot的運行參數
1>.創建dovecot.conf配置文件並進行簡單設置
[root@mail dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf
[root@mail dovecot-1.1.4]# cat /etc/dovecot.conf
(此處省略)
ssl_disable = yes  //禁用SSL機制
protocols = pop3 imap   //制定支持的郵局協議
disable_plaintext_auth = no   //容許明文密碼認證
mail_location = maildir:~/Maildir   //設置郵件存儲格式及位置
(此處省略)
2>.建立PAM認證文件
[root@mail ~]# cat /etc/pam.d/dovecot
#%PAM-1.0
auth       required     pam_nologin.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
說明:說的是建立,其實系統裏默認就有了。
3.    啓動Dovecot服務,並查看其監聽的TCP端口(110143
[root@mail ~]# /usr/local/sbin/dovecot -c /etc/dovecot.conf
[root@mail ~]# netstat -nutpl | grep dovecot
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      23251/dovecot
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      23251/dovecot
說明:dorecot服務的啓動程序位於「/usr/local/sbin」目錄中,使用-c選項能夠指定所使用的配置文件的位置,若是使用默認配置文件,則直接執行「dovecot」命令便可。
4.    測試POP3接收郵件
[root@mail ~]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
user zpp002  //使用郵件用戶「zpp002」登陸
+OK
pass 123.com  //鍵入密碼123.com
+OK Logged in.
List    //查看郵件列表
+OK 1 messages:
1 485
.
retr 1   //收取並查看第一封郵件內容
+OK 485 octets
Return-Path: <zpp001@zpp.com>
X-Original-To: zpp002@zpp.com
Delivered-To: zpp002@zpp.com
Received: from localhost (localhost.localdomain [127.0.0.1])
        by mail.zpp.com (Postfix) with SMTP id 27ECCE01ED
        for <zpp002@zpp.com>; Thu, 28 Jan 2021 03:57:40 +0800 (CST)
subject:I Love You!
Message-Id: <20210127195752.27ECCE01ED@mail.zpp.com>
Date: Thu, 28 Jan 2021 03:57:40 +0800 (CST)
From: zpp001@zpp.com
To: undisclosed-recipients:;
hello!
You are my super star! he he he !
.
quit
+OK Logging out.
Connection closed by foreign host.
好了,我們如今在客戶端上測試一下吧!MUA就使用windows自帶的OE。下面是測試的步驟:
1>.配置客戶機的DNS
2>.啓動windows自帶的OE
3>.設置用戶使用的郵件賬號
雖然上次sendmail中已經說過這個問題但如今仍是再說一下。設置完賬號後別望了鉤選「個人服務器要求身份驗證」,如圖:
 
4>.驗證郵件服務器的發信、收信功能
下圖是我截取的一幅zpp001用戶的發件箱,能夠看到郵件是可發成功發送的。
 
下圖是用戶zpp002的收件箱,咱們能夠看到郵件成功的發送了過來。
 
    咱們已經看到了Postfix郵件的基本應用,由此能夠解決企事業內部的郵件收發,若是要使用戶能和Internet上的用戶通郵,DNS中的反向記錄及MX記錄是少不了的。OK!因爲篇幅有限,本次就說到這裏吧!下次你們會看到當下較爲流行的SquirrelMailPostfixDovecot服務共同協做的應用。
相關文章
相關標籤/搜索