1. 程式人生 > >centos7搭建postfix郵件伺服器(騰訊雲)

centos7搭建postfix郵件伺服器(騰訊雲)

用騰訊雲的先去開啟25埠,在控制檯頁面使用者名稱下面,,,我被坑了好久,,,,

  在使用qq等郵件伺服器廠商提供的郵件服務後,發現他們的郵件傳送數量是有限制的,隨著公司的業務的需求下,我們需要搭建一個郵件伺服器,郵件伺服器可以幫助我們在一些提醒方面和訊息推送方面起到幫助。

理論性語句:

1. 郵件系統的簡單介紹:

  電子郵件系統基於郵件協議來完成電子郵件的傳輸,常見的郵件協議有下面這些。

  簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP):用於傳送和中轉發出的電子郵件,佔用伺服器的25/TCP埠。

  郵局協議版本3(Post Office Protocol 3)

:用於將電子郵件儲存到本地主機,佔用伺服器的110/TCP埠。

  Internet訊息訪問協議版本4(Internet Message Access Protocol 4):用於在本地主機上訪問郵件,佔用伺服器的143/TCP埠。

  一個最基礎的電子郵件系統肯定要能提供發件服務和收件服務,為此需要使用基於SMTP協議的Postfix服務程式提供發件服務功能,並使用基於POP3協議的Dovecot服務程式提供收件服務功能。這樣一來,使用者就可以使用Outlook Express或Foxmail等客戶端服務程式正常收發郵件了。

實際操作:

  1. 準備環境 ,開放需要的埠,並解除安裝sedmail,域名解析配置,修改hostname
  2. 安裝並且配置好postfix發件服務
  3. 安裝並且配置好dovect收件服務
  4. 測試,檢查傳送情況。

2. 準備環境: 

   首先我們檢查我們的伺服器能否telnet通我們要傳送的一些郵件服務商的埠,比如qq,163,gmail等,如果不通的話需要更換伺服器,因為此伺服器商將這些給攔截了,

正常的現象是:

 

        我們需要開放我們需要的埠,埠有25(SMTP服務,用於傳送郵件),110(pop3服務,用於接收郵件)143(imap服務,用於接收郵件)

 

如果你只想用pop3服務,那麼我們只需要開啟110和25埠即可,如果我們使用了ssl的話,

pop3就需要開放我們的465(發件) 995(收件)埠

imap就需要開放我們的465(發件) 993(收件)埠

  2.1 開放埠: 

firewall-cmd --add-port=25/tcp --permanent

firewall-cmd –add-port=110/tcp --permanent

firewall-cmd --reload

  2.2 移除sendmail

rpm -e sendmail 或者 yum remove sendmail

  2.3 域名解析配置

我們需要新增A記錄和mx記錄。首先新增A記錄解析到我們的伺服器ip。

   2.4 mx 記錄

 

 在需要填入值的地方填入我圖片中的對應字元。

  2.5 修改hostname

hostnamectl  set-hostname   mail.域名

  2.6 修改MTA(預設郵件傳輸代理)

alternatives --config mta 

然後直接回車即可。

檢查一下是不是已經設定成功了。

alternatives --display mta

第一行可以看到mta的狀態。 例如:mat - status is manual.就是ok了。

 

3. POSTFIX

postfix是提供發件服務的(注意:修改配置檔案需備份,以下步驟未包含備份。)

postfix服務程式主配置檔案中的重要引數。

引數

作用

myhostname

郵局系統的主機名

mydomain

郵局系統的域名

myorigin

從本機發出郵件的域名名稱

inet_interfaces

監聽的網絡卡介面

mydestination

可接收郵件的主機名或域名

mynetworks

設定可轉發哪些主機的郵件

relay_domains

設定可轉發哪些網域的郵件

  3.1 安裝 postfix 

在centos7裡我們的postfix是系統自帶的,但是centos7以前的版本是預設不帶的,centos7版本以前是sendmail

如果沒有則安裝 :

yum install postfix

  3.2 配置

1

vim /etc/postfix/main.cf

 修改內容:

# 75行: 取消註釋,設定hostname 
myhostname = mail.abc.com 
# 83行: 取消註釋,設定域名 
mydomain = abc.com 
# 99行: 取消註釋 
myorigin = $mydomain 
# 116行: 預設是localhost,我們需要修改成all
inet_interfaces = all 
# 119行: 推薦ipv4,如果支援ipv6,則可以為all 
inet_protocols = ipv4 
# 164行: 新增 
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 
# 264行: 取消註釋,指定內網和本地的IP地址範圍 
mynetworks = 127.0.0.0/8
# 419行: 取消註釋,郵件儲存目錄
 home_mailbox = Maildir/ 
# 571行: 新增 
smtpd_banner = $myhostname ESMTP 
# 新增到最後 
# 規定郵件最大尺寸為10M 
message_size_limit = 10485760 
# 規定收件箱最大容量為1G 
mailbox_size_limit = 1073741824 
# SMTP認證 
smtpd_sasl_type = dovecot 
smtpd_sasl_path = private/auth 
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous 
smtpd_sasl_local_domain = $myhostname 
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject 

