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:[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>

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: <[email protected]>   //退信地址

X-Original-To: [email protected]   //來源地址

Delivered-To: [email protected]    //目標地址

Received: from localhost (localhost.localdomain [127.0.0.1])

        by mail.zpp.com (Postfix) with SMTP id 27ECCE01ED  //經過的MTA

        for <[email protected]>; Thu, 28 Jan 2021 03:57:40 +0800 (CST)

subject:I Love You!

Message-Id: <[email protected]>

Date: Thu, 02 Tuesday 2010 03:57:40 +0800 (CST)   //時間

From: [email protected]   //發件人地址

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: <[email protected]>

X-Original-To: [email protected]

Delivered-To: [email protected]

Received: from localhost (localhost.localdomain [127.0.0.1])

        by mail.zpp.com (Postfix) with SMTP id 27ECCE01ED

        for <[email protected]>; Thu, 28 Jan 2021 03:57:40 +0800 (CST)

subject:I Love You!

Message-Id: <[email protected]>

Date: Thu, 28 Jan 2021 03:57:40 +0800 (CST)

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服務共同協作的應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章