Centos Linux 7 搭建郵件伺服器(postfix + dovecot)

007少侠發表於2024-08-08

準備工作

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 使用者名稱

二、使用Foxmail收發郵件

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

相關文章