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