1. 程式人生 > >搭建Postfix-Devocot郵件伺服器詳細步驟

搭建Postfix-Devocot郵件伺服器詳細步驟

環境準備:CentOS6.5伺服器,安裝了MySQL5.6.23

指令碼準備:系統報警shell指令碼

1.克隆之前安裝好的CentOS系統,注意需要修改網絡卡配置資訊

注意點:(1)修改網絡卡的引數HWaddr為ifconfig -a 出現的一樣(原HWaddr是之前克隆的,沒有更新為新的)

(2) 執行命令

 rm -rf /etc/udev/rules.d/70-persistent-net.rules

(3)修改網路DNS,在重啟機器,就可以正常上網

2.檢視主機是否安裝有sendmail服務,若有需要解除安裝

yum list installed | grep sendmail
rpm -qa | grep sendmail
rpm -e sendmail-8.14.4-9.el6_8.1.x86_64

 

3.安裝postfix,並配置

yum list | grep postfix
yum -y install postfix.x86_64

配置檔案

vi /etc/postfix/main.cf

需要修改以下地方

*myhostname*  //主機名
myhostname = mail.dingguanyi.com

*mydomain*   //使用郵件域
mydomain = dingguanyi.com   //mydomain 設定本地網路的郵件域

*myorigin*  //外發郵件時發件人的郵件域名
myorigin = $mydomain  //在通過Postfix傳送郵件的時候,如果From欄位不完整,Postfix會根據myorigin的值將地址補全為*@mail.100p.com,此處可以填$mydomain 或者 $myhostname
    
*埠*  //埠掃描監控全部的埠
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
       
*mydestination*  //可接受郵件地址域名
mydestination = $myhostname,$mydomain   //mydestination指定了postfix在收到這些域名地址為目標的郵件時,作為接受方收下郵件。如果收到的郵件既不符合轉發規則,又不符合接受規則,則拒絕收信。

*mynetworks*  //需要收發的客戶端的地址
mynetworks = 0.0.0.0   //mynetworks指定了本地網路的IP段,預設只包含主機自己,你可以新增需要收發的客戶端的地址。

啟動服務,檢視埠

service postfix start
netstat -lnp | grep :25

4.安裝dovecot,並配置

檢視已經安裝dovecot

需要配置三個檔案如下

vi /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
mail_location = mbox:/var/mail:INBOX=/var/mail/%u   ---新增在配置檔案最後
vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
vi /etc/dovecot/conf.d/10-ssl.conf
ssl = no

啟動服務,檢視埠

service dovecot restart
netstat -lnp | grep :110

5.新增兩個使用者,測試postfix和dovecot的安裝配置情況,由於需要訪問到mail許可權組的檔案,所建使用者需要分配mail組

useradd -g mail user1
useradd -g mail user1
passwd user1
passwd user2

cmd視窗測試postfix和dovecot登入情況

telnet 192.168.119.138 25
telnet 192.168.119.138 110

6.在電腦安裝postfix客戶端,並配置賬號,在客戶端測試兩個賬戶互發郵件

至此郵件服務已經搭建好了。

7.安裝nc服務,安裝httpd服務。

yum -y install nc.x86_64

8.將報警指令碼放置在使用者目錄下,並執行指令碼測試報警郵件是否正常傳送

#!/bin/bash
#warn.sh
#伺服器執行狀態預警指令碼


#------------------web-----------------------
nc -w 3 localhost 80 &>/dev/null

if [ $? -eq 0 ];then
	str="apache web status Running!!!"
else
	str="apache web status Shuting!!!"
fi

echo $str > temp.del


#------------------mysql-----------------------
nc -w 3 localhost 3306 &>/dev/null

if [ $? -eq 0 ]; then
	str="mysql status Running!!!"
else
	str="mysql status Shuting!!!"
fi

echo $str >> temp.del


#------------------disk-----------------------
ds=`df|awk '{if(NR==2){print int($5)}}'`

if [ $ds -lt 45 ]; then
	str="disk space is $ds%, less than 45%!!!"
else
	str="disk space is $ds%, greater than 45%!!!!"
fi

echo $str >> temp.del


#------------------disk-----------------------
use=`free -m|awk '{if(NR==2){print int($3*100/$2)}}'`

if [ $use -lt 50 ]; then
	str="men space is $use%, less than 50%!!!"
else
	str="men space is $use%, greater than 50%!!!"
fi

echo $str >> temp.del


cat temp.del|mail -s 'linux service status' [email protected]

rm -rf temp.del

9.使用root使用者,給報警指令碼設定定時任務,可以看到關於伺服器的預警資訊實時傳送給使用者郵箱了。

crontab -e
crontab -l
service crond start
service crond status