1. 程式人生 > >Ubuntu 16.04 佈置postfix、dovecot郵件伺服器

Ubuntu 16.04 佈置postfix、dovecot郵件伺服器

一、引言

        postfixWietse VenemaIBMGPL協議之下開發的MTA(郵件傳輸代理)軟體,也就是我們常說的SMTP服務端。postfix是Wietse Venema想要為使用最廣泛的sendmail提供替代品的一個嘗試。它更快、更容易管理、更安全,同時還與sendmail保持足夠的相容性。Dovecot是一個開源的 IMAP POP3 郵件伺服器,它支援多種認證方式,配置起來比較簡單。使用postfix+dovecot的組合是一種很經典的郵件收發服務端解決方案。

         現代的郵件收發系統在收發郵件時一般都要求先進行驗證,所謂驗證就是核對使用者名稱和密碼是否正確,如下圖所示的紅色方框部分,就是要求我們在收發郵件時先要進行驗證:


        postfix支援兩種驗證方式,一種是採用Dovecot的驗證方式dovecot-sasl,另一種是利用cryus-sasl驗證的方式,接下來我將分兩篇文章分別介紹postfix設定這兩種方式的方法。

二、安裝和配置postfix

2.1 安裝

        在終端中輸入下面的命令,以安裝postfix,

sudo apt-get install postfix

        在安裝過程中會有介面彈出來,當顯示如下所示的介面時,我們要選擇Internet Site方式,然後一路確定即可。


2.2 配置

        開啟/etc/postfix/main.cf檔案,按照如下進行配置,其中大部分配置只是採用了postfix安裝時的預設配置,對於一些特殊配置請參照下面的註釋,其中需要配置伺服器域名,假設當前的域名為example.cn:

myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
 
#下面這段配置中要將自己的域名加入到裡面,如下加入了example.cn
mydestination = $myhostname, example.cn,localhost, localhost.localdomain, localhost
relayhost =
#加入公網的網路地址,如我的伺服器公網地址是119.xxx.xxx.xxx,就在下面加入了
119.0.0.0/8這個網路地址
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104[::1]/128,119.0.0.0/8
#郵箱最大的容量,單位是位元組
mailbox_size_limit = 2000000000
recipient_delimiter = +
#監聽的埠設定,如果要連網際網路這裡一定設定成all
inet_interfaces = all
#支援的協議型別,設定成all
inet_protocols = all
#設定的郵箱目錄名稱,postfix採用dovecot-auth認證的話,預設系統中的使用者就是郵箱的使用者,當設定成如下的郵箱目錄時,會在每個使用者的主目錄下建立一個Maildir目錄用來存放郵件。
home_mailbox = Maildir/
#設定每封郵件最大的體積
message_size_limit = 20000000
#設定是否進行認證,選yes
smtpd_sasl_auth_enable = yes
#設定認證失敗斷開客戶端
broken_sasl_auth_clients = yes
#設定認證所在的域名
smtpd_sasl_local_domain = $myhostname
#設定認證方式,這裡很重要,因為要使用dovecot-auth,所以這裡要填dovecot
smtpd_sasl_type = dovecot
#設定認證檔案的查詢路徑,預設情況下Postfix的認證檔案會放到/var/spool/postfix/private/auth,按照如下設定即可
queue_directory = /var/spool/postfix
smtpd_sasl_path =private/auth
#設定未認證使用者不可發郵件
smtpd_sasl_security_options = noanonymous
#設定拒絕認證的黑名單,在postfix2.02之前的版本,該配置名稱叫做smtpd_recipient_restrictions
smtpd_relay_restrictions=permit_mynetworks,
 permit_sasl_authenticated,
 reject_invalid_hostname,
 reject_unauth_destination
 
#下面是設定對tls的支援,在安裝完之後ssl-cert-snakeoil.pem和ssl-cert-snakeoil.key這兩個檔案是不存在的,需要我們手動生成,稍後介紹生成方法
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database =btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database =btree:${data_directory}/smtp_scache
 

三、安裝和配置dovecot

3.1 安裝

        在終端輸入以下命令進行安裝:

sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d

3.2 配置

         找到/etc/dovecot/dovecot.conf配置檔案,我們對dovecot的所有修改基本上都在這個檔案之中進行:

