CentOS 6下使用postfix搭建簡單郵件伺服器

介紹:
postfix是linux/unix下比較常用的開源免費郵件傳輸代理程式(MTA)。
下圖是postfix的logo,略顯猥瑣。。。

服務安裝:
通常情況下,CentOS預設都會安裝postfix。
如果你不確定你的系統中有沒有postfix可以使用如下命令檢視。

yum -qa | grep postfix

若沒有安裝則使用如下命令安裝。

yum install -y postfix

DNS配置:
郵件傳送是需要DNS解析支援的,DNS伺服器的配置方法參考此篇文章:

CentOS 6下使用BIND配置簡單DNS伺服器


最後要求DNS正向解析配置成類似如下形式,反向解析區域可不配置。“192.168.1.20”是我的郵件伺服器的IP地址,請按照實際情況來做更改。

主要配置檔案介紹:
postfix的配置檔案存放路徑為/etc/postfix,其中的主要的配置檔案有兩個,一個是main.cf另一個是master.cf。關於兩個配置檔案的說明,如下。

main.cf              //此配置檔案為postfix主配置檔案,決定了postfix的工作方式。
master.cf            //此配置檔案用以配置postfix中各個程式的工作引數,一般在做郵件系統最佳化時才會用到。

postfix配置:
在配置前,我們需要先關掉系統中sendmail(sendmail也是linux/unix下常用的郵件傳輸代理程式)的所有服務,避免二者產生衝突。
檢視是否安裝了sendmail。
rpm -qa | grep sendmail
如安裝了sendmail,則關閉sendmail服務,否則跳過這一步。

service sendmail stop
chkconfig sendmail off

編輯主配置檔案。

vim /etc/postfix/main.cf

查詢“myhostname”關鍵字,一般在第75行左右的位置,因軟體版本差異行號可能不同。

去掉其中一個前面的註釋,這裡是配置postfix伺服器的主機名,這個主機名必須是FQDN(完全合格域名,例如:mail.ibadboy.net)。

在第83行左右找到“mydomain”關鍵字。

去掉其前面的註釋,並將引數修改為郵件域。
什麼是郵件域?舉例說明:admin@ibadboy.net這個郵箱地址中@後面的ibadboy.net就是郵件域。

在第98行左右找到“myorigin”關鍵字,去掉第二個“myorigin”前方註釋。
這裡是用於定義由本臺郵件伺服器寄出的每封郵件的郵件頭中mail from(發信源主機)的地址。如果不設定,預設會以$myhostname也就是本地主機名這個選項的引數為值,最後是這種形式:“from  ‘user1’ <user1@mail.ibadboy.net>”,看起來是不是怪怪的?為了方便閱讀,一般以$mydomain作為其引數,這樣就變成了“:“from  ‘user1’ <user1@ibadboy.net>”。
需要特殊說明的是:main.cf配置檔案中所有以$開頭的字串都是一個變數,變數的值就是變數名對應的選項的引數,例如$mydomin這個變數對應的值就是83行mydomin這個選項的引數。

修改後:

轉到第113行,找“inet_interfaces”這個關鍵字,這裡是定義postfix監聽的介面,預設只監聽本地迴環介面(127.0.0.1),通常的做法是讓其監聽所有的介面(值為all),或者也可以使用主機名為值,要求其只監聽主機名對應IP的介面。

修改後:

轉到164行,找“mydestination”關鍵字,這裡定義postfix可收信的主機名或域名。這裡其實很好理解,一封郵件的目的地址是我這臺伺服器我就收下,否則我當然不收了。

預設的選項是不包括域名的,通常情況下需要接收主機名或域名為本機的郵件,也就是修改為選項二,如下圖。

至此,一個簡單的postfix郵件伺服器就配置好了,我們一共對配置檔案做了如下幾個更改:1、指定了主機名,2、指定了郵件域,3、指定了發信源主機,4、使postfix監聽所有網絡卡,5、設定了允許收信的主機名及域名。
儲存配置後,在保證selinux和防火牆均關閉的情況下啟動postfix服務。

service postfix start

服務測試:
推薦搭建完postfix後配合dovecot(MRA,郵件接收代理)一起在郵件客戶端進行測試。
dovecot配置教程參考此篇文章:

CentOS 6下郵件接收代理程式——dovecot配置教程


 

sendmail開啟基於sasl的smtp認證

sendmail預設是不會認證發信人身份的,這就導致你的郵件伺服器可能會被人隨意的傳送垃圾郵件。

而開啟smtp認證之後,只有認證身份的使用者才可以傳送郵件,這樣就很好的解決了上面的安全因患。

軟體包安裝:

開始設定前首先要確保你的CentOS上已經安裝瞭如下四個軟體包(sasl認證相關)。

cyrus-sasl-2.1.10-4.i386.rpm
cyrus-sasl-md5-2.1.10-4.i386.rpm
cyrus-sasl-plain-2.1.22-5.el5
cyrus-sasl-devel-2.1.22-5.el5

一般CentOS 6.5系統中都會內建前兩個包,我們執行安裝命令安裝餘下兩個包。

[root@localhost ~]# yum install *sasl-p*
[root@localhost ~]# yum install *sasl-d*

*sendmail配置部分:*

編輯/etc/mail/sendmail.mc檔案

[root@localhost ~]# vim /etc/mail/sendmail.mc

轉到第52行(因軟體版本號差異,行號可能不同)可以看到如下兩條語句,去掉這兩行前面的註釋dnl #(注:前往不要留有空格,否則報錯)。

修改後如圖:

TRUST_AUTH_MECH的作用是使sendmail不管access檔案中如何設定, 都能relay那些透過EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式驗證的郵件,注意這裡是對需要relay的郵件進行驗證,這點很重要,只有這樣透過驗證的郵件才會被 relay以防止sendmail伺服器被濫用。

confAUTH_MECHANISMS的作用是確定系統的認證方式。Outlook Express支援的認證方式是LOGIN。

儲存並退出。

生成對應的sendmail.cf檔案。

[root@localhost ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

重啟sendmail服務。

[root@localhost ~]# service sendmail restart

啟動saslauthd服務,用於支援sasl認證。

[root@localhost ~]# service saslauthd start

至此,配置工作完成,現在開始測試吧~