以上對應的對應的行數位置可能隨著版本不同會有差異。具體的一些引數含義在本小節前面有解釋

  3.3 開啟postfix服務並新增到系統自啟。

systemctl  restart  postfix
systemctl  enable  postfix

4. 安裝並配置dovecot  

       4.1 安裝dovecot

yum install dovecot 

  4.2 配置dovect

編輯檔案dovecot.conf

vim /etc/dovecot/dovecot.conf 

更改內容:

# 26行: 如果不使用IPv6,請修改為* 
listen = *
#在主配置檔案中的第48行,設定允許登入的網段地址,也就是說我們可以在這裡限制只有來自於某個網段的使用者才能使用電子郵件系統。如果想允許所有人都能使用,則不用修改本引數
login_trusted_networks = 192.168.10.0/24更改內容

編輯檔案10-auth.conf

vim /etc/dovecot/conf.d/10-auth.conf 

更改內容:

# 9行: 取消註釋並修改 disable_plaintext_auth = no 
# 97行: 新增 auth_mechanisms = plain login 

編輯檔案10-mail.conf

vim /etc/dovecot/conf.d/10-mail.conf

更改內容:

# 30行: 取消註釋並新增 mail_location = maildir:~/Maildir

編輯檔案10-master.conf

vim /etc/dovecot/conf.d/10-master.conf

更改內容:

# 88-90行: 取消註釋並新增 # Postfix smtp驗證 
unix_listener /var/spool/postfix/private/auth { 
mode = 0666 
user = postfix
group = postfix
}

注意:如果我們沒有使用ssl的話需要進行下面的操作。使用了則不需要。

編輯檔案10-ssl.conf

vim /etc/dovecot/conf.d/10-ssl.conf 

更改內容

# 8行: 將ssl的值修改為 ssl = no

啟動dovecot並新增到開機自啟。

systemctl restart dovecot
systemctl enable dovecot

5. 收發郵件測試  

   5.1 建立使用者

  郵件的使用者是和系統使用者一致的,也就是說系統使用者可以當做郵件使用者。

建立使用者並設定密碼

useradd admin
passwd admin

   5.2 使用foxmail進行登陸

 

1中我們需要選擇我們之前開放埠對應的伺服器型別。

2中 我們只需要填入我們的使用者名稱,例如admin,root

3中 我們收件和發件都填入我們的mail.域名。例 mail.abc.com

4 中 我們如果使用了ssl的話就需要勾選,如果沒有使用的話就不需要勾選

填入相應資訊後我們即可登陸了。然後我們可以進行收發郵件了,我們可以測試給自己的qq發一封郵件.

如果我們檢視日誌發現 status=bounced ,那麼就意味著qq的郵件伺服器將我們這個伺服器IP設為惡意IP,不接收這個IP傳送的郵件。也就意味著如果我們要發郵件到qq郵箱的話,就需要更換伺服器ip。

如果狀態是上面的話,就意味著可以正常傳送,還要注意一點的就是我們郵件伺服器的郵件很多時候會被放在垃圾箱裡,所以當你傳送了郵件你在收件箱沒看到,你可以去垃圾箱裡面看看有沒有。接收方面一般沒有什麼問題,用qq郵箱傳送給自己即可([email protected]

如果你想郵件伺服器配置SSL,那麼你可以看看centos7郵件伺服器SSL配置

 注意事項:

我們郵件伺服器在設定mynetworks 這個值的時候,一行不要設定all,因為會有很多伺服器會將你的伺服器作為中轉郵件伺服器,最終導致的你的郵件伺服器傳送的郵件被qq,163,gamil,這些郵件服務商標記為垃圾郵件。

當某天我們檢查我們的mail日誌(/var/log/maillog)時發現很多郵件傳送,而且郵件不是我們自己產生的話,那麼我們的郵件伺服器是出了問題的

這時我們伺服器一定有很多郵件堆積,然後自己郵件會發不出去。

我們需要做的操作:檢查

du -sh /var/spool/postfix/*

檢視目錄下的defer和deferred的目錄大小,通過postqueue –p來檢視佇列的郵件,通過postsuper -d ALL 刪除所有的佇列郵件。

附錄:

遮蔽刷postfix的 IP指令碼

#!/bin/bash

LOGFILE="/var/log/maillog"

#統計maillog中authentication failure的IP個數與IP
grep "authentication failure" $LOGFILE|awk '{print $7}'|grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"|sort|uniq -c > af_iplist.txt

#取出AF出現大於300次時的IP
awk '$1>300 {print $2}' af_iplist.txt > block_ip_list.txt

#大於300次AF的IP新增到iptables中
cat block_ip_list.txt|while read line
do
/sbin/iptables -nL | grep $line
if [ $? != 0 ]
then
    iptables -I INPUT -s $line -j DROP
fi
done

原文:https://blog.csdn.net/pxg943055021/article/details/82624848