#這裡配置郵件的存放目錄,這裡和Postfix設定的要一致,都是在使用者主目錄下的Maildir目錄下。
mail_location = maildir:~/Maildir
#監聽所有的埠
listen= *
#允許明文密碼驗證
disable_plaintext_auth = no
#使用ssl加密
ssl = required
#ssl祕鑰存放路徑,目前這兩個檔案也是不存在的,也需要按照後面的步驟我們手動生成
ssl_cert =< /etc/ssl/certs/dovecot.pem
ssl_key =< /etc/ssl/private/dovecot.key
#設定認證的預設選項,auth是一個socket檔案,通過該檔案dovecot和postfix進行通訊,來傳遞postfix的認證資訊,這裡面的path要和postfix設定的一致。
auth default { 
       socket listen {
         client {
           path =/var/spool/postfix/private/auth
           mode = 0660
           user = postfix
           group = postfix
         }
     }
}


        完成了上述設定,郵件服務端基本上就佈置成功了,但是現在還是不能利用foxmail等客戶端傳送郵件,因為我們還有幾個問題要修改

3.3 生成postfix的tsl祕鑰和dovecot的ssl祕鑰

        接下來我們需要利用dovecot安裝包中的指令碼上次上述兩種祕鑰。目前存放祕鑰的目錄/etc/ssl/certs/和/etc/ssl/ private/也是不存在的,所以需要我們先建立上述兩個目錄:

mkdir –p /etc/ssl/certs/
mkdir –p /etc/ssl/private /

         建立好上述的目錄之後我們將利用dovecot中的指令碼檔案,生成ssl-cert-snakeoil.pem、ssl-cert-snakeoil.key、dovecot.pem和dovecot.key這四個檔案。因為我們用apt-getinstall安裝的dovecot,所以我們先要進入/ var/cache/apt/archives/這個目錄下。我們用apt-getinstall        安裝的所有程式的安裝包都在這個目錄下,找到dovecot-core***.deb安裝包(後面版本號什麼的省略),把它拷貝到主目錄下,然後用下面的命令進行解壓:

dpkg  –X  dovecot-core***.deb  dovecot/

        解壓之後,在當前目錄找到dovecot/usr/share/dovecot/ mkcert.sh,然後執行下面的命令(一定要cd到該檔案所在目錄去執行,否則出錯):

sh mkcert.sh

        此時會在/etc/ssl/certs/目錄和/etc/ssl/private/目錄下生成ssl-cert-snakeoil.pem和ssl-cert-snakeoil.key兩個檔案,這就是我們需要的postfix的tls祕鑰,我們需要的dovecot祕鑰只需將上述兩個檔案各拷貝一份副本即可:

cp ssl-cert-snakeoil.pem  dovecot.pem
cp ssl-cert-snakeoil.key  dovecot.key

        這就完成相關祕鑰的生成。

3.4 解決doveconf -n >dovecot-new.conf  等警告資訊

        在完成上述佈置之後,如果重啟dovecot:

service dovecotrestart

        在/var/log/mail.log檔案中我們會發現很多類似“Warning:doveconf-n > dovecot-new.conf”的警告資訊,是因為doveconf要求我們生成新格式的配置檔案,此時執行下面的命令:

doveconf -n > dovecot-new.conf

        會在當前目錄下生成dovecot-new.conf檔案,然後用該檔案替換/var/dovecot/dovecot.conf檔案。接下來重啟postfix和dovecot:

service postfixrestart
service dovecotrestart

        經過了上述的步驟,已經完成了postfix和dovecot的配置,但是想要使用郵件客戶端,我們還有在域名提供商那裡進行域名相關的設定。

3.5 設定郵件伺服器的域名解析

在域名服務提供商那裡設定域名解析,我的 example.cn設定了5個域名解析:

第一個是:記錄型別A主機記錄mail,   指向伺服器的IP地址

第二個是:記錄型別MX主機記錄@指向example.cn

第三個是:記錄型別A,主機記錄 www指向伺服器的IP地址

第四個是:記錄型別CNAME主機記錄pop.example.cn.指向 mai.example.cn

第四個是:記錄型別CNAME主機記錄smtp.example.cn.指向 mai.example.cn

 參考文章:

http://blog.csdn.net/basicthinker/article/details/6167606#comments