天天看點

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

一、引言

        postfix是Wietse Venema在IBM的GPL協定之下開發的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

        經過了上述的步驟,已經完成了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

--------------------- 

作者:HymanLiuTS 

來源:CSDN 

原文:https://blog.csdn.net/hyman_c/article/details/64474151 

版權聲明:本文為部落客原創文章,轉載請附上博文連結!

繼續閱讀