準備工作
1. 一臺公網伺服器(需要不被服務商限制發件收件的,也就是埠25、110、143、465、587、993、995不被限制),如有防火牆或安全組需要把這些埠開放
2. 一個域名,最好是com cn org的一級域名
3. 域名備案(如果伺服器是國外的則不需要備案)
一、配置域名解析
1. 登入阿里雲,找到雲解析DNS
選擇域名,如abc.com
①. 新增MX記錄
- 記錄型別:MX
- 主機記錄:@
- 記錄值:mail.abc.com
- MX優先順序:1
②新增A記錄
- 記錄型別:A
- 主機記錄:mail
- 記錄值:伺服器IP
- TTL:10分鐘
③新增SPF記錄
- 記錄型別:TXT
- 主機記錄:@
- 記錄值:v=spf1 mx:mail.abc.com ip4:伺服器IP -all
- TTL:10分鐘
最後完成如下圖
2. 安裝Postfix、Dovecot
yum update -y yum -y install postfix dovecot cyrus-sasl
2. 建立自簽名證書
(1). 建立證書
[root@mail ~]# cd # 生成私鑰 [root@mail ~]# openssl genrsa -des3 -out server.key 2048 Enter pass phrase: #輸入密碼 Verifying - Enter pass phrase: #重複輸入密碼 #下面這個步驟是刪除server.key中的密碼 [root@mail ~]# openssl rsa -in server.key -out server.key.insecure Enter pass phrase for server.key: #輸入剛才設定的密碼 writing RSA key #重新命名證書 [root@mail ~]# mv server.key server.key.secure [root@mail ~]# mv server.key.insecure server.key # 生成CSR(證書籤名請求) [root@mail ~]# openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: #輸入剛才設定的密碼 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN #國家簡稱 State or Province Name (full name) []:Beijing #省 Locality Name (eg, city) [Default City]:Beijing #城市 Organization Name (eg, company) [Default Company Ltd]:OPS #公司名 Organizational Unit Name (eg, section) []:OPS #部門名 Common Name (eg, your name or your server's hostname) []:mail.abc.com Email Address []:admin@abc.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #直接按Enter An optional company name []: #直接按Enter #生成自簽名證書 [root@mail ~]# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt Enter pass phrase for server.key: #直接按Enter Certificate request self-signature ok subject=C = CN, ST = Beijing, L = Beijing, O = OPS, OU = OPS, CN = mail.abc.com, emailAddress = admin@abc.com Getting Private key #設定許可權 [root@mail ~]# chmod 400 server.*
(2). 建立完成把證書複製到系統證書目錄
# 建立目錄 mkdir -p /etc/ssl/private/ # 複製 sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
3. 配置Postfix
(1). 修改主配置
vim /etc/postfix/main.cf # 修改以下項,註釋的解開,不要有重複項 # 設定為 mail.域名 myhostname = mail.abc.com # 設定為 域名 mydomain = abc.com # 往外發郵件的郵件域 myorigin = $mydomain #監聽的網路卡 inet_interfaces = all inet_protocols = ipv4 #服務的物件 mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost #郵件存放的目錄 home_mailbox = Maildir/ # 新新增以下配置 #--------自定義(下面可以複製貼上到檔案最後面,用於設定伺服器驗為主,第一行設定傳送附件大小) #message_size_limit = 100000 smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous,noplaintext mynetworks = 127.0.0.0/8 smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_local_domain = $myhostname smtpd_sasl_tls_security_options = noanonymous broken_sasl_auth_clients = yes relayhost = smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination smtpd_use_tls = yes smtpd_tls_cert_file = /etc/ssl/certs/server.crt smtpd_tls_key_file = /etc/ssl/private/server.key smtpd_tls_security_level = may smtp_tls_note_starttls_offer = yes smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_auth_only = yes
(2). 配置開啟smtps
vim /etc/postfix/master.cf # 分別把下列配置前面的#去掉 smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
(3). 最後檢查Postfix配置是否正確
postfix check
4. 配置Dovecot
(1). 修改主配置檔案
vim /etc/dovecot/dovecot.conf # 註釋的解開註釋,不要有重複項 protocols = imap pop3 lmtp listen = *, :: # 以下內容新增到檔案最後 mail_location = maildir:~/Maildir
(2). 設定郵箱目錄
vim /etc/dovecot/conf.d/10-mail.conf # 設定mail_location為 mail_location = maildir:~/Maildir
(3). 配置SSL證書
vim /etc/dovecot/conf.d/10-ssl.conf ==================== ssl_cert = </etc/dovecot/private/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.key 改成 ssl_cert = </etc/ssl/certs/server.crt ssl_key = </etc/ssl/private/server.key ====================
(4). 配置sasl認證以及SSL埠
vim /etc/dovecot/conf.d/10-master.conf ==================== # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } ==================== inet_listener imap { #port = 143 } 改成 inet_listener imap { #port = 143 port = 0 } ==================== service pop3-login { inet_listener pop3 { #port = 110 } } 改成 service pop3-login { inet_listener pop3 { #port = 110 port = 0 } } ====================
(5). 配置認證
vim /etc/dovecot/conf.d/10-auth.conf auth_mechanisms = plain 改成 auth_mechanisms = plain login
(6). 配置dovecot服務消除master.pid報錯
vim /usr/lib/systemd/system/dovecot.service # Type=forking後新增 ExecStartPost=/bin/sh -c 'chown root:dovecot /var/run/dovecot/master.pid' # 載入系統服務 systemctl daemon-reload
5. 安裝系統日誌服務
sudo yum install -y rsyslog # 設定開機自啟動 sudo systemctl enable rsyslog # 啟動 sudo systemctl start rsyslog #後續檢視郵件服務日誌方式(需要重啟postfix和dovecot) tail -f /var/log/maillog
6. 啟動郵箱服務並新增郵箱使用者
(1). 啟動並設定開機自啟
#啟動 sudo systemctl start postfix sudo systemctl start dovecot #設定開機自啟動 sudo systemctl enable postfix sudo systemctl enable dovecot
後續需要重啟命令為
sudo systemctl restart postfix
sudo systemctl restart dovecot
檢視執行狀態命令為
sudo systemctl status postfix
sudo systemctl status dovecot
(2). 檢視服務埠啟動是否完整
netstat -lntp
如圖25 465 993 995埠正常啟動
7. 安裝mailx(用於測試發郵件)
sudo yum install -y mailx #======測試發件====== echo '搭建郵件伺服器成功啦!!!' | mail -s '通知!' xxx@qq.com
8. 建立郵箱賬號
(1). 建立賬號
useradd -m 使用者名稱 passwd 使用者名稱 # 輸入密碼 # 確認密碼
(2). 驗證賬號
sudo doveadm auth test 使用者名稱
1. windows10版本的Foxmail 新建賬號完成後閃退,所以先設定下
首先找到Foxmail快捷方式,右鍵屬性。
找到相容性,並且在下方找到“以管理員身份執行此程式”,勾選,確定
2. 登入賬號
開啟Foxmail,新建賬號 => 其它郵箱 => 手動設定 => POP3
郵件賬號:賬號@abc.com
密碼:xxxxxx
POP伺服器:mail.abc.com SSL 995(勾選)
SMTP伺服器:mail.abc.com SSL 465(勾選)
注:雖然發件服務(SMTP)啟用了SSL走的埠是465,但是實測25埠還得開放,不然無法接收外部郵件
ubuntu系統參考:https://www.cnblogs.com/007sx/p/18347813