centos7搭建postfix郵件服務器

 

  在使用qq等郵件服務器廠商提供的郵件服務後,發現他們的郵件發送數量是有限制的,隨着公司的業務的需求下,咱們須要搭建一個郵件服務器,郵件服務器能夠幫助咱們在一些提醒方面和消息推送方面起到幫助。html

理論性語句:linux

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

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

  簡單郵件傳輸協議(Simple Mail Transfer ProtocolSMTP:用於發送和中轉發出的電子郵件,佔用服務器的25/TCP端口。centos

  郵局協議版本3Post Office Protocol 3:用於將電子郵件存儲到本地主機,佔用服務器的110/TCP端口。bash

  Internet消息訪問協議版本4Internet Message Access Protocol 4:用於在本地主機上訪問郵件,佔用服務器的143/TCP端口。服務器

  一個最基礎的電子郵件系統確定要能提供發件服務和收件服務,爲此須要使用基於SMTP協議的Postfix服務程序提供發件服務功能,並使用基於POP3協議的Dovecot服務程序提供收件服務功能。這樣一來,用戶就可使用Outlook ExpressFoxmail等客戶端服務程序正常收發郵件了dom

實際操做:tcp

  1. 準備環境 ,開放須要的端口,並卸載sedmail,域名解析配置,修改hostname
  2. 安裝而且配置好postfix發件服務
  3. 安裝而且配置好dovect收件服務
  4. 測試,檢查發送狀況。

2. 準備環境: 

   首先咱們檢查咱們的服務器可否telnet通咱們要發送的一些郵件服務商的端口,好比qq,163,gmail等,若是不通的話須要更換服務器,由於此服務器商將這些給攔截了,post

正常的現象是:測試

 

        咱們須要開放咱們須要的端口,端口有25SMTP服務,用於發送郵件),110pop3服務,用於接收郵件)143imap服務,用於接收郵件)

 

若是你只想用pop3服務,那麼咱們只須要打開11025端口便可,若是咱們使用了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 配置:

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郵箱發送給本身便可(admin@abc.com

若是你想郵件服務器配置SSL,那麼你能夠看看centos7郵件服務器SSL配置

 注意事項:

咱們郵件服務器在設定mynetworks 這個值的時候,一行不要設置all,由於會有不少服務器會將你的服務器做爲中轉郵件服務器,最終致使的你的郵件服務器發送的郵件被qq,163,gamil,這些郵件服務商標記爲垃圾郵件。

當某天咱們檢查咱們的mail日誌(/var/log/maillog)時發現不少郵件發送,並且郵件不是咱們本身產生的話,那麼咱們的郵件服務器是出了問題的

這時咱們服務器必定有不少郵件堆積,而後本身郵件會發不出去。

咱們須要作的操做:檢查

du -sh /var/spool/postfix/*

查看目錄下的deferdeferred的目錄大小,經過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

參考文檔:

http://lomu.me/post/linux-email-server

http://lomu.me/post/SPF-DKIM-DMARC-PTR

相關文章
相關標籤/搜索