一、引言
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
版權聲明:本文為部落客原創文章,轉載請附上博文連